天天看点

Uboot引导WinCE 和.NetMicroFramework双系统

在实际项目中需要用到在一个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文件,还需修改以下配置文件:

Uboot引导WinCE 和.NetMicroFramework双系统

图1 修改配置

上图为修改config-1x07.bib文件中Boot  from  RAM中的ROMSIZE=01499999(20.6M)

Uboot引导WinCE 和.NetMicroFramework双系统

图2 注释

上图为修改startup.s,将其115行注释掉

完成上面两个步骤,执行Sysgen即可生成nk.nb0。

加入Usb-device驱动

驱动目录为Ep93xx\Src\Drivers\Usbfn, 

Uboot引导WinCE 和.NetMicroFramework双系统

图3 加载usb驱动

加入usb-device驱动

Uboot引导WinCE 和.NetMicroFramework双系统

图4 加载usb 功能

加入USB Function Clients下的三种方式

Uboot引导WinCE 和.NetMicroFramework双系统

图5 加载ActiveSync

加入连接工具ActiveSync的支持

Uboot引导WinCE 和.NetMicroFramework双系统

图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

双系统烧写及启动流程:

Uboot引导WinCE 和.NetMicroFramework双系统