Цитата(Сергей Борщ @ Apr 28 2016, 12:17)

Вы уехали за границу доступной памяти. Осетра-то урежте

, в смысле LENGTH укоротите на размер загрузчика. И в загрузчике аналогично, чтобы получить ошибку если он вдруг налезет на приложение.
Зависит от того, что и как вы наворотили в загрузчике. У меня линкер сразу после векторов добавляет размер прошивки в словах (чтобы загрузчик знал, до куда считать CRC), а также резервируется место под CRC.
спасибо. укоротил. вроде бежит главная программа но как то странно. запускаю через дебагер – пишет no source file named main.c. и через 30 секунд - это у меня таймаут в бутлоудере - бежит главная программа.
добавил в Startup Script
Код
# Reconfigure vector table offset register to match the application location
set *0xe000ed08 = 0x1000
# Get the application stack pointer (First entry in the application vector table)
set $sp = *(unsigned int*)0x1000
# Get the application entry point (Second entry in the application vector table)
set $pc = *(unsigned int*)0x1004
ничего не изменилось.
кстати а как линкер знает размер прошивки? Вы его изменяете после каждой копиляции?
вроде решил проблему. вот полный код скрипта.
Код
# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers
# Uncomment next line, 2=32 bit, 1=16 bit and 0=8 bit parallelism mode
#monitor flash set_parallelism_mode 2
# Set character encoding
set host-charset CP1252
set target-charset CP1252
# Reset to known state
monitor reset
# Load the program executable
load
# Reconfigure vector table offset register to match the application location
set *0xe000ed08 = 0x1000
# Get the application stack pointer (First entry in the application vector table)
set $sp = *(unsigned int*)0x1000
# Get the application entry point (Second entry in the application vector table)
set $pc = *(unsigned int*)0x1004
# Reset the chip to get to a known state. Remove "monitor reset" command
# if the code is not located at default address and does not run by reset.
#monitor reset
# Enable Debug connection in low power modes (DBGMCU->CR)
set *0xE0042004 = (*0xE0042004) | 0x7
# Set a breakpoint at main().
tbreak main
# Run to the breakpoint.
continue
Сообщение отредактировал Jenya7 - Apr 28 2016, 08:11