Добавил в проект загрузчика функции записи и стирания флеши, но залитая через X-modem прошивка не хочет запускаться.
Функции работы с флеш-памятью сделал по образу и подобию функций из проекта DFU-загрузчика R Max. Единственное, что выделил отдельный таймер на формирование задержек.
Для загрузки использую BIN-файл, сгенерированный командой
Код:
SET PATH=C:\Keil\ARM\BIN40\
fromelf.exe ".\LED.axf" --bin --output ".\LED.bin"
Код вызова функций записи во флеш:
Код:
temp=(frame[t]<<24) | (frame[t+1]<<16) | (frame[t+2]<<8) | (frame[t+3]);
irqs=NVIC->ISER[0];
NVIC->ICER[0]=0xFFFFFFFF;
EEPROM_ErasePage((MainVectorTableAddr+addr_shift), 0);
EEPROM_Write((MainVectorTableAddr+addr_shift), temp, 0);
NVIC->ISER[0]=irqs;
t=t+4;
addr_shift=addr_shift+0x10;
менял строчку формирования temp на
Код:
temp=(frame[t+3]<<24) | (frame[t+2]<<16) | (frame[t+2]<<8) | (frame[t]);
результат такой же
В свойствах файла с функциями работы с флеш (flash.c) отмечено, чтоб запускался из оперативной памяти. Я так понимаю, что для заголовочного файла это не нужно.
Проект и BIN-файл во вложении
Loader2.rar - проект загрузчика
LED.rar - BIN файл загружаемой программы