IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> M0+系列 CX32l003单片机BOOT程序与APP程序之间的跳转(IAP相关) -> 正文阅读

[嵌入式]M0+系列 CX32l003单片机BOOT程序与APP程序之间的跳转(IAP相关)

? ?

?

? ? boot程序即bootloader引导程序,?是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,以及升级程序,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用系统准备好正确的环境。而这bootloader程序几乎大部分应用在CPU、ARM等芯片上。

? ? ? ?而对于单片机来说,其boot并不复杂,因为厂家在出厂之前就已经默认了单片机的启动位置。除了具有多种boot启动方式的单片机以外,一般的单片机就只有默认的厂家启动方式。

? ? ? 提到boot,如果单片机有了一段boot代码(注意这里的boot虽然和LINUX系统下的boot相似,但也有区别,区别就在于存储的位置和启动位置不同,linux芯片的boot存在于外部FLASH等存储芯片,而单片机的boot其实就相当于存储在自身ROM的一段用户代码,通过这段用户代码跳转到另一端用户代码)。那么对于后续单片机的维护那将是非常方便的事。说到这里,就很清晰了 这就涉及到了IAP编程。而如果要实现IAP编程,那么实现单片机程序的跳转就是必须的了。

? ? ? 要实现程序跳转,如下几步既可以完成。

? ? ? boot程序设置:

? ? ? 1、添加如下代码

 JumpAddress = 0x2000;  //复位地址          
      Jump_To_Application = (pFunction) (JumpAddress+1);                
      __set_MSP(JumpAddress);     //将栈顶指针设置成栈顶地址  
      Jump_To_Application();     //设置PC指针为复位地址

?2、设置 Options Target

? ? ? ?同样的,对于app程序来说,就需要设置其对应的地址即可

? ? ? ?app程序设置:


JumpAddress = 0x0;                
      Jump_To_Application = (pFunction) (JumpAddress+1);                            
      __set_MSP(JumpAddress);                            
      Jump_To_Application();

注意一点,如果app程序中包含中断的话,那么就需要把中断向量表的偏移与设置的起始地址一致。

以上就是boot程序和app程序的设置方法。

为了形象说明,在boot程序里用串口发送"BOOT",然后跳转到APP程序,app程序发送"APP",然后跳转到boot程序,循环往复

?

见如下视频展示的效果

app和boot程序跳转

以上就是boot和app程序的互相跳转,实现了跳转,那么对于后续程序的升级和维护(IAP)来说,就相当的方便了。

?关注公众号“嵌入式软硬件爱好者”? ,发送"跳转",获取boot和app互相跳转源码

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:36:10  更:2021-12-04 13:37:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:13:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码