概述
STM32 OTA 程序设计 V0.1
-
流程图
-
Flash 区域划分视图
BOOT起始地址 0x0800 0000 50k
APP 1区地址 0x0800 c800 100k
APP 2区地址 0x0802 5800 100k
Boot参数区地址 0x0803 e800 1k -
BootLoader区代码设计
程序空间大小为20k,地址分配为0x0800 0000到0x0800 5000.主要实现功能
1,读写flash
2,实现程序跳转,重定义中断向量表
3,标记A,B代码区域,根据标志位确定执行代码区 -
App区代码设计
A,B代码区大小都为100K
1,解析升级命令,触发升级程序
2,运行4G模块FTP程序,下载文件到4G模块RAM区
3,运行4G模块FILE程序,对RAM区的升级文件拷贝到STM32flash中
STM32 OTA 程序设计 V0.2
1 修改原设计说明
原设计中设置了两个代码运行区域,本意是想从BootLoader中分别跳转到A,B区域,但是该方案在设计时,没有考虑到bin文件中存在绝对地址问题,即在0x0800ce00处生成的bin文件,只能在该地址上运行,即便是拷贝到0x08025800处,也运行不了B区代码。打开bin文件,
前16字节数据:2000ad60 0800c9dd 0801197b 08010781
可以看到复位中断地址还是属于A区代码中,boot跳转到0x08025800,读取到复位中断地址后,便跳回A区代码执行,B区代码不会被运行。想解决这个问题,只有在生成bin文件时,修改ROM地址
打开bin文件,发现复位中断地址为080259dd.
这时候,B区代码才可以被正常运行。
显然在对设备OTA升级时,既要考虑到当前设备运行在哪个区域,同时去生成另一个区域的bin文件,极容易出现操作错误的问题,一旦错误,该设备将无法远程维护。基于上述分析,故修改升级方案。
2 流程图
3 Flash 区域划分视图
BOOT起始地址 0x0800 0000 50k
APP运行区地址 0x0800 c800 100k
APP 备份区地址 0x0802 5800 100k
Boot参数区地址 0x0803 e800 1k
4 BootLoader区代码设计
程序空间大小为20k,地址分配为0x0800 0000到0x0800 5000.主要实现功能
1,读擦升级标志位
2,拷贝备份区程序到运行区
3,实现程序的跳转
5 App区代码设计
APP运行区和备份区大小都为100K
1,解析升级命令,核对软件版本号,触发升级程序
2,运行4G模块FTP程序,下载文件到4G模块RAM区
3,运行4G模块FILE程序,对RAM区的升级文件拷贝到STM32flash中
4,使用MD5对文件进行校验,确定是否更新程序。
最后
以上就是贪玩流沙为你收集整理的STM32 EC20 OTA 程序设计 Bin文件错误与改进的全部内容,希望文章能够帮你解决STM32 EC20 OTA 程序设计 Bin文件错误与改进所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复