跳转到另一个应用程序



我想为我的stm3214 mcu编写一个引导加载程序(按下按钮后)跳转到flash的另一部分并运行该部分的应用程序。对于应用程序部分,我编写了一个简单的blinky并生成其BIN文件,并将该BIN文件复制到闪存的地址0x0800 8000。

现在我不知道如何跳转到这个地址并运行这个闪烁的应用程序。

有人能帮我吗?最好!

至少有两种选择:

  1. 使用函数指针:

    /* ... */
    void (*app)(void) = (void (*)(void))0x08008000;
    app();
    
  2. 声明一个外部函数并使用链接器脚本解析它:

    /* ... */
    void app(void);
    app();
    

    如何在链接器脚本中定义地址取决于你的链接器。

我想你也可以重写中断向量表。我不知道stm3214是如何工作的,但看看启动代码。在某个时刻,它用预定义的值加载程序计数器。您可以重写此值并复位MCU。

相关内容

最新更新