折腾了一天的MULTI-BIN,最后发现PXA270&&K9K8G08不能正常使用MULTI-BIN。使用MULTI-BIN后,虽然系统启动快很多,但运行时很不稳定,GWES.exe和Device.exe等系统组件,总是不规律的出现Data Abort。从现象看起来,似乎跟网卡驱动有一点关系,如果不加网卡驱动,还是相当不错的,一旦加上网卡驱动,就极不正常了。所以,只能再改回去,无奈啊。
PXA270&&K9K8G08上双系统的支持是没有问题了,NAND FLASH的驱动也搞定,工作得还算稳定。今天又把这一部分移植到WinCE6.0上,并最终实现了WinCE5.0、WinCE6.0和Linux共存,通过外部按键选择进入BLOB还是EBOOT,如果启动了EBOOT,则再根据外部按键判断是启动WinCE5.0还是WinCE6.0。
三系统的实现是基于双系统基础之上的,Linux部分依然保持原样。修改EBOOT,在其中加入获取外部按键的状态的功能,并支持将WinCE5.0和WinCE6.0的NK,烧写到NAND FLASH的不同区域,启动时根据外部按键的状态,选择加载WinCE5.0或WinCE6.0的NK,剩下的NAND FLASH空间由WinCE5.0和WinCE6.0公用。实践证明,除了启动慢一点外,运行时相当稳定。这也算实现了NAND FLASH的价值,1GB,怎么用都行啊。还想着划出一部分给Linux用,不知有没有实现的可能。
K9K8G08的FLASH空间分布如下图所示:
WinCE5.0中NAND FLASH如下图所示:
WinCE6.0中的NAND FLASH如下图所示:
一变二,二变三,理论上四个、五个系统也都可以共存吧,只要FLASH的存储空间够大。突然想到了M8,如果存储器够大是不是可以给它装iPhone的系统,装Windows Mobile的系统,还可以任意切换,想用哪个用哪个。有点BT了,还好没有M8。
WinCE5.0和WinCE6.0双系统启动的支持,说明他们的BOOTLOADER可以共用,二进制兼容,但源代码部分需要做些修改,有移植WinCE6.0的同学可以参考一下。WinCE5.0、6.0双系统的演示视频下载,有兴趣的同学可以看看。