我想为我的stm3214 mcu编写一个引导加载程序(按下按钮后)跳转到flash的另一部分并运行该部分的应用程序。对于应用程序部分,我编写了一个简单的blinky并生成其BIN文件,并将该BIN文件复制到闪存的地址0x0800 8000。
现在我不知道如何跳转到这个地址并运行这个闪烁的应用程序。
有人能帮我吗?最好!
至少有两种选择:
-
使用函数指针:
/* ... */ void (*app)(void) = (void (*)(void))0x08008000; app();
-
声明一个外部函数并使用链接器脚本解析它:
/* ... */ void app(void); app();
如何在链接器脚本中定义地址取决于你的链接器。
我想你也可以重写中断向量表。我不知道stm3214是如何工作的,但看看启动代码。在某个时刻,它用预定义的值加载程序计数器。您可以重写此值并复位MCU。