查看文章 |
借用别人的解释:这里提到的bin是一种二进制镜像格式,以片断(section)为单位组织数据,每个片断都包括一个头,头里指定了起始地址,长度,校验值。Platform Builder调用工具将WINCE内核所有文件以bin格式合并成一个文件,默认文件名为nk.bin。BootLoader又以同样的格式将nk.bin分解成多个文件放到RAM中。可以在命令行中键入“viewbin nk.bin”来查看bin文件中具体包括了哪些内容。键入Cvrtbin命令转换.bin格式文件为.sre格式或者.abx格式。 http://www.cnblogs.com/wogoyixikexie/archive/2009/01/19/1378341.html nb0格式是原始的二进制镜像,它不包括头,一般情况下将内核下载到设备的RAM中运行都采用nb0格式。要生成nbx格式的文件,需要在相关.bib文件中确定如下值:ROMSTART、ROMWIDTH、ROMSIZE 那么nk.bin是如何生成的? Romimage.exe is a locator application that creates Windows CE binary image (.bin) files, usually limited to a single file called Nk.bin. This means that Romimage
For more information about Ce.bib, see Make Binary Image Tool. 最近想搞multi bin后来发现我的bootloader是优龙的,不支持binfs分区格式化, 我想把eboot下的代码移植过来,应该可以的。 一个bin 文件在存储上是按下面的结构存储的 组成:标记(7)+Image开始地址(1)+Image长度(1) bin 文件的头部(不包括记录)可以用下面的结构表示 首先,NK.BIN中的内容是被压缩过的,NK.NB0中的内容是没有压缩的。 两者大小的区别是因为在生成过程中BIN会将你设定的后面的NULL自动去掉,而NB0就不会。 现在来用微软自带工具来看看这两个文件的格式到底有什么不同。
这幅图结合上面的解释可以知道,这个NK.bin文件的标志是BOOOFF,nk.nb0是没有这个标志的,要知道具体的信息,还是看MSDN好。 At the end of the boot loader development process described in the topic How to Develop a Boot Loader, you will have two different binary images for the boot loader: a .bin file and an .nb0 file. The Microsoft Windows® CE binary image data format (.bin) file is the most common format for Windows CE binary images. It is a binary file that consists of a number of individual records with associated per-record bookkeeping data. The format is convenient for minimizing the amount of data to be downloaded to the target device by removing the need to pad between records. For more information about the .bin file format, see Windows CE Binary Image Data Format (.bin). 我使用的是ADS开发的bootloader,这个bin文件不存在什么段的问题吧,应该和微软不一样的,全局变量的问题在哪里呢?但是现在造成偶尔不能启动是什么原因呢?最后发现又回到了原点。看来ADS下的bin文件格式也要搞清楚才行哦。 nk.bin文件格式开始7个字节为 42 30 30 30 46 46 0A 即“B000FF\x0A”,以次来判别文件类型。接下来4字节(DWORD)表示ImageStart, 4字节表示ImageLength如7字节后的8字节分别为:00 00 00 60 9C FA 33 01则表示ImageStart=0x60000000, ImageLength=0x0133FA9C接下来按Record格式:4字节start, 4 字节Length, 4字节CheckSum, Length字节的数据从Record[0]一直到Record[n]. 最后一条Record的start+Length = ImageStart+ImageLength ÷÷NK.bin与NK.nb0的区别÷÷ 在config.bib文件中,有如下三个设置: 首先,NK.BIN中的内容是被压缩过的,NK.NB0中的内容是没有压缩的。 /////////// Viewbin是微软提供的一个命令行工具,在WinCE6.0中,可以在"\WINCE600\PUBLIC\COMMON\OAK\BIN \I386"找到他。Viewbin工具可以用来查看NK.bin文件。它可以从NK.bin中获得这个NK image的大小,运行的起始地址等。还能查看到里面所包含的模块,应用程序及相关的信息。 //////如何导出NK.bin中的内容/////////////////////// 需要的工具:1.viewbin和cvrtbin:这两个是PB自带的工具,在\PUBLIC\COMMON\OAK\BIN\I386目录下. 2.dumprom:网上下载的.
第一步:用用viewbin程序打开NK.bin找出相关数据 我把工具和文件放在了同一文件夹里,即F:\wince F:\wince>viewbin NK.bin Image Start = 0x00220000, length = 0x01818324 Start address = 0x00227378 Checking record #167 for potential TOC (ROMOFFSET = 0x80000000) Found pTOC = 0x81a366a4 ROMOFFSET = 0x80000000 Done.
第二步:用cvrtbin程序生成后缀为nb0的文件 把刚才找出起始地址及文件长度两组数据,分别对应填入下面命令中。 即:cvrtbin.exe -r -a 0x00220000 -l 0x01818324 -w 32 nk.bin 这样就生成nk.nb0文件
第三步:导出NK.nb0文件中的内容 由NK.bin生成NK.nb0之后,在目录下再随便新建一个文件夹用来保存nk.nb0导出的文件,比如cefiles,然后运行: dumprom NK.nb0 -d cefiles 这样,就在cefiles文件夹中生成了nk.bin中的各个文件。 |


