您的位置: 首页 > 生活常识 >

bin文件用什么打开(LiteOS中生成的Bin、HEX、ELF三种文件格式)

100次浏览     发布时间:2024-08-02 13:30:52    


我们在使用编译器在编译工程后会要求生成可执行文件,将这些文件烧录到MCU进行运行,达到我们测试和使用程序的目的,再使用工具链进行编译的时候往往生成.bin、.hex 、.elf 、.alf等文件,这些文件有什么区别呢?可以互相转换吗?LiteOS 有哪些可执行文件呢?本文意义进行阐述。

BIN

bin文件,是基本的二进制文件,是flash中IO保存的基本信息,是有汇编程序直接汇编得到的二进制代码,bin文件采用顺序记录flash中的信息,文本本身包含任任何地址信息,bin文件烧录就是指定flash开始地址后逐个拷贝即可。利用STM32CubeProm将LiteOS编译后生成的bin文件显示如下图,我们需要设定flash写入地址才能进行烧录。

HEX

hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex;最常用的Hex格式是Intel HEX文件格式,即遵循Intel HEX文件格式的ASCII文本文件,文件的每一行都包含了 一个HEX记录。这些记录是由一些代表机器语言代码和常量的16进制数据组成的。Intel HEX文件常用来传输要存储在ROM 或者 EPROM中的程序和数据。大部分的EPROM编程器和FLASH能使用Intel HEX文件。

上面的Huawei_LiteOS.bin对应的HEX文件如下(用notepad++打开)

:020000040800F2:2000000000000820F50E0008650F0008650F0008650F0008650F0008650F00080000000041:20002000000000000000000000000000650F0008650F000800000000650F0008650F0008D0...........................................................................................................................................................................................................................:208E0000D883050828830508D4820508148505081C8505082485050868CC03082C850508C8:0C8E20003485050804CD030804CD0308C8:00000001FF

文件会有头尾部的的说明。

文件头不的信息

:020000040800F2

02带边数据长度;紧跟着后面的0x00 0x00 为地址;再后面的0x04为数据类型,类型共分以下几类:

'00' //数据记录

'01' //文件结束记录

'02' //扩展段地址记录

'03' //开始段地址记录

'04' //扩展线性地址记录

'05' //开始线性地址记录

接着0x04后面的两个 0x08 0x00就是数据,表示偏移地址,最后一个0xF2是校验码。

第二行开始的记录地址和所对应的数据其格式是

:开始代码|地址|数据类型|数据|校验

:20|0000|00|00000820F50E0008650F0008650F0008650F0008650F0008650F000800000000|41

:20 记录数据长度为20个字节;

0000 数据在内中的起始地址

00 记录类型00(是一个数据记录)


00000820F50E0008650F0008650F0008650F0008650F0008650F000800000000 数据内容

41 这一行的校验

最后一行的内容表示文件结束记录

:00000001FF

hex文件同一样可以在STM32CubeProm打印出内存的内容(与之前的bin打印是一致的)。

ELF

在计算机科学中,是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件,是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的,也是Linux的主要可执行文件格式。

elf(Executable and Linkable Format)可执行与可链接格式,是有别于hex和bin通过记录数据的格式,elf更多而记录程序的连接转储的格式文件,elf目标文件是由汇编器(assembler)和连接编辑器(link editor)生成的,内容是二进制,而非可读的文本形式,是可以直接在处理器上运行的代码。

简单的理解,elf文件将二进制(bin)文件和程序描述文件打包后的一种执行文件,下载到程序里的依然是bin文件的部分,但是仿真器可以依靠其余程序表述文件来获取程序执行的位置和二进制的对应。表意文件可以利用readelf在linux下读取,因为我系统的原因就不赘述了。

其他可执行文件:

.asf、.o、.out这些文件都是编译后的可执行文件,和elf以宣扬都是具有连接格式进行描述,可以利用仿真器进行仿真使用,只是编译格式和编译器设置的不同可以选择不同的文件格式。

可转换性

因为bin、hex都是只是记录数据的,但elf类型不仅记录数据还有程序描述,所以,elf可以转成bin和hex使用,但是反转。

