请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C1294NCPDT 工具/软件:Code Composer Studio
你好
在地址0x80000中启动我的引导加载程序
我的应用程序从0到0x7FFFF
如何 从 应用程序跳转至 地址0x80000以 启动引导加载程序?
谢谢
Shimon
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
你好
在地址0x80000中启动我的引导加载程序
我的应用程序从0到0x7FFFF
如何 从 应用程序跳转至 地址0x80000以 启动引导加载程序?
谢谢
Shimon
您好!
我建议您参考 TivaWare boot_demo1示例。 如果您查看 boot_demo1.c 文件,您将看到它通过调用 JumpToBootLoader()将控件传递给引导加载程序。
在 JumpToBootLoader()中,它将首先禁用中断,然后通过跳转到向量表中的向量0x2C 来进行 SVC 调用。 然后、SVC 矢量将调用引导加载程序中的 UpdateHandler 函数。 您为什么不尝试使用 TivaWare 示例并让它首先工作、以便您对它的行为有一些看法? 为什么要将引导加载程序放置在非0x0位置? 我们没有这样的引导加载程序示例。 让我们知道您是否能使它正常工作。
// // //将控制权传递给引导加载程序并启动远程软件更新。 // //此函 数将控制权传递给引导加载程序,并根据使用的特定引导加载程序二进制文件,通过 UART0或 USB 启动//主应用程序固件映像的更新。 // //\return 永不返回。 //// ***************** void JumpToBootLoader (void) { // //我们必须确保在进入之前关闭 SysTick 及其中断 //引导加载程序! // ROM_SysTickIntDisable(); ROM_SysTickDisable(); // //禁用所有处理器中断。 而不是禁用它们 //一次一个,直接写入 NVIC 即可禁用所有功能 //外设中断。 // HWREG (NVIC_DIS0)= 0xffffffff; HWREG (NVIC_DIS1)= 0xffffffff; HWREG (NVIC_DIS2)= 0xffffffff; HWREG (NVIC_DIS3)= 0xffffffff; // //将控制权返回给引导加载程序。 这是对 SVC 的调用 //引导加载程序中的处理程序。 // (*(void (*)(void))(*(uint32_t *) 0x2C))(); }