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

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。

相关文章

花千骨手游新区开服勾玉怎么使用?很多玩家不知道新区刚开服勾玉怎么使用,那么今天小编带来勾玉正确使用指南攻略,希望这篇攻略能为大家游戏带来帮助!花千骨手游新手玩家新区开服是否有点无从下手不知道勾玉该消费在什么地方才能让自己变的更强,小编见过许许多多VIP高的玩家战斗力都没VIP低的玩家高,在拿着比别人
2024-11-25 10:30:19
仙境传说ro巴风特之怒,这款游戏给玩家提供了丰富多样的挑战和收获。完成主线、支线、副本以及每日活动不仅能够获得经验值和装备,还可以获取珍贵的zeny币和红钻。当你的背包装满时,可以顺利进行装备的拆卸和售卖,而合成和分解卡片也能换取一定数额的zeny币和红钻。通过交易行,你可以将zeny币和红钻兑换成
2024-11-25 10:15:18
《幻世九歌》里的技能系统,简直是玩家冒险路上的超级大宝库!首先得告诉你的是,技能被分成了两大类:人物技能和帮会技能。而这两大类下,又细分为了让你热血沸腾的主动技能和默默在背后支持你的被动技能。让我们先来聊聊那些能让你手动释放、打击感爆棚的主动技能。每个职业都有6个炫酷到不行的主动技能,但是别贪心哦,
2024-11-25 10:00:17
南明湖作为游戏中的热门地区之一,吸引了许多侠客前去挑战。在这里,玩家们可以体验到丰富的卡怪战斗,锻炼自己的战斗技巧和策略。同时,南明湖也是资源产出的重要区域,玩家们可以在这里获得各种珍稀物品和装备,提升自己的实力和装备水平。当然,挑战南明湖的过程可能会充满艰险,但正是这种挑战性让玩家们有机会获得更丰
2024-11-25 09:45:20
传送到梦世界达玛神殿,给哈桑转职龙,休息一晚,调整一下阵容(主角+阿莫斯+哈桑+米蕾尤)传送到现实世界的锻造屋,坐船往北走,进入海底魔城。附上城堡图:边搜刮边前进(砂之器必须得拿),最底层触发boss战!这个boss很菜,随便打没什么难度。没血就让阿莫斯和米蕾尤全体加血,血线健康的情况下就用高伤害咒
2024-11-25 09:30:14
近日,仙剑IP首款开放世界RPG《仙剑世界》正式宣布将构建一个属于东方人的浪漫幻想世界。槐序初夏,冬去春来,万物伊始,六界相安。在《仙剑世界》中,每一次角色邂逅,每一段故事演绎,每一瞬情感交汇,每一个从陌生到熟悉的相遇,都是属于玩家的独家记忆。正是因为东方幻想与中式浪漫的碰撞,才诞生出这个东方浪漫幻
2024-11-25 09:15:18
rohs标准是什么(rohs是什么意思?)
简介:ROHS是一项重要的环境法规,它对电子电器产品的材料使用进行了限制,旨在保护人类健康和环境。本文小编叶先生将介绍ROHS的具体含义、背景和影响,帮助读者全面了解ROHS的重要性和应用。一,ROHS的定义与背景ROHS的全称是"Restriction of Hazardous Substance
qq微信号登不上去了怎么办(微信登录受阻教你几招轻松解决!)
你有没有遇到微信登录不上的情况?这是什么原因造成的?别急,今天咱们就来聊聊这个话题。一、检查网络连接:微信登录的基石确认一下,你的设备是不是已经连上了互联网?无论是手机还是电脑,稳定的网络连接可是登录微信的前提哦!你可以试着打开其他网页或者应用,看看网络是不是畅通无阻。切换网络环境:如果你现在用的是
中国鬼故事有哪些经典的(中华民族的十大灵异故事)
中华民族的历史源远流长、博大精深。 从盘古开天辟地到三皇五帝,再到中华民国,世间历尽沧桑,经历了无数悲欢离合。 下面,我们将从灵异故事、未解之谜、历史考古、古建筑、古墓葬、娱乐八卦等十大排行榜中,为您介绍发生在中国各省区的您不知道的故事。 。灵异故事北京闹鬼地点:故宫西六宫景城81号劲松社区万寿山佛
年终奖个人所得税税率是多少(年终奖个人所得税怎么算?)
相信大家都知道年终奖是公司给员工一年发放的一次性奖金,一般来说,这种奖金是公司根据全年的经济效益发放的,并不是所有公司都会给职工发放年终奖,根据相关规定,年终奖个人所得税应纳税范围归为工资、薪金所得。所以,员工收到年终奖后,应该按照个税法里工资、薪金的计算个税方法来缴纳个人所得税。但是今年是个特殊的
台湾小吃特色美食推荐(台湾美食的“前生今世”:盘点那些来自内地的美食)
你知道哪些台湾美食呢?你吃过哪些呢?虽然我们很多人可能都没去过台湾,但是对于台湾的美食却不陌生。因为很多台湾流行的美食根源都在我们内地地区。今天我们就来盘点一下那些来自内地的台湾美食吧!刈包刈包是在面皮里夹肉类、蔬菜、香菜、花生粉等馅料的一种小吃。有一种传说,刈包和三国时期的张飞有关。但更准确的说法
黄土峁是什么意思(黄土地貌解析)
1、黄土塬:在古盆地基础上,由厚层黄土组成、面积较大的台地。黄土塬顶面平坦,侵蚀作用微弱,是良好的耕作地区。塬周被沟谷环绕,流水及边坡重力侵蚀作用强烈,塬边参差不齐。塬面保存好,比较完整、平坦,塬面坡度是一般在8°以下的称为平坦黄土塬。塬面被沟谷分割、蚕食,比较破碎,塬面倾斜明显的称为倾斜黄土塬。黄
准则条例具体指什么(关于新的准则和条例)
从1980年到2016年《关于党内政治生活的若干准则》走过了整整三十六个年头三十六年间,用以规范行为三十六年间,用以监督举措新的规范行为列车即将开出你 赶得上吗?车长按欢迎各位乘坐本次列车,希望各位乘客严格遵守章程,认真学习。列车即将出发。党要管党必须从党内政治生活管起,从严治党必须从党内政治生活严