|
main_ubi_sdk v 0.1.3
This is UBI4 documentation
|
Правильно настроенный загрузчик просто ставится в проект.
Для того, чтобы основное приложение корректно загружалось в бутлоадер, нужно сделать следующие вещи. (На примере STM)
__enable_irq(); В первую строчку void main(). Потому что загрузчик выключает прерывания перед переходом в основную программу.#define USER_VECT_TAB_ADDRESS . Его нужно раскоментировать.#define VECT_TAB_OFFSET 0x00000000U на значение сдвига Main_programm. Правильно будет без 0x08..., но если с ним, то тоже работать будет. В нашем примере это 0x0000A000UFLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K и изменяем ее на FLASH (rx) : ORIGIN = 0x800A000, LENGTH = 86K (из общей длины надо вычесть размер сдвига и размер памяти data_table) После этого прошивка готова Для того, чтобы отлаживать два проекта одновременно нужно выполнить следующие шаги. При отладке запускается один проект как "основной", а второй "второстепенный" подключается к нему.
add-symbol-file ../UBI4_BMS_Bootloader/Debug/UBI4_BMS_Bootloader.elf 0x8000140 где путь относительный от корня проекта (ioc файла) к .elf файлу подключаемого проекта. А число 0x800... это адрес .text подключаемого проекта. Его можно найти в Build analizer -> Memory details. Это НЕ начало программы, а начало .text. Разные вещи. bl main в bl boot_main. Теперь возвращаемся в Debug configuration -> Startup -> Run command и добавляем сточку b boot_main