Я создал проект через STM32Cube, который мигает светодиодом на моей плате. Я смог убедиться, что код работает со сценарием компоновщика, предоставленным ST. Сейчас я только заменяю компоновщик-скрипт, больше ничего не меняя в проекте и светодиод не моргает, хотя ни предупреждений, ни ошибок не получаю. Моя идея заключалась в том, чтобы сравнить оба файла .elf с помощью readelf -a, но я быстро понял, что у меня пока нет возможности оценить различия и, следовательно, понять, что я сделал не так. Я не хочу просто заглядывать в сценарий компоновщика, предоставленный ST, так как надеюсь, что знания будут лучше за счет оценки различий в результатах связывания. Помимо readelf, есть ли методы, которые вы могли бы порекомендовать, чтобы вывести исправления, которые мне нужно применить к моему файлу компоновщика, на основе различий в .elf?
Мой текущий код компоновщика все еще находится в зачаточном состоянии. и выглядит следующим образом:
Код: Выделить всё
ENTRY(reset_handler)
MEMORY
{
FLASH (RX) : ORIGIN = 0x08000000, LENGTH = 32k,
SRAM (RWX) : ORIGIN = 0x20000000, LENGTH = 10k
}
SECTIONS
{
. = ORIGIN(FLASH);
.init_vec :
{
KEEP(*(.init_vec))
. = ALIGN(4);
} >FLASH
.text :
{
*(.text)
. = ALIGN(4);
} >FLASH
.rodata :
{
*(.rodata)
. = ALIGN(4);
} >FLASH
.data :
{
*(.data)
. = ALIGN(4);
} >FLASH
.bss :
{
__bss_start__ = .;
*(.bss)
. = ALIGN(4);
__bss_end__ = .;
} >SRAM
}
Код: Выделить всё
arm-none-eabi-gcc -Wall -g3 -O0 -mcpu=cortex-m3 -mfloat-abi=soft -mthumb --specs=nosys.specs -fstack-usage -T link_custom.ld -I Core/Inc -I Drivers/STM32F1xx_HAL_Driver/Inc -I Drivers/CMSIS/Device/ST/STM32F1xx/Include -I Drivers/CMSIS/Include -I Drivers/CMSIS/Device/Include startup_custom.c interrupt_handlers.c Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c Core/Src/system_stm32f1xx.c Core/Src/main.c -o blinky_custom_link.elf
Подробнее здесь: https://stackoverflow.com/questions/786 ... stm32-code