admin 管理员组文章数量: 1184232
有关IAP 使用HEX或BIN文件格式的探讨
BIN 优点, 下载时二进制传输效率高,一个起始地址和长度(均可事先知道)搞定.因起始地址和长度在
下载一开始就可以知道, 所以只需要擦除实际代码大小的FLASH,避免大FLASH空间小代码时擦除FLASH的时间和FLASH损耗.
缺点: 当代码分段在不同地址时,如果中间有大片空地址,则需要填充,并被编程序到FLASH里.比如
一段代码在0x0800 2000~0x08002F00, 下一段代码在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字节的
每 PAGE 擦除时间最长为 40ms,512K 的 FLASH, 擦除一次需要长达 10 秒时间 !(Masserase 等于 page erase 时间也只需要 40ms, 但是会把 bootloader 也干掉 , 所以不能用 ~), 这更是使用 HEX 格式的代价 .
hex
格式是
intel
在很久很久很久以前的格式,那时候还没有现在的
UE/WinHex
等
HexEditor
软件
hex
格式其中的一个目的是打印下来看的
现在
hex
是在发挥余热,并且为了能继续跟上时代,还做了扩展,加
segment
段地址,这样寻址范围从
16
位到了
32
位
bin
有个最大的缺陷,就是没有起始地址以及范围的信息
比如
STM32
的程序起始地址是
0x08000000
,难道在前面要填写这么多个空数据来保证地址正确
bin
不是一个严格意义上的文件格式,是没有文件格式的文件格式
版权声明:本文标题:从IAP到BIN:SWF开发者如何实现代码优化的实战指南 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1772042705a3551467.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论