STM32F0芯片内不同程序区的跳转问题交流与介绍.doc
《STM32F0芯片内不同程序区的跳转问题交流与介绍.doc》由会员分享,可在线阅读,更多相关《STM32F0芯片内不同程序区的跳转问题交流与介绍.doc(3页珍藏版)》请在三一文库上搜索。
1、STM32F0芯片内不同程序区的跳转问题交流与介绍对于STM32用户,经常会涉及到通过用户启动程序实现对用户应用程序的更新升级。一般来讲,用户启动程序主要用来跟外界通信,获取新的用户程序代码并实现对用户代码区的应用程序升级。用户应用程序是指实现各种用户功能的代码。在这个过程中,往往需要做从用户引导程序区到用户应用程序区的跳转,有时可能还需实现从用户应用程序区跳回到用户启动程序区,或者不同用户程序区的互相跳转等操作。在这些跳转过程中,往往有人在此遇到阻碍,破费周折,尤其是在使用基于cortex M0内核的STM32F0做IAP应用时,这个过程跟其它基于CORTEX M3/M4/M7内核的STM3
2、2系列相比,操作上不太一样,实现起来稍微复杂些。这里就STM32F0芯片内不同程序区的跳转问题做些交流与介绍,限于篇幅,仅直接介绍具体操作和注意事项,不做过多拓展。相关知识点可阅读STM32芯片参考手册、STM32相关ARM内核编程手册。下面介绍中提及的集成编译环境是指ARM MDK,硬件基于STM32F072RB Nucleo开发板。后面我将逐一介绍从BOOT区【用户启动程序区】跳转到APP区【用户应用程序区】,从APP区跳转到另外新APP区以及从APP区跳回BOOT区的基本流程及注意事项。一般来讲,不同区段的执行代码我们通过建立不同的工程项目来实现,最终将不同区段执行代码写入芯片。这里假定
3、用户BOOT区对应的内部FLASH地址段为0x80000000x8004000, 用户APP1区对应的内部FLASH地址段为0x80040000x8008000, APP2区对应的内部FLASH地址段为0x80080000x800C000.一、从用户启动程序区【BOOT区】到用户应用程序区【APP区】的跳转先说从BOOT区跳转到APP区。跳转代码比较简洁、简单,注意跳转前要关闭刚才程序区开启过的所有中断使能,保证所有中断请求位都被清除,不要只是简单的关闭总中断,否则往往隐患多多。BOOT区相关跳转代码如下:这个从BOOT区到APP区的跳转最终能否成功,关键取决于APP区代码相关配置及准备工作。
4、假设这里的APP区是上面提到的APP1区,内部FLASH地址段为0x80040000x8008000,那么在MDK的option项里的memory配置板块要做正确配置,即flash空间与ram空间的配置,如下图所示:IROM1的配置就是APP1代码摆放的起始空间地址及长度。IRAM的配置要注意先保留48个字的空间用来存放中断矢量表的内容。因为stm32F0芯片的中断矢量表的大小就是48个字【即0xc0字节】。至于剩下的内部RAM空间大小由芯片本身的RAM容量决定。【这里是基于STM32F072RB芯片,其内部RAM总容量为0x4000】。另外一件很重要的事情就是做中断矢量表的拷贝。在APP1区
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32F0 芯片 不同 程序 跳转 问题 交流 介绍
链接地址:https://www.31doc.com/p-3273502.html