深入理解.bin文件和.nb0文件的结构

.bin文件包含文件头、起始地址、长度及记录结构,非内存简单拷贝,需通过特定方式运行;.nb0文件是内存运行程序的直接拷贝,可直接下载运行。两者差异在于.bin的格式解析和.nb0的直接执行特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   .bin文件是一个描述性质的映像文件,它由文件头(head)、镜像数据目的起始地址(ImageStart)、镜像数据长度(ImageLength)和多条相对独立的记录(record)构成。

  文件头(head)由7个字节组成,内容是:42 30 30 30 46 46 0A,即“B000FF/x0A”,这是判断镜像文件是.bin类型的依据。

  镜像数据目的起始地址(ImageStart)由4个字节组成,它定义了镜像文件解析后装载在内存中的起始地址。

  镜像数据长度(ImageLength)也由4个字节组成,它表示.bin镜像文件解析后在内存中占用的总的存储空间大小。

  每条记录(record)由4字节的起始存储地址(RecordStart)、4字节的数据长度(RecordLength)、4字节的校验码(RecordCheckSum)和RecordLength个字节的记录数据(RecordData)组成。

  由以上.bin的文件格式可知,.bin文件不是内存程序空间的一个简单的拷贝。所以它不能直接用串口烧写进内存或FLASH空间来直接运行,必须通过PB下载,通过EBOOT按照.bin文件的格式解析出来具体的内容并重新装载后才能运行。

  而.nb0文件就不一样,它是内存运行程序映像的一个硬拷贝,其数据内容和程序运行时在内存中的数据是一样的。鉴于此,.nb0可以通过串口下载到指定的位置直接运行。很明显,.nb0是一个不存在格式的映像文件。

  下面,我通过一个具体的.bin文件以及对应的nb0文件来帮助大家加深对以上概念的理解:

  用UltraEdit打开我们要分析的NK.bin文件和NK.nb0文件,为了方便分析,我分别截取了NK.bin和NK.nb0文件的一小部分:

           NK.bin文件的部分内容:

           00000000h: 42 30 30 30 46 46 0A 00 00 00 80 64 67 FA 00 00

           00000010h: 00 00 80 04 00 00 00 EB 01 00 00 FE 03 00 EA 40

           00000020h: 00 00 80 08 00 00 00 EE 02 00 00 45 43 45 43 1C

           00000030h: 48 FA 80 48 00 00 80 04 00 00 00 5

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值