Практика оценки различных выходных данных компоновщика кода STM32 [закрыто]C++

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

Сообщение Anonymous »

Я хочу узнать о программировании STM32 без готового стартового кода и ссылок, чтобы улучшить мое понимание этих важных шагов и не зависеть от автоматической генерации кода ST. Я использую цепочку инструментов — Arm-none-eabi-gcc. В настоящее время у меня возникли проблемы с созданием собственного компоновщика.
Я создал проект через 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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