【发布时间】:2018-07-01 03:58:54
【问题描述】:
您好,我的加载有问题 mc stm32f205rg 的固件。我用函数 boot_softs 进入引导加载程序,即 位于系统内存中。
void boot_softs() {
volatile uint32_t addr = 0x1FFF0000;
void (*SysMemBootJump)(void);
SysMemBootJump = (void (*)(void)) (*((uint32_t *)(addr + 4)));
HAL_RCC_DeInit();
SysTick->CTRL = 0;
SysTick->LOAD = 0;
SysTick->VAL = 0;
_disable_irq();
SYSCFG->MEMRMP = 0x01;
__set_MSP(*(__IO uint32_t*)0x20001000);
SysMemBootJump();
}
但是在 Flash loader 的帮助下进行检查 演示程序我发现 mc 没有 进入固件重载状态。
我在 stm32f207 上重新检查了相同的功能,没有 使用程序地址更改和 stm32f103c8 开始改变了。在这两种情况下一切正常 正确并且 mc 重新加载。
也许有人遇到过这样的问题,可以帮助我 有了这个问题。提前致谢。
【问题讨论】:
-
你能澄清你在问什么,你是说你的
SysMemBootJump没有去正确的地方吗?或者那个函数没有被调用?您要分支到的那个地址在 RAM 中,您是否将需要调用的代码放在那里。