Бутлоадер STM32F072
Mar. 11th, 2020 02:55 pmПолучил намедни платки очередной управлялки ШД. Сдуру не завел BOOT0 на какую-нибудь ногу (+кондер) — понадеялся на возможность программного вызова USB-DFU. А вот фигвам! Вот такой код:
при разных модификациях не работает! Несмотря на уйму ссылок в интернетах, где люди пишут, что у них все ОК.
Эх, так надеялся отладкой заниматься без всяких лишних приблуд. А придется, похоже, подпаивать разъемчик и втыкать st-link (который, кстати, почему-то несмотря на опцию --reset, после прошивки МК не сбрасывает).
Кстати, с утра бесполезно время убивал по другой причине: казалось бы один и тот же Makefile (но с немного разным порядком опций) давал совершенно иной результат, и прошивка не работала! А стоило опции поменять местами, как все пошло-поехало. Ну я просто вообще не понимаю…
( UPD )
void Jump2Boot(){
void (*SysMemBootJump)(void);
volatile uint32_t addr = 0x1FFFC800;
// sysreset();
// Enable the SYSCFG peripheral.
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
// reset systick
SysTick->CTRL = 0;
// disable all interrupts
// __disable_irq();
// __DSB();__ISB();
// remap memory to 0 (only for STM32F0)
SYSCFG->CFGR1 = 0x01;
__DSB();__ISB();
SysMemBootJump = (void (*)(void)) (*((uint32_t *)(addr + 4)));
// set main stack pointer
__set_MSP(*((uint32_t *)addr));
SysMemBootJump();
}
при разных модификациях не работает! Несмотря на уйму ссылок в интернетах, где люди пишут, что у них все ОК.
Эх, так надеялся отладкой заниматься без всяких лишних приблуд. А придется, похоже, подпаивать разъемчик и втыкать st-link (который, кстати, почему-то несмотря на опцию --reset, после прошивки МК не сбрасывает).
Кстати, с утра бесполезно время убивал по другой причине: казалось бы один и тот же Makefile (но с немного разным порядком опций) давал совершенно иной результат, и прошивка не работала! А стоило опции поменять местами, как все пошло-поехало. Ну я просто вообще не понимаю…
( UPD )