WinCE6.0BSP移植(二)

一,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大小。

你可能感兴趣的:(WinCE6.0BSP移植(二))