在实际项目中需要用到在一个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文件,还需修改以下配置文件:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5Ca4lDR1MTN5ITO5AzMx8FMvwlNvw1NwETMwIzLcRnbl1GajFGd0F2LcRXZu5ibkN3YukGavw1LcpDc0RHaiojIsJye.gif)
图1 修改配置
上图为修改config-1x07.bib文件中Boot from RAM中的ROMSIZE=01499999(20.6M)
图2 注释
上图为修改startup.s,将其115行注释掉
完成上面两个步骤,执行Sysgen即可生成nk.nb0。
加入Usb-device驱动
驱动目录为Ep93xx\Src\Drivers\Usbfn,
图3 加载usb驱动
加入usb-device驱动
图4 加载usb 功能
加入USB Function Clients下的三种方式
图5 加载ActiveSync
加入连接工具ActiveSync的支持
图6 修改注册表信息
在platform-1x07.reg中IF BSP_EP93XX_USB条件之后加入以下内容
IF BSP_EP93XX_USB_SLAVE
;USB - ISP1582-based Slave Device Driver
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\USBSlave]
"Prefix"="UFN"
"Dll"="USBSlave.dll"
; "Index"=dword:1
; "Order"=dword:3
"BusIoctl"=dword:2a0048
"IClass"=multi_sz:"{E2BDC372-598F-4619-BC50-54B3F7848D35}=%b","{6F40791D-300E-44E4-BC38-E0E63CA8375C}=%b"
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"="Serial_Class"
;[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
; "DefaultClientDriver"="Mass_Storage_Class"
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"FriendlyName"="Mass Storage"
; idVendor must be changed. 045E belongs to Microsoft and is only to be used for
; prototype devices in your labs. Visit http://www.usb.org to obtain a vendor id.
"idVendor"=dword:045E
"Manufacturer"="NXP SEMI"
"idProduct"=dword:FFFF
"Product"="Pvontek PVT-805S SBC"
"bcdDevice"=dword:0
;[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
; "DefaultClientDriver"="RNDIS"
;Add for RNDIS support
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\RNDIS]
"UseActiveSyncIds"=dword:1
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\RNDIS]
"Dll"="rndisfn.dll"
"FriendlyName"="Rndis"
"idVendor"=dword:045E
"Manufacturer"="Generic Manufacturer"
"idProduct"=dword:0301
"Product"="Generic RNDIS"
"bcdDevice"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Serial_Class\Unimodem]
"Tsp"="Unimodem.dll"
"DeviceType"=dword:0
"FriendlyName"="USB Serial port"
[HKEY_CURRENT_USER\ControlPanel\Comm]
"Cnct"="UsbSerial"
"AutoCnct"=dword:1
[HKEY_CURRENT_USER\Comm\RasBook\UsbSerial]
"Entry"=hex:\
08,00,40,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,\
ff,00,00,00,00,00,00,00,00,00,01,00,00,00,28,ed,04,0c,20,10,f2,02,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,05,00,00,7a,00,00,00,78,ee,04,0c,\
b5,01,00,00,00,00,00,00,00,00,00,00,9c,ed,04,0c,00,00,00,00,78,ee,04,0c,04,\
5c,f2,02,a4,01,00,00,4f,01,00,00,b5,01,00,00,7a,00,00,00,bc,ed,04,0c,00,00,\
00,00,98,ee,04,0c,04,5c,f2,02,a4,01,00,00,fc,ed,04,0c,d8,ee,04,0c,70,19,0e,\
00,00,00,00,00,fc,a3,f2,02,00,00,00,00,00,00,00,00,ab,00,00,00,d4,a5,f2,02,\
88,00,00,00,d8,ee,04,0c,fc,ed,04,0c,8c,f0,04,0c,d8,ee,04,0c,04,5c,f2,02,a5,\
01,00,00,4f,01,00,00,b4,01,00,00,88,00,00,00,01,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,01,00,00,00,00,00,ff,00,ac,1e,0e,00,01,00,00,00,70,19,0e,\
00,00,00,00,00,fc,a3,f2,02,a0,1e,0e,00,bc,ef,04,0c,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,64,00,69,00,72,\
00,65,00,63,00,74,00,00,00,00,00,f0,52,01,00,5a,17,05,0c,5a,17,05,0c,0f,00,\
00,00,a0,03,55,00,53,00,42,00,20,00,53,00,65,00,72,00,69,00,61,00,6c,00,20,\
00,70,00,6f,00,72,00,74,00,00,00,00,00,90,6c,f8,03,c0,70,f2,02,00,00,00,00,\
d4,62,f2,02,00,00,00,00,a0,1e,0e,00,00,00,00,00,00,00,00,00,00,00,00,00,28,\
f4,04,0c,00,00,00,00,1c,f0,04,0c,fb,de,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,ac,1e,0e,00,01,00,00,00,c2,56,d7,a3,00,ef,04,0c,f8,ee,04,0c,18,6d,f8,\
03,f0,84,f9,03,44,59,08,00,89,01,00,00,00,00,00,00,5a,17,05,0c,00,00,00,00,\
00,00,00,00,f4,fe,01,00,bc,ef,04,0c,00,00,00,00,00,00,00,00,00,00,00,0c,5a,\
17,05,0c,00,00,00,00,c2,56,d7,a3,00,00,00,00,44,59,08,00,00,00,00,00,60,4f,\
01,7c,01,00,00,00,01,00,00,00,0f,00,00,00,00,00,00,00,89,01,00,00,60,4f,01,\
7c,00,00,00,00,d0,37,01,7c,00,00,00,00,5a,17,05,0c,00,00,00,00,d0,37,01,7c,\
01,00,00,00,8e,fe,f1,e3,20,00,00,00,00,00,00,00,74,54,02,00,00,00,00,00,00,\
00,00,00,b4,53,01,00,c0,a2,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,a0,1e,0e,00,20,10,f2,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,89,01,00,00,60,4f,01,7c,00,00,00,00,\
00,00,00,00,00,00,00,00,2c,53,01,00,0f,00,00,00,c8,bd,01,00,00,00,00,00,00,\
00,00,00,20,10,f2,02,d0,9d,0e,08,f0,ff,ff,ff,90,eb,0e,00,5a,17,05,0c,81,00,\
00,00,90,27,1a,08,f0,ef,04,0c,c4,e3,07,00,60,4f,01,7c,89,01,00,00,00,00,00,\
00,5a,17,05,0c,90,27,1a,08,0d,00,00,00,81,00,00,00,5a,17,05,0c,5a,17,05,0c,\
80,4e,01,7c,64,f1,07,00,d2,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ab,\
00,00,00,4f,01,00,00,00,00,00,00,52,01,00,00,d2,01,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,ab,00,00,00,4f,01,00,00,00,00,00,00,00,00,00,00,ab,00,00,\
00,74,00,00,00,8e,fe,f1,e3,0d,00,00,00,5a,17,05,0c,18,6d,f8,03,30,75,f9,03,\
4f,01,00,00,0d,00,00,00,68,f9,01,00,b4,f0,04,0c,b8,f0,04,0c,0d,00,00,00,80,\
f0,07,00,0d,00,00,00,00,00,00,00,5a,17,05,0c,00,00,00,00,00,00,00,00,f4,fe,\
01,00,b8,f0,04,0c,b0,f0,04,0c,91,00,00,00,00,00,00,00,5a,17,05,0c,00,00,00,\
00,c2,56,d7,a3,00,00,00,00,80,f0,07,00,00,00,00,00,80,4e,01,7c,5a,17,05,0c,\
4f,01,00,00,0f,00,00,00,52,01,00,00,0d,00,00,00,80,4e,01,7c,81,00,00,00,d0,\
37,01,7c,00,00,00,00,90,1d,05,00,00,00,00,0c,b8,5f,ec,83,0f,00,00,00,00,00,\
00,00,e4,ca,ec,83,80,5f,02,82,50,96,cc,83,b8,5f,ec,83,0f,00,00,00,38,fe,00,\
f0,5c,f1,04,0c,40,eb,20,80,0f,00,00,00,90,1d,05,00,c4,b3,00,f0,38,f4,04,0c,\
4e,00,00,00,00,00,00,00,00,00,00,00,40,49,01,7c,28,f3,04,0c,24,3c,20,80,f1,\
ec,ff,ff,00,00,00,00,00,00,00,00
"DevCfg"=hex:\
30,00,00,00,78,00,00,00,00,01,00,00,00,4b,00,00,00,00,08,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00
ENDIF
双系统烧写及启动流程: