Практика оценки различных результатов компоновщикаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Практика оценки различных результатов компоновщика

Сообщение Anonymous »

Я хочу узнать о программировании STM32 без готового стартового кода и ссылок, чтобы улучшить мое понимание этих важных шагов и не зависеть от автоматической генерации кода ST. Я использую цепочку инструментов — Arm-none-eabi-gcc. В настоящее время у меня возникли проблемы с созданием собственного компоновщика.
Я создал проект через STM32Cube, который мигает светодиодом на моей плате. Я смог убедиться, что код работает со сценарием компоновщика, предоставленным ST. Сейчас я только заменяю скрипт компоновщика, больше ничего не меняя в коде. После привязки и прошивки .elf светодиод больше не моргает, хотя ни предупреждений, ни ошибок не получаю. Моя идея заключалась в том, чтобы сравнить рабочий файл .elf с моим нерабочим файлом .elf. Я использовал Arm-none-eabi-objdump и readelf -a, но быстро понял, что у меня пока нет возможности оценить различия и, следовательно, понять, что я сделал не так. Каковы хорошие способы/практики сравнения файлов .elf? Стоит ли мне взглянуть на разделы, на функции, на bss-данные... Наверное, я сейчас немного перегружен.
Если необходимо: Вот как я называю руку -none-eabi-gcc:
arm-none-eabi-gcc -Wall -g3 -O0 -Wl,-Map=debug_link_custom.map -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

А это мой компоновщик:
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
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... er-outputs
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»