Здравствуйте.
Есть чип stm32f103c8t6.
Сделал бутлодер с эмуляцией жесткого диска. В этом режиме он работает отлично. Прошивку заливаю через Win32DiskImager.
Бинарник из прошивки получаю по команде
Код:
|
arm-none-eabi-objcopy -O binary xxx.elf xxx.bin |
Вот код перехода к основной программе.
Код:
|
//FLASH_DISK_START_ADDRESS = 0x08007000 /* Flash start address */
// 0x7000 bytes for bootloader
void GoToUserApp(void) {
uint32_t appJumpAddress;
void (*GoToApp)(void);
appJumpAddress = *((volatile uint32_t*) (FLASH_DISK_START_ADDRESS + 4));
GoToApp = (void (*)(void)) appJumpAddress;
SCB-›VTOR = FLASH_DISK_START_ADDRESS;
__set_MSP(*((volatile uint32_t*) FLASH_DISK_START_ADDRESS)); //stack pointer (to RAM) for USER app in this address
GoToApp();
} |
В основной программе изменил:
Код:
|
#define VECT_TAB_OFFSET 0x00007000U |
Запись проходит успешно. CubeProgrammer подтверждает присутствие данных с адреса 0х08007000
но программа ни в какую не стартует. Ни лампочками не мигает ни в системе не определяется.
Использую HAL и SW4STM32.
Подскажите пожалуйста может я забыл где то адрес еще прописать??