请问eboot下载的NK.BIN最终被烧写到NAND中是不是解压成了NK.NB0?

firstshine   2009-9-25 13:47 楼主
如题,我感觉友善的SUPERVIVI是把NK.BIN解压成了NK.NB0,再烧写到NANDFLASH。通过NAND启动的时候,其NBOOT只是根据TOC简单的把NK.NB0搬到SDRAM,就跳转到SDRAM中启动镜像了。从NAND启动的时候,我没看到运行EBOOT的过程。因为没有EBOOT的源码,只能猜测,看的有点头大,请大家指点。为什么最终下载到NAND中的镜像不是NK.BIN而是NK.NB0,这样不是很浪费空间吗?

回复评论 (40)

.bin烧进去时就顺便转成nb0了,
只是这个nb0的大小和你pb产生出来的不见得一样大

换句话说,会自动转换和重组成一个比bin略大的nb0
一般经验大约多数百K到1MB
点赞  2009-9-25 14:02
那为什么不下载NK.BIN内?毕竟NK.NB0比NK.BIN要大很多啊。
点赞  2009-9-25 14:06
不是的,你误会了
你Pb产生出来的nb0大小 是你设定的config.bib
而用eboot下载bin他会还原成nb0
但这个nb0的大小和你pb的nb0大小是不一样的
点赞  2009-9-25 14:08
NB0文件拷贝到SDRAM就可以直接运行的,bin文件则需要解码才可以运行,如果可以修改EBoot的话,可以烧bin文件到Flash,读出来的时候相应解码即可。
一般都是烧写NB0文件,然后读出直接运行,比较方便。
点赞  2009-9-25 14:11
NK.nb0 是NK的二进制映像。直接可写入Flash.
NK.BIN 要按NK中的信息规则解开后,才可写入Flash.
点赞  2009-9-25 14:15
引用: 引用 3 楼 harktrip 的回复:
不是的,你误会了
你Pb产生出来的nb0大小 是你设定的config.bib
而用eboot下载bin他会还原成nb0
但这个nb0的大小和你pb的nb0大小是不一样的

但是至少和NK.BIN比起来还是要大很多的吧。
点赞  2009-9-25 14:23
引用: 引用 4 楼 garyliu1104 的回复:
NB0文件拷贝到SDRAM就可以直接运行的,bin文件则需要解码才可以运行,如果可以修改EBoot的话,可以烧bin文件到Flash,读出来的时候相应解码即可。
一般都是烧写NB0文件,然后读出直接运行,比较方便。

我想也是因为方便吧。如果把NK.BIN烧到NAND中,会多个解压的过程。而且NAND是按块读的,不想从USB下载来的方便。
点赞  2009-9-25 14:26
看来大家都是烧NK.NB0的,那论坛里面有没有人烧NK.BIN的,说说这样做的话,该如何解压NK.BIN啊!
点赞  2009-9-25 14:28
引用: 引用 8 楼 wjf_zjut 的回复:
看来大家都是烧NK.NB0的,那论坛里面有没有人烧NK.BIN的,说说这样做的话,该如何解压NK.BIN啊!

解压缩是非常简单的,只需要对bin格式稍有了解即可。
整个bin是以块为单位的,每个块有个块头,标明了该块数据的起始地址和长度。
所要做的大致可以分为两步
第一步是遍历整个bin文件,找出最低地址和最高地址,两者相减就是nb0的长度
第二步是依次将每个记录按照地址高低顺序依次写入Flash。
要注意的有两点:
第一,各个块未必紧密相连,之间可能有一些gap,这些gap按照flash的特性,需要予以全1填充;
第二,每个块有八个字节的校验码,在往flash写的时候,这八个字节需要丢弃。
点赞  2009-9-25 14:34
引用: 引用 8 楼 wjf_zjut 的回复:
看来大家都是烧NK.NB0的,那论坛里面有没有人烧NK.BIN的,说说这样做的话,该如何解压NK.BIN啊!

你想直接把nk.bin烧到flash,然后在系统每次启动的时候读出再解压到RAM?
烧的时候解压,启动的时候直接用;直接烧录,启动的时候解压,你觉得哪种方式更好?我觉得都会选择第一个吧。
另外EBOOT解压BIN文件方式可以参考
EBOOT通过bin文件形式读取、下载LOGO
点赞  2009-9-25 14:42
引用: 引用 9 楼 codewarrior 的回复:
引用 8 楼 wjf_zjut 的回复:
看来大家都是烧NK.NB0的,那论坛里面有没有人烧NK.BIN的,说说这样做的话,该如何解压NK.BIN啊!

解压缩是非常简单的,只需要对bin格式稍有了解即可。
整个bin是以块为单位的,每个块有个块头,标明了该块数据的起始地址和长度。
所要做的大致可以分为两步
第一步是遍历整个bin文件,找出最低地址和最高地址,两者相减就是nb0的长度
第二步是依次将每个记录按照地址高低顺序依次写入Flash。
要注意的有两点:
第一,各个块未必紧密相连,之间可能有一些gap,这些gap按照flash的特性,需要予以全1填充;
第二,每个块有八个字节的校验码,在往flash写的时候,这八个字节需要丢弃。

研究一下
点赞  2009-9-25 14:50
引用: 引用 9 楼 codewarrior 的回复:
引用 8 楼 wjf_zjut 的回复:
看来大家都是烧NK.NB0的,那论坛里面有没有人烧NK.BIN的,说说这样做的话,该如何解压NK.BIN啊!

解压缩是非常简单的,只需要对bin格式稍有了解即可。
整个bin是以块为单位的,每个块有个块头,标明了该块数据的起始地址和长度。
所要做的大致可以分为两步
第一步是遍历整个bin文件,找出最低地址和最高地址,两者相减就是nb0的长度
第二步是依次将每个记录按照地址高低顺序依次写入Flash。
要注意的有两点:
第一,各个块未必紧密相连,之间可能有一些gap,这些gap按照flash的特性,需要予以全1填充;
第二,每个块有八个字节的校验码,在往flash写的时候,这八个字节需要丢弃。

受教了
点赞  2009-9-28 22:19
点赞  2009-9-29 09:21
一般的不是eboot 的bootloader ,都是把 NK.BIN 转化成NK.NB0 然后写到NANDFLASH 中,eboot 是把NANDFLASH格式化为 BINFS ,然后写NK.BIN ,
点赞  2009-10-8 15:35
.bin烧进去时就顺便转成nb0了
点赞  2009-10-9 10:46
看来大家都懂啊
点赞  2009-10-9 17:39
大部分如此
点赞  2009-10-9 18:02
有没有人相信说明下,如何解析NK.BIN的啊?谢谢了啊~
点赞  2009-10-9 18:16
引用: 引用 18 楼 hao507 的回复:
有没有人相信说明下,如何解析NK.BIN的啊?谢谢了啊~

看代码,bootpart.cpp,在wince里面。
点赞  2009-10-10 10:03
123下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复