MCU双镜像机制如何使能?
一. 背 景
嵌入式设备升级过程中会由于断电、强行中断等外部因素,导致新固件写入Flash时不能完整写入,使系统启动时出现问题。或设备运行中,镜像文件被意外损坏,导致系统瘫痪,设备无法运行。面对以上问题,可以使用双镜像机制(dual image),它保证至少有一个镜像文件是可以启动,并且在任何时候都能正常工作。如果发生意外,引导加载程序检测并使用备用的镜像文件。
二. 原 理
(资料图片)
LPC5536 ROM支持内部Flash的双镜像引导(也支持FlexSPI外部Flash,原理相同),即在Flash可以放置两个引导镜像,ROM根据镜像文件版本号决定启动哪个镜像,首先启动最新版本号的镜像,如果失败,则启动旧镜像文件。
通电启动时,ROM首先检测CMPA中关于重定位镜像文件的位置和大小,然后检测两个镜像的版本号,所以在使用双镜像机制时,主要对镜像文件重定位和版本号进行配置。
ROM从内部Flash启动双镜像文件流程图如下:
2.1 镜像文件重定位
LPC5536内部Flash支持重映射,当设置重映射偏移量后,Flash AHB 总线将访问偏移后的地址。例如,当偏移量设置为128K(0x20000),对0x0的访问将被重新映射到地址0x20000。通过这个特性,ROM可以实现双镜像引导。下面是一个关于内部Flash存放两个镜像文件的简图。
第二个镜像的偏移量和重映射大小由用户在CMPA区域设置,让ROM知道第二个镜像的位置。
2.2 配置镜像的版本
在头文件偏移量为0x24处设置镜像版本号,如下表格所示,第16位-31位设置镜像文件版本号,第10位表示镜像文件是否存在版本号,使用双镜像机制时,此位设置为1.
三. 应 用
3.1 配置CMPA
配置CMPA中数据值修改cmpa.bin文件,通过blhost把修改后的bin文件写入CMPA,以配置image1偏移量和重映射大小,流程如下:
a. 打开一个全0的cmpa.bin,修改0x3E23C处数据为0x20000,高位在右低位在左,如下:
b. 修改重映射大小。地址0x3E238处修改为0x1d800,如下:
c. 保存并重命名为cmpa_new.bin,另存为\blhost_2.6.7\blhost_2.6.7\bin\win
3.2 烧写cmpa_new.bin
借助blhsot 工具烧写,blhost 2.6.7是一个命令行调试工具,界面如下:
测试blhost与开发板通信是否正常:
首先,从设备管理器查看开发板与电脑连接端口号
其次,开发板J43上使用跳线帽连接3和4,使能ISP启动;
然后,按下复位键,输入连接测试命令blhost -p com12 -- get-property 1
判断是否正常通信,如连接成功会提示信息:
写入修改好的bin文件数据到CMPA
通过使用blhost -p com12 -- write-memory 0x3e200 cmpa_new.bin命令,写入CMPA:
为确保正确写入,查看设置之后CMPA数据
通过命令blhost -p com12 -- read-memory 0x3e200 512查看设置后的CMPA数据:
3.2 双镜像版本设置
根据实验效果,Image0的功能是LPC5536-evk开发板上红灯闪烁,Image1功能是绿灯闪烁。
Image0 设置版本号为1,Image1 设置版本号为2:
打开红灯闪烁的工程,修改头文件偏移量0x24处为0x10400
打开绿灯闪烁的工程,修改头文件偏移量0x24处为0x20400
3.3 分配Flash
LPC5536JBD100用户可用的内部Flash共246K,所以Image0 分配到0x0-0x1FFFF地址范围内,Image1分配到0x20000-0x3D7FF地址范围内。如果使用MCUXpresso ID,设置如下:
工程->右键属性->MCU settings,设置起始地址和大小,完成后点击应用按钮。
红灯闪烁工程:
绿灯闪烁工程:
重现编译工程。
3.4 功能测试
测试程序为两个点灯程序,分别为红灯闪烁和绿灯闪烁程序,红灯闪烁为image0,版本号1,绿灯闪烁为image0,版本号2,所以测试结果如果绿灯闪烁,则成功。
下载程序使用IDE中GUI Flash Tool,分别下载两个镜像文件到开发板中:
在“File to program”中选择烧写的文件,点击run按钮后,程序会下载到Flash:
下载完成后,点击确定:
同样的方式下载另外一个程序,注意在烧写第二个程序时,不能勾选“mass erase”,如果使用其它工具烧写,也应关闭和”mass erase”相同功能的选项,避免擦除第一个镜像文件。
测试结果下载程序后,复位,绿灯闪烁。
升级测试:将红灯闪烁工程版本号修改为3,即修改0x10400为0x30400,重新烧写镜像文件,应该会看到红灯闪烁。
四. 总结
双镜像机制为嵌入式设备的升级和启动增加保险,应用过程中需要注意在CMPA区域设置镜像偏移量、重映射大小和配置镜像版本的方式,同时也需要注意两个工程中Flash配置。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!
扫码进群领资料
关键词:
您可能也感兴趣:
为您推荐
“规范化家长学校实践活动”公益项目第三阶段启动
限价调整之后的省间现货走势
升级服务释放家电消费潜力
排行
最近更新
- MCU双镜像机制如何使能?
- 142家中国公司上榜《财富》世界500强,比亚迪、宁德时代成“黑马”
- 降水总量超四百亿!海河流域流域总体进入洪水演进期
- 暑假请到非洲来旅游——肯尼亚
- 郑开城际铁路延长线最新进展来了!开封站新建站房年底前建成投用
- 山东省知识产权事业发展中心组建调研组 为“好品山东”地理...
- 超强台风“卡努”将至!山东再迎大范围降水!局部暴雨!
- 江西助推暑期文旅消费:倡导工会组织出游 最高标准1000元/人
- 阿里云大模型产品再升级 “通义听悟”上线“自动提取PPT”...
- 有人告房玄龄造反, 李世民命令不审问, 直接处死!
- 遗迹2约束之心怎么获得-约束之心获得方法
- 上海医药港股(上海医药港成功在港股上市)
- 导弹在战机200米处解体,空军试飞员选择……
- WTA250布拉格站首轮:袁悦击败3号种子张帅,张帅遭遇单打15连败
- 塞内加尔足球世界排名(塞内加尔足球世界排名攀升)
- 大基建计划谈判破裂!现货白银继续盘整
- 1:6,中国女足以史上最大比分失利告别世界杯
- 超华科技2023年半年度董事会经营评述
- 2023年“海南·琼中杯”决赛在即
- 昆明市第七届运动会在寻甸县开幕
- 行业首款AI只能电混家轿吉利银河L6将在今年9月正式上市
- 金融壹账通(06638.HK)将于8月16日举行董事会会议以审批中期业绩
- 推动科技成果转化、提供高质量服务……宝山这个园区成为企业...
- 农发行吉安市分行召开2023年年中工作会议暨三季度项目营销办...
- 辱骂+掌掴裁判,中甲俱乐部官员遭足协重罚
- 打响企服大模型第一枪,用友携YonGPT深化数智化应用
- 2023整车操作系统发展趋势研究报告发布 共同推动整车操作系统发展
- 科创板收盘播报:科创50指数微跌0.13% 电子设备制造股走强
- 京津冀等地今日强降雨持续,公众需关注预警预报信息
- 洞泾镇居民共话基层治理