对比一下,发现bin文件最小最简单,但是安全性差,功能性差,hex包含头尾和检验,就有很好的安全性,但是文件比bin大,功能没有elf强大;elf功能多,但是文件最大。

LIteOS如何生成这些文件的

liteOS通过makefile进行文件编译,也是通过makefile进行设置gcc编译文件的输出格式,在工程目录下的makefile代码中:

$(LD) $(LITEOS_LDFLAGS) $(LITEOS_TABLES_LDFLAGS) $(LITEOS_DYNLDFLAGS) -Map=$(OUT)/$@.map -o $(OUT)/$@.elf --start-group $(LITEOS_BASELIB) --end-group	$(OBJCOPY) -O binary $(OUT)/$@.elf $(OUT)/$@.bin	$(OBJDUMP) -t $(OUT)/$@.elf |sort >$(OUT)/$@.sym.sorted	$(OBJDUMP) -d $(OUT)/$@.elf >$(OUT)/$@.asm	$(SIZE) $(OUT)/$@.elf

代码中的解释后的代码

arm-none-eabi-gcc  -o xx.elfarm-none-eabi-objcopy -O ihex xx.elf xx.hexarm-none-eabi-objcopy -O binary xx.elf xx.binout --format ihex write xx.hex

通过gcc编译的命令将结果生成为xx.elf的格式,在通过elf生成bin和hex的目标文件。

结论

在使用工程编译结果是,最好有bin或者hex同时具有elf文件,elf用于仿真和调试,但输出的到工厂的文件可以使用hex和bin。

相关文章

