在实际项目中需要用到在一个Flash里存储两个系统,通过选择来启动其中一个系统,该文章主要描述如何用uboot来启动WinCE和.Net Micro Framework 双系统
由于WinCE中加入中文字库、MFC、.NET Compact Framework 3.5、Usb Device等支持,Image文件较大,需裁剪,Flash空间为32M,MF系统也需占用一定的空间,经过验证,在保证MF空间足够,WinCE系统能正常启动的前提下,WinCE烧写的起始地址为Flsah上的60x00000,解决的关键技术记录如下。
中文字库的压缩
定制中文系统时,NK总是比英文大10M左右,启动时在bootloader中将内核Copy到内存时也花时间,同时也占用了很多内存,留给系统和应用的内存就少了10M左右。总结如下,如何减少中文字库大小。核心思想是将默认选择的中文字体SimSun & NSimSun (SYSGEN_FONTS_SIMSUN)替换成(SYSGEN_FONTS_SIMSUN_2_50)达到体积的缩小。
减少中文字库大小
1.先打开目标的工程文件,单击“Platform”菜单,再单击“Settings…”,执行“clear” ,
Locales:将”英文(美国)”“中文(中国)”打勾
Default languare:选择“中文(中国)”
完成第1步后,工程中采用默认的是新宋字体
2.回到Catalog,选择“Core OS”—>“International”—>“Locale Spectific Support”
—> “Chinese[Simplified]”
▲ SimSun & NSimSun (Subset 2_50):字体大小是3M左右,WINCE选择Subset 2_50是最合适的,所以用(Subset 2_50)中文字体替换原来的中文字体,选择SimSun & NSimSun (Subset 2_50),按右键添加该组件即可,这样就会把原来的字体替换掉。这样对中文显示又没有影响又达到内核瘦身的效果,必须选上;
补充:在没有压缩字体的情况来,默认选择的新宋字库大小是10M多,文件为simsun.ttc,若选择Subset 2_50版本,文件为simsun_2_50.ttc,字体大小是将近3M,也是对WinCE体积进行裁剪关键所在。
▲ GB18030 Data Converter:汉字编码标准集转换器,必须选上
3.重新进行Sysgen,这样做出来的系统,既能正常显示中文,又不用担心NK体积过大。
Uboot中启动程序的命令有bootm和go,MF和 CE要用go命令启动系统
双系统移植过程中遇到以下几个问题:
运行程序闪:uboot与tinybooter冲突,使用tinyclr.bin解决此问题
双系统切换导致CE无法运行:.NetMicroFramework的Flash空间应为6M,使用8M的image导致MF配置信息无法修改:在烧写tinyclr的基础之上,在601xxxxx地址上烧写TinyBooterDecompressor.bin,在601x0000地址上烧写er_config(flash版),修改配置信息需启动TinyBooterDecompressor.bin。
注意:用MFDeploy工具修改配置信息时,必须先断开mincom连接。
WinCE系统映像生成
1. nk.bin映像生成
nk.bin是用于eboot引导的映像(用于单系统WinCE):用PB打开EDB9315-bin.pbxml文件,执行Sysgen即可生成.nk.bin。
2. nk.nb0映像生成
nk.nb0是用于uboot引导的双系统映像(WinCE与MF),用PB打开EDB9315-nk0.pbxml文件,还需修改以下配置文件:
图1 修改配置
上图为修改config-1x07.bib文件中Boot from RAM中的ROMSIZE=01499999(20.6M)
Uboot引导WinCE 和.NetMicroFramework双系统
最新推荐文章于 2021-09-06 09:18:20 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)