一,EBOOT菜单和USB下载问题解决
按上一篇的地址烧写STEPLDR.nb1和EBOOT.nb0。连接好系统的串口调式线,打开DNW,系统上电,我们将可以在DNW界面看到EBOOT的菜单。
- 0) IP address: 192.168.1.6
- 1) Subnet mask: 255.255.255.0
- 2) DHCP: Disabled
- 3) Boot delay: 5 seconds
- 4) Reset to factory default configuration
- 5) Startup image: DOWNLOAD NEW
- 6) Program disk image into SmartMedia card: Enabled
- 7) Program DM9000 MAC address (10:23:45:67:89:AB)
- 8) Kernel Debugger: ENABLED
- 9) Format Boot Media for BinFS
- B) Mark Bad Block at Reserved Block
- D) Download image now(USE TFTP)
- E) Erase Reserved Block
- F) Low-level format the Smart Media card
- L) LAUNCH existing Boot Media image
- R) Read Configuration
- U) Download image now(USE USB)
- W) Write Configuration Right Now
由于自己的系统没有网卡.所以只能通过USB功能下载内核镜像。按下'U'后,DNW的USB指示并没有连接,这和之前移植Uboot遇到的相同的问题。主要分析其USB时钟的设置和USBDEVICE 的使能管脚。参考电路图USB DEVICE 的PORT的D+接口连接到了GPG9.所以我们要在程序中将设置GPGDATE使GPG9为1 ,rGPGDAT |= ((1<<9) 。 重新上电启动后DNW显示USB连接正常。
二、内核的烧写
- 擦除整个nandflash;
- 烧写STEPLDR.nb1;
- 烧写EBOOT.nb0;
- 重新上电;
- 进入EBOOT菜单,选择'5';
- 选择'F' 格式化nandflash;
- 选择'9'格式化BINFS分区;
- 选择'U'准备从USB下载内核;
- NK.bin;
烧写完成后将自动启动WINCE6.0进入WINCE的界面。
三、NK.bin和NK.nb0
1, 文件的存储格式 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个变量必须被赋值.
2,内容 NK.BIN中的内容是被压缩过的,NK.NB0中的内容是没有压缩的。两者大小的区别是因为在生成过程中BIN会将你设定的后面的NULL自动去掉,而NB0就不会。NB0的大小就是第三个变量ROMSIZE所设置的大小。由于nk.nb0是非压缩的数据,里面的数据就是NK展开以后在内存里面的数据。而nk.bin是有压缩的数据,里面的数据是压缩以后类似于成块形的数据,被loader拷贝到内存以后没有区别。 由于bin文件需要解压,因而其下载方式也不一样, 通常,通过串口直接下载用nb0,pb下载用bin。
3,下载和烧录 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大小。
原文地址:http://blog.csdn.net/qq236106303/article/details/7071585