Все выше описанное я делал на чипе STM32F107VCT6 с пакетом обновлений FW_F1 V1.8.5 в CubeIDE 1.16.0, CubeMX 6.12.0 и программа не запускалась.
Я решил попробовать создать загрузчик и программу для другого чипа: STM32F417VGTx, и к моему удивлению все заработало! Загрузчик запускался и передавал управление программе прошитой со смещением.
Также проверил это и для чипа STM32F103C8Tx - тоже все работает как надо.
Сравнил файлы *.ld разных чипов. Ничего не обычного не нашел, что могло бы помешать запуску программы со смещением.
Единственное что я еще не сделал, так не пробовал понизить версию пакета обновлений. Возможно в этом есть смысл.
в system_stm32f1xx.c тоже указал #define USER_VECT_TAB_ADDRESS и смещение VECT_TAB_OFFSET 0x8000
вначале main() тоже указал SCB->VTOR = START_ADDR;
Скомпилировал, прошил с адреса 0x08008000.
Но после работы загрузчика переход происходит, но программа не запускается.
Создавал проект загрузчика и тестовой программы в CubeIDE 1.16.
Самое главное что, раньше в uKeil и даже в System Workbench for STM32 все это работало на ура. А вот в CubeIDE не могу понять что не так.
Кстати, если в качестве тестовой программы залить прошивку скомпилированную с проекта System Workbench for STM32 то она запускается. т.е. получается, что где-то в настройках CubeIDE нужно еще что-то сделать, чтобы запуск программы удался.
Хотел бы дополнить свой комментарий.
Все выше описанное я делал на чипе STM32F107VCT6 с пакетом обновлений FW_F1 V1.8.5 в CubeIDE 1.16.0, CubeMX 6.12.0 и программа не запускалась.
Я решил попробовать создать загрузчик и программу для другого чипа: STM32F417VGTx, и к моему удивлению все заработало! Загрузчик запускался и передавал управление программе прошитой со смещением.
Также проверил это и для чипа STM32F103C8Tx - тоже все работает как надо.
Сравнил файлы *.ld разных чипов. Ничего не обычного не нашел, что могло бы помешать запуску программы со смещением.
Единственное что я еще не сделал, так не пробовал понизить версию пакета обновлений. Возможно в этом есть смысл.
Как сделаю, отпишусь...
Всем привет!
А что делать если загрузчик не может запустить прошитую программу?
Имеется ввиду прошивку настроил как надо:
в *.ld указал смещение адреса ORIGIN = 0x08008000, LENGTH = 224K
в system_stm32f1xx.c тоже указал #define USER_VECT_TAB_ADDRESS и смещение VECT_TAB_OFFSET 0x8000
вначале main() тоже указал
SCB->VTOR = START_ADDR;
Скомпилировал, прошил с адреса 0x08008000.
Но после работы загрузчика переход происходит, но программа не запускается.
Создавал проект загрузчика и тестовой программы в CubeIDE 1.16.
Самое главное что, раньше в uKeil и даже в System Workbench for STM32 все это работало на ура. А вот в CubeIDE не могу понять что не так.
Кстати, если в качестве тестовой программы залить прошивку скомпилированную с проекта System Workbench for STM32 то она запускается. т.е. получается, что где-то в настройках CubeIDE нужно еще что-то сделать, чтобы запуск программы удался.
Кто нибудь уже сталкивался с такой проблемой?