NK.bin与NK.nb0的区别

NK.bin与NK.nb0的区别 nk.bin和nk.nb0都是CE的镜像。然而,我们在下载的过程中常常会遇到,有时候下载nk.bin,有时确是下载nk.nb0,这两者到底有什么区别呢? (一) 文件的存储格式 bin是一种二进制镜像格式,以片断(section)为单位组织数据,每个片断都包括一个头,头里指定了起始地址,长度,校验值。Platform Builder调用工具将WINCE内核所有文件以bin格式合并成一个文件,默认文件名为nk.bin nb0格式是原始的二进制镜像,它不包括头,一般情况下将内核下载到设备的RAM中运行都采用nb0格式。要生成nbx格式的文件,需要在相关.bib(config.bib)文件中确定如下值:ROMSTART、ROMWIDTH、ROMSIZE 注:在config.bib文件中,有如下三个设置: ROMSTART=xxxx ROMWIDTH=xxxx ROMSIZE=xxxxxx 这3个变量必须被赋值. (二)内容 NK.BIN中的内容是被压缩过的,NK.NB0中的内容是没有压缩的。两者大小的区别是因为在生成过程中BIN会将你设定的后面的NULL自动去掉,而NB0就不会。NB0的大小就是第三个变量ROMSIZE所设置的大小。由于nk.nb0是非压缩的数据,里面的数据就是NK展开以后在内存里面的数据。而nk.bin是有压缩的数据,里面的数据是压缩以后类似于成块形的数据,被loader拷贝到内存以后没有区别。 由于bin文件需要解压,因而其下载方式也不一样, 通常,通过串口直接下载用nb0,pb下载用bin。 (三)下载和烧录 NK.bin和NK.nb0都可下载到RAM中并直接烧到FLASH上。NK.nb0是代码镜像,可以直接跳转到其入口执行。如果下载到RAM的是NK.bin文件因为是压缩的,显然需要先通过BootLoader进行先解压才能往NAND Flash中烧写。 其实也可以做成BIN直接烧到Flash上,而nk.bin是Microsoft binary image格式的文件,必须按其格式定义解开到其指定的地址空间的位置才能执行。起动的时候Load出来后再解压,但这样会加长起动时间,这种方法会用在Flash空间不够的情况。 在命令模式里可以将生成的NK.bin转换出NK.nb0。介绍方法如下: cvrtbin [options] [filename]   -s 从bin文件中产生sre文件   -r 从bin文件中产生rom文件   -a rom文件的起始地址   -w 总线的宽度   -l rom文件的大小   这个工具可以和viewbin工具一起使用,将NK.bin文件转换成NK.nb0。   首先通过:viewbin -rec nk.bin命令获得NK.bin的起始地址和大小 然后通过下面的命令:   cvrtbin -a 0x86600000 -l 0x015A29CC -w 32 -r NK.bin   将NK.bin转换成NK.nb0。起始地址为0x80100000,大小是0x028e9b90,总线宽度为32bit,最后输出NK.nb0. 最后生成的NK.nb0的大小一般都大于32M,大致相当于Debug版本生成的NK.bin大小。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值