admin 管理员组文章数量: 1184232
我们在做嵌入式开发的时候,通常平台的Image文件是.bin格式的,如NK.bin,eboot.bin,xldr.bin等等。下面让我们一睹bin文件的真面目吧~下面是用view bin工具查看的本人项目中的xldr.bin的信息,仅供参考!
一个bin 文件在存储上是按下面的结构存储的:
标记(7)+Image开始地址(1)+Image长度(1)
记录0地址+记录0长+记录0校验和+记录0内容(文件内容)
记录1地址+记录1长+记录1校验和+记录1内容(文件内容)
......
最后一条记录是表示结束,Start = 0x00000000, Length = 0x8C072C3C是StartUp地址, Chksum = 0x00000000
bin 文件的头部(不包括记录)可以用下面的结构表示
struct
BinFile{
BYTE signature[
7
];
//
= { ''B'', ''0'', ''0'', ''0'', ''F'', ''F'', ''/a'' }
DWORD ImageStart
DWORD ImageLength
};
一般xldr.bin,nk.bin 都符合正常bin文件格式,包含记录开始0,1,2 记录为特殊记录,2做为cece的标记,其后4byte表示 TOC地址(指向ROMHDR结构的数据),3记录开始都是文件记录。
下面是用viewbin工具查看项目中xldr.bin的信息,贴出来供参考:
ViewBin... xldr.bin
Image Start = 0x9FA00400, length = 0x00002074
/*该bin的开始地址和长度*/
/*每条record都符合
struct Record{DWORD recaddress; DWORD reclength; DWORD chksum;void * recdata}
*/
Record [ 0] : Start = 0x9FA00400, Length = 0x00000004, Chksum = 0x000001ED
0x9FA00400 : FE0500EA ....
Chksum valid
Record [ 1] : Start = 0x9FA00440, Length = 0x00000008, Chksum = 0x000002ED
0x9FA00440 : 45434543 00C0FE1F ECEC....
//
CECE
是我们在romldr.h中定义的ROM signature,其后的四个字节1FFECOOO是指针pTOC的值
Chksum valid
Record [ 2] : Start = 0x9FA00448, Length = 0x00000004, Chksum = 0x00000020
0x9FA00448 : 00200000 . ..
Chksum valid
Record [ 3] : Start = 0x9FA01400, Length = 0x00000FF8, Chksum = 0x000322B5
0x9FA01400 : 00B8FE1F B1000000 28B0FE1F 14B0FE1F ........(.......
0x9FA01410 : 30BFFE1F 1CB0FE1F 00ACFE1F E91972B1 0.............r.
0x9FA01420 : 00000000 00240000 00000000 00000000 .....$..........
0x9FA01430 : 00000000 00000000 00000000 00000000 ................
0x9FA01440 : 00000000 00000000 00000000 00000000 ................
0x9FA01450 : 00000000 00000000 00000000 00000000 ................
0x9FA01460 : 00000000 00000000 00000000 00000000 ................
0x9FA01470 : 00000000 00000000 00000000 00000000 ................
0x9FA02340 : 52534453 78F2EDF9 113C874D ACBA1FFD RSDSx....<.M....
0x9FA02350 : 88933838 02000000 786C6472 2E706462 ..88....xldr.pdb
0x9FA02360 : 00000000 00C0FE1F 01002201 00180000 ..........".....
0x9FA02370 : 00A0FE1F 06000000 00000100 00300000 .............0..
0x9FA02380 : 00000000 00000000 1EB1C74C 00000000 ...........L....
0x9FA02390 : 00000000 00000000 00000000 00000000 ................
0x9FA023A0 : 00000000 00000000 00000000 00000000 ................
0x9FA023B0 : 00000000 00200000 14000000 801D0000 ..... ..........
0x9FA023C0 : 1C000000 00000000 00000000 00000000 ................
0x9FA023D0 : 00000000 09000000 680F0000 00100000 ........h.......
0x9FA023E0 : 00100000 00B0FE1F 00B0FE1F 20000060 ............ ..`
0x9FA023F0 : 6E6B2E65 78650000 nk.exe..
Chksum valid
Record [ 4] : Start = 0x9FA02400, Length = 0x00000054, Chksum = 0x00000DB4
0x9FA02400 : 01C00140 01C00140 00A0FE1F 74C0FE1F
...
0x9FA02410 : 01000000 00D0FE1F 00E0FE1F 00D00220 ...............
0x9FA02420 : 00000000 00000000 00000000 00000000 ................
0x9FA02430 : 00000000 00000000 80808080 00000000 ................
0x9FA02440 : 00000000 C2010200 00000000 00000000 ................
0x9FA02450 : 00000000 ....
Chksum valid
Record [ 5] : Start = 0x9FA02454, Length = 0x00000020, Chksum = 0x00000D15
0x9FA02454 : 01000000 BE4D3B65 9375CB01 00140000 .....M;e.u......
0x9FA02464 : F0BFFE1F 68BFFE1F D8BFFE1F 00A0FE1F ....h...........
Chksum valid
Record [ 6] : Start = 0x00000000, Length = 0x9FA01C00, Chksum = 0x00000000
Start address = 0x9FA01C00
//是startup的入口地址?是xldr.s中startup函数的入口地址?跳转指令跳转的入口?
Checking record #4 for potential TOC (ROMOFFSET = 0x7FA16400)
Found pTOC = 0x1ffec000
ROMOFFSET = 0x7FA16400
Done.
版权声明:本文标题:解读Bin格式:走进Flash中心的幕后世界 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1772241812a3553716.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论