有关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使用HEX或BIN文件格式的探讨相关推荐

  1. 【转】hex和bin文件格式的区别

    hex和bin文件格式的区别 Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量.Intel HEX文件经 ...

  2. hex和bin文件格式区别

    1.hex介绍 Hex 全称 (Intel HEX)文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件.在Intel HEX文件中,每一行包含一个HEX记录.这些记录由对应机 ...

  3. hex和bin文件格式

    Hex文件,这里指的是Intel标准的十六进制文件,也就是机器代码的十六进制形式,并且是用一定文件格式的ASCII码来表示.具体格式介绍如下: Intel hex 文件格式 Intel hex 文件常 ...

  4. hex文件格式剖析,以及hex与bin文件互相转换

    大家好,我是学电子的小白白. 熟悉单片机开发的朋友,应该经常见到*.hex后缀的文件,它是单片机和嵌入式工程编译输出的一种常见的目标文件格式(比如keil就能编译输出hex文件),通过烧写工具把它下载 ...

  5. 烧写文件格式介绍(ELF、HEX、BIN)

    烧写文件格式说明(ELF.HEX.BIN) 一.ELF: Executable and linking format(ELF)文件是x86Linux系统下的一种常用目标文件(object file)格 ...

  6. hex文件格式解析,hex转bin(C语言)

    前言 hex转bin文件网上有很多现成的工具,但还是想了解下其中的数据结构跟原理 区别 hex跟bin都是程序烧写的文件,那他们有什么不同呢? 首先看大小,hex文件都会大于bin文件,hex文件打开 ...

  7. Hex和Bin的区别

    转自:http://blog.csdn.net/spdian/article/details/52963467 HEX文件和BIN文件是我们经常碰到的2种文件格式.因为自己也是新手,所以一直对这两个文 ...

  8. Hex、bin、axf、elf格式文件小结

    一.HEX Hex文件,一般是指Intel标准的十六进制文件.Intelhex 文件常用来保存单片机或其他处理器的目标程序代码.它保存物理程序存储区中的目标代码映象.一般编程器均支持生成此种格式文件. ...

  9. 利用Jlink给stm32系列单片机下载Hex和Bin文件

    多数时候我们下载程序都是在IDE里面,利用源码编译下载.可有时候我们手上只有别人给的已经编译好的文件,或者做一些IAP实验的时候,这种方法就不适用了.在这里介绍一下怎么利用Jlink驱动自带的软件Jf ...

最新文章

  1. RabbitMQ 入门系列(5)— RabbitMQ 使用场景优缺点
  2. 层次聚类多维度matlab实现_第34集 python机器学习:凝聚聚类
  3. Nagios安装与配置
  4. 直播这把“火”,还能烧多久?
  5. socket连接时间太长受什么原因影响?_真全粮多功能酿酒设备-酿酒发酵前期为什么要通风处理?...
  6. 一条SQL查询语句是如何执行的? MySql杂谈
  7. Linux Shell通过fifo实现多进程并发以及并发数控制
  8. 学计算机好轻松,猎证全国计算机等级考试学习系统
  9. android 动态改变listview的内容
  10. 8.exchange2013实战操作之RMS
  11. #pragma pack 用法详解
  12. 用python函数画德国国旗代码_给我一面国旗 python帮你实现
  13. BokTalk块说全球首款基于区块链技术的即时通讯系统
  14. 至将北漂或刚北漂的程序员
  15. 实锤了,尤大妥妥的二次元迷弟 —— 聊聊 Vue 的进化历程
  16. hdu5755 Gambler Bo(高斯消元)
  17. 比我的脸还干的gan货——Python Flask Web 框架入门
  18. OSG路径漫游实现与应用
  19. 基于Android平台的虚拟试衣关键技术研究
  20. 按键精灵MsgBox信息换行方法

热门文章

  1. 苹果系统测试硬盘软件怎么看,苹果电脑怎么检查或修好磁盘
  2. 网游防沉迷:一条摆设的马其诺防线
  3. html自动编号小圆点怎么实现,css如何实现自动编号?计数器的使用
  4. 你都不知道,你自律起来有多开挂
  5. 华为手机辅助服务自动关闭解决办法
  6. 【深度学习】深度残差网络ResNet
  7. Android最佳实践之UI
  8. 中央民族大学计算机专业分数线,2017中央民族大学各省各专业录取分数线(7)
  9. php做网页的表格,dreamweaver做网页实例教程 利用表格美化页面
  10. 小程序“成语猜题”v1.0.2答题源码分享