17242|14

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

有关IAP使用HEX或BIN文件格式的探讨 [复制链接]

BIN优点,下载时二进制传输效率高,一个起始地址和长度(均可事先知道)搞定.因起始地址和长度在
下载一开始就可以知道,所以只需要擦除实际代码大小的FLASH,避免大FLASH空间小代码时擦除FLASH的时间和FLASH损耗.
缺点:当代码分段在不同地址时,如果中间有大片空地址,则需要填充,并被编程序到FLASH里.比如
一段代码在0x0800 2000~0x0800 2F00,下一段代码在0x0800 4000~0x0800 4F00,那么BIN文件中
0x0800 2F00到0x0800 4000这段未用的地址空间也需要填充数据(因BIN不含有地址,只能连续),这些无用的数据也需要传给MCU并被编程到FLASH.当这段空地址很大时,浪费的效率就很可观了.
HEX优点,每个记录带有地址,按每个记录地址一个记录一个记录的编程.不方便整页整页的编程(不方便不是不可能,而是有点麻烦,因为有可能下一个记录的地址和这个记录地址中间有空闲地址).即使FLASH中间有空闲未用地址空间也不需关注.
缺点:ASCII码传输效率比BIN低一倍,由于并不知道总代码大小,需要擦除整个用户FLASH空间.
所以HEX格式和BIN格式各有优劣.大家觉得用哪个格式好,抛砖引玉,讨论一下.
我有个疑问,按照intel hex格式说明,普通数据记录最长可以有0xff个字节,实际上查看生成的HEX文件发现绝大部分是32个ASCII字节长度(16个实际2进制数据),有少量长度小于32个字节的普通数据记录.为什么没看到普通数据记录数据长度大于16字节的?
此帖出自stm32/stm8论坛

最新回复

iap在应用编程时 要使用thumb 地址,书上说要要将ads设置成interworking arm/thumb 混合编程可是我怎么找不到这编译选项呢 ,请指教呀。。  详情 回复 发表于 2012-11-11 10:05
点赞 关注
 

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 简单的答案:数据记录数据长度大于16字节时,HEX文件的一行就太长了,看起来不方便,
此帖出自stm32/stm8论坛
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 每PAGE擦除时间最长为40ms,512K的FLASH,擦除一次需要长达10秒时间!(Mass erase等于page erase时间也只需要40ms,但是会把bootloader也干掉,所以不能用~),这更是使用HEX格式的代价.
此帖出自stm32/stm8论坛
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 为什么这么在意擦除时间?反正也不是天天擦除。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(中级)

5
 
擦除时间也是一种"用户体验",版主也希望上班时间越短越好吧~~
想请问版主,STM32是不是在Thumb模式,生产的是16位宽代码?
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
擦除时间也是一种"用户体验",版主也希望上班时间越短越好吧~~
想请问版主,STM32是不是在Thumb模式,生产的是16位宽代码?
程序匠八 发表于 2010-8-11 16:50

至于Thumb模式产生的代码,你要查编译器和Cortex-M3的资料。
此帖出自stm32/stm8论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 在IAR中,"option"->C/C++ COmpiler->code选项中的"processor mode有"ARM'和"Thumb"两个选项,默认选择的是"Thumb"且是灰色不能更改.那么产生的代码就是16位的喽?
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 因为Cortex用的就是Thume
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 你搞个typo的ID来,程序匠入没有找麻烦吗
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
hex格式是intel在很久很久很久以前的格式,那时候还没有现在的UE/WinHex等Hex Editor软件
hex格式其中的一个目的是打印下来看的
现在hex是在发挥余热,并且为了能继续跟上时代,还做了扩展,加segment段地址,这样寻址范围从16位到了32位

bin有个最大的缺陷,就是没有起始地址以及范围的信息
比如STM32的程序起始地址是0x08000000,难道在前面要填写这么多个空数据来保证地址正确
bin不是一个严格意义上的文件格式,是没有文件格式的文件格式
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 
hex格式是intel在很久很久很久以前的格式,那时候还没有现在的UE/WinHex等Hex Editor软件
hex格式其中的一个目的是打印下来看的
现在hex是在发挥余热,并且为了能继续跟上时代,还做了扩展,加segment段地址,这样寻 ...
hex是可以找出同步头的,而BIN无法找到。
所以好的协议绝对不会用BIN,因为它的同步必须要有很长的同步包头。
实际效率无关紧要。
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 看楼主得ID和图标怎么有点像程序匠人
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 的确很像程序匠人
此帖出自stm32/stm8论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

14
 
请大家 帮忙看看
:10FCA00008121ACE0832291AF70832221AE0082957
:10FCB000F91319DD3308041A1D0832141A310832F9
:10FCC0001C223AB3201A199F01FF011A100C0810C8
:10FCD0002018302810080420400C1A6446282801F7
:04FCE00051000000CF
:04000005080050EDB2
:00000001FF

:04000005080050EDB2
这行如何解释?
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

15
 
iap在应用编程时 要使用thumb 地址,书上说要要将ads设置成interworking arm/thumb 混合编程可是我怎么找不到这编译选项呢 ,请指教呀。。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表