绦虫是猫咪的一种常见的寄生虫,它会引起猫咪拉稀、呕吐、消瘦、营养不良等症状。在排便时会有大量的虫子排出体外,因此,主人就需要尽快的去帮助猫咪做好驱虫的工作,避免寄生虫繁殖得越来越多,影响猫咪的身体健康。1、了解身体清情况猫咪在驱虫的时候,看看猫咪是不是有生病或者是其它的应激反应,如果有的话是不能够进
2024-09-20 10:31:14
随着国家产业结构调整和建筑行业对绿色节能建筑理念的倡导,装配式建筑受到越来越多的关注。作为对建筑业生产方式的变革,装配式建筑既符合可持续发展理念,是建筑业转变发展方式的有效途径,也是当前我国社会经济发展的客观要求,成为建筑行业的下一个风口。装配式建筑介绍什么是装配式建筑?由预制部品部件在工地装配而成
2024-09-20 10:16:23
"瘦金体"是书法史上的一个独创,在书法史上极具个性,与晋楷、唐楷等传统书体区别较大,个性极为强烈,可谓是一朵奇葩。该书体是宋朝皇帝宋徽宗赵佶所创,然而却被命名为"瘦金体",为什么会被如此命名呢?这与金国有什么关系呢?宋徽宗《秾芳诗》"瘦金体"发展与成熟瘦体始创于唐朝时期,唐朝的薛曜是"瘦体"的始祖,
2024-09-20 10:01:28
平静——放松自在 平和 冷静 安慰 舒服 自得 镇定 心安 悠闲 怡然 平静 安静放松 放心 安全 满足 安祥 安稳 安宁 温暖愉悦——兴奋快乐 精力旺盛 幸福 动人心魄 快活 欢喜 渴望 欢欣鼓舞 欣喜若狂 销魂有活力 狂热 欣快振奋 兴奋 幻想 高兴 愉快 喜悦 飘飘然 满怀希望 欣喜 兴高采烈
2024-09-20 09:46:10
1、与狼共舞 Wolves at Our Door (1997),豆瓣评分8.8我以为我不会有兴趣。但不得不承认,他们的真实和通达令我诧异,令我动容。2、极光下 オーロラの下で (1990),豆瓣评分8.3人狗情,爱情,友情,争斗,忠诚。极光下,一切都交织的那么美好。3、狼 Loup (2009),
2024-09-20 09:31:14
说到碳晶电暖器,例如大家所熟知的碳晶地暖、碳晶墙暖、碳晶电暖画等。市面上也有许多冒充碳晶地暖 、碳晶墙暖和碳晶电暖画的产品,下面给大家介绍一些真正的碳晶电暖器有什么特征,希望对大家在选购碳晶电暖产品时有所帮助。▪ 碳晶电暖器其发热原理是碳分子团在电场作用下发生布朗运动,每个碳分子点,以远红外线和对流
2024-09-20 09:16:07
绦虫猫咪吃什么药彻底清理
绦虫是猫咪的一种常见的寄生虫,它会引起猫咪拉稀、呕吐、消瘦、营养不良等症状。在排便时会有大量的虫子排出体外,因此,主人就需要尽快的去帮助猫咪做好驱虫的工作,避免寄生虫繁殖得越来越多,影响猫咪的身体健康。1、了解身体清情况猫咪在驱虫的时候,看看猫咪是不是有生病或者是其它的应激反应,如果有的话是不能够进
装配式建筑技术前途咋样(装配式建筑发展前景是什么样?)
随着国家产业结构调整和建筑行业对绿色节能建筑理念的倡导,装配式建筑受到越来越多的关注。作为对建筑业生产方式的变革,装配式建筑既符合可持续发展理念,是建筑业转变发展方式的有效途径,也是当前我国社会经济发展的客观要求,成为建筑行业的下一个风口。装配式建筑介绍什么是装配式建筑?由预制部品部件在工地装配而成
瘦金体由谁所创(揭秘"瘦金体"名称由来,宋徽宗竟暗藏玄机)
"瘦金体"是书法史上的一个独创,在书法史上极具个性,与晋楷、唐楷等传统书体区别较大,个性极为强烈,可谓是一朵奇葩。该书体是宋朝皇帝宋徽宗赵佶所创,然而却被命名为"瘦金体",为什么会被如此命名呢?这与金国有什么关系呢?宋徽宗《秾芳诗》"瘦金体"发展与成熟瘦体始创于唐朝时期,唐朝的薛曜是"瘦体"的始祖,
表示感情的词语有哪些(情感词汇列表)
平静——放松自在 平和 冷静 安慰 舒服 自得 镇定 心安 悠闲 怡然 平静 安静放松 放心 安全 满足 安祥 安稳 安宁 温暖愉悦——兴奋快乐 精力旺盛 幸福 动人心魄 快活 欢喜 渴望 欢欣鼓舞 欣喜若狂 销魂有活力 狂热 欣快振奋 兴奋 幻想 高兴 愉快 喜悦 飘飘然 满怀希望 欣喜 兴高采烈
狼的电影有哪些好看(盘点13部关于狼的豆瓣高分电影)
1、与狼共舞 Wolves at Our Door (1997),豆瓣评分8.8我以为我不会有兴趣。但不得不承认,他们的真实和通达令我诧异,令我动容。2、极光下 オーロラの下で (1990),豆瓣评分8.3人狗情,爱情,友情,争斗,忠诚。极光下,一切都交织的那么美好。3、狼 Loup (2009),
碳晶电暖器优缺点(碳晶电暖器怎么样?)
说到碳晶电暖器,例如大家所熟知的碳晶地暖、碳晶墙暖、碳晶电暖画等。市面上也有许多冒充碳晶地暖 、碳晶墙暖和碳晶电暖画的产品,下面给大家介绍一些真正的碳晶电暖器有什么特征,希望对大家在选购碳晶电暖产品时有所帮助。▪ 碳晶电暖器其发热原理是碳分子团在电场作用下发生布朗运动,每个碳分子点,以远红外线和对流
人参泡酒怎么泡最好(园参、林下参的泡酒比例是多少)
先来说说人参酒为什么自己泡最好,因为市场上现在已售的人参酒,所用人参均为园参,因为人参虽然是药食同源,但食品所用人参只可以是5年及5年以下生园参,如果是我们自己泡制呢就就可以用林下参或是野生参泡制了,而且有的人参酒所用的酒达不到50度,如下图,人参酒所用酒最好是50度的纯粮食酒。园参人参酒园参人参酒