历史上的今天
今天是:2024年12月20日(星期五)
2018年12月20日 | stm32 iap 程序跳转进入硬件异常 hex合并
2018-12-20 来源:eefocus
工作多年,常常觉得自己遇到的问题及解决办法,时间稍长,就容易遗忘,且没地方查。再者,经常看别人的文章,受益匪浅,自己也有些经验,却从来没有分享出来,深感惭愧。工作忙不是好借口,今日开始开博,不为别的,只为记录、备忘,以及解决其他人可能遇到的相同问题顺利找到解决办法。
问题:
stm32f103ret6上做的IAP,仿真调试阶段没有遇到过问题,外场使用就发现不能跳转到app,且不同板子、不同isp等都可能出现这种问题
解决:
直觉上是有规律的,一直找规律,经过一天试验、跟踪、bin代码对比,终于发现bin的最后一部分代码没有成功写入flash。
进一步分析iap的bootloader程序,果然最后不够整页的代码写入时指针不对,在已写入的区域,由于有代码且没擦除,不会执行编程操作,对已写入的部分没有影响,但是最后一部分程序丢失,当app启动运行时pc指针0xFFFFFFFF,进入硬件异常,修正指针后正常。其实增加写入代码验证会更利于debug。
附加问题:
1、bootloader、app是采用flash_loader_demo_v2.8.0,分两次写入flash
2、使用mcu isp可以使用网上的一个批处理文件合并之后,下载,也能运行
copy /b .\bootloader.hex+.\app.hex *-hb.hex
效果就是把app.hex拷贝到bootloader后面,写入*-hb.hex。
分别试验2个软件,得出结论:
1、mcu isp是整片擦除,flash_loader是可选
2、mcu isp不验证hex结束,文件内容全部写入flash,flash_loader到第一个hex结束行即停止
so,
目前mcu isp只能烧写*-hb.hex能正常运行,单独烧写一个文件会擦除整个片子内容,在烧写这个文件,对iap来说运行不了。
flash_loader要灵活的多,但是烧写不了*-hb.hex,因为第一个文件结束行能被检测到,不在执行第二个文件的烧写。
度娘hex的格式,其实把bootloader.hex的最后一行去掉,把app.hex拷贝到后面即可,这样两个烧写软件都能够使用。
附hex文件格式说明:
用记事本打开hex,内容是一行一行的,且以冒号开头,16进制:
第一个字节:本行数据长度
第二个字节和第三个字节:本行代码写入flash的相对地址
第四个字节:数据类型
'00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
'01' End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾
'02' Extended Segment Address Record: 用来标识扩展段地址的记录
'03' Start Segment Address Record:开始段地址记录
'04' Extended Linear Address Record: 用来标识扩展线性地址的记录
'05' Start Linear Address Record:开始线性地址记录
最后一个字节:校验码,0x100-所有的字节加起来的最后一个字节
例:
:020000040800F2 第一行
:1000000050FA002009010008490800084B080008C0 第二行
02 本行数据0x02个字节
0000 相对地址0x0000
04 表示数据内容是扩展地址,绝对地址的高16位
0800 编程地址的高字节,左移16位即0x0800 0000构成了基地址
F2 校验码,02+00+00+04+08+00=0x0E 0x100-0x0E=0xF2
:04000005080030EDD2
:00000001FF 最后一行
倒数第二行
05 表示main的入口地址,080030ED
最后一行
01 表示hex文件结束
史海拾趣
|
试用报告(一) 拿到开发板了, 把试用心得,体会和大家分享一下. 先上张板子的酷图 <验证平台> 硬件的东西验完了,下面对板子进行测试, 简单看了一下U盘中带的资料 其中 \\Driver_and_Tools : 主要是USB转 ...… 查看全部问答> |
|
MCS-51单片机十六进制十进制转换汇编源程序2009年03月04日 18:37RW0 equ 0x08RW1 equ 0x09RW2   ...… 查看全部问答> |
|
请教: 电机的一个轴插在理合器里 转盘的一个也轴插在理合器里 电机转动 通过离合器带动转盘转动 离合器可以调速(相当于调力的大小 M=F*V) 离合器只有 2 根线, 单片机(AT89C52)来控制它? 是通过什么来控制呢? 这 2 根线,是不是分别是电 ...… 查看全部问答> |
|
【国际知名企业高薪诚聘-hardware PE】-猎头职位-可msn联系:alice007@live.cn 国际知名企业招聘硬件工程师 主要负责处理thinkpad电脑的问题 分析和设计解决方案。 定期与日本的开发团队和中国的厂商去解决未解决的问题。 要求有pc构架的基本知识,高级电气工程师,熟悉电子测试设备,熟悉操作系统和操作系统的调试工具 非 ...… 查看全部问答> |
|
求 ps2鼠标和cpu的连线图! 小弟过2天就要交毕业设计了,老师非得让我加个图.我的论文题目是基于嵌入式的PS/2鼠标接口设计. 拜托各位大哥大姐帮我下. 小弟不胜感激!在线等图. 把图发上来就行了 再次感谢!… 查看全部问答> |
|
嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。在现在日益信息化的社会中,嵌入式系统已经全面渗透到日常生活的每一个角落,小到mp3,PDA等微型数字化产品,大到网络家电,智能家电,车载电子 ...… 查看全部问答> |
|
最近论坛团购密集啊! 实惠!! 话说MSP-EXP430FR5739这个板上有三轴加速计,而且是铁电MCU高级啊!前段时间想搞四轴飞行器,可没玩过三轴加速计,这次团购这个板,刚好可以用来了解一下三轴加速计! 再者也可以了解一下铁电MCU 优势 ...… 查看全部问答> |




