微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Windows CE 6.0 Multi-bin的设计与实现

Windows CE 6.0 Multi-bin的设计与实现

时间:03-06 来源:电子技术应用 点击:

4 Multi-bin的实现

Multi-bin是把内核映像分为"最小内核"(xipkernel.bin)与"系统其他文件"(本文中的nk.bin)。在系统启动时加载的是BinFS分区上的xipkernel部分,它位于xip.bin的起始位置。

4.1 修改Config.bib file的内存段

添加XIPKERNEL区域并且将它的存储属性设置为RAMIMAGE。XIPKERNEL是一个并不存储NK的文件,这里可以将其看成最小系统。设置NK区域的存储属性为NANDIMAGE,这将会阻止NK地址空间被分配为RAM地址。CHAIN是实现Multi-bin的必须部分,其作用是通知系统各bin文件的位置。

当加载带有BinFS的映像时,Nand Flash设备上的Windows CE kernel(内核)重定位到RAM区域,当系统访问该区域时,BinFS负责访问Nand Flash设备上相对应的位置,并返回数据给系统。实际就是在Nand Flash设备上面实现了XIP(execute In place)的功能。

XIPKERNEL文件至少要包括下面的模块:

Nk.exe;Kernel.dll;Coredll.dll;K.coredll.dll;Oalioctl.dll;
Filesys.dll;Fsdmgr.dll;Mspart.dll
Romfsd.dll;Binfs.dll;Default.fdf or boot.hv(here choose
boot.hv);Fpcrt.dll (ARM-only)
Ceddk.dll (if required by your flash driver);Smflash.dll
(your flash driver)

将上述模块添加进Config.bib中的Moudle段,加入方法如下:

MODULES
nk.exe $(_FLATRELEASEDIR)\oal.exe
XIPKERNEL SHZ
kernel.dll $(_FLATRELEASEDIR)\kern.dll
XIPKERNEL SHZ
……

4.2 修改Config.bib file的配置段部分

在Config.bib文件中的CONFIG下指定RAM_AUTOSIZE=OFF,ROM_AUTOSIZE=OFF,同时标识出CHAIN区域起始地址XIPSCHAIN的值。这个值要和MEMORY 段指定的值相匹配。

4.3 在注册表设置中添加相应的注册表键值

在本文中,XIP.bin映像文件被存放到Nand Flash存储设备上,为了让其支持BinFS文件系统,需要在注册表中的;HIVE BOOT SECTION和;END HIVE BOOT SECTION两条语句之间加入键值。

下面给出Nand Flash存储设备在注册表中的键值,其作用是将BinFS设定为默认的文件系统。

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\
NANDFLASH]
"DefaultFileSystem"="BINFS"
"PartitionDriver"="mspart.dll"
"MountHidden"=dword:1
"MountAsROM"=dword:1
"Folder"="NandFlash"
"Name"= "FLASH Disk Block Device"
[HKEY_LOCAL_MACHINE\System\StorageManager\BinFS]
"FriendlyName"="BIN Filesystem"
"Dll"="binfs.dll"
"Paging"=dword:1

4.4 生成与调试

生成系统映像文件,如图4所示。

选择xip.bin文件并用EBOOT将其下载到硬件平台中,启动系统。经过测试,系统的启动时延缩短到8 s左右。打开"我的设备",双击控制面板中的系统属性,可以看见系统的可用内存增大为61 020 KB。

本文提出一种普遍适用于Windows CE 6.0操作系统的Multi-bin技术。该技术的实现具有一定的通用性,不仅在Windows CE 6.0操作系统下实现了减少开机启动时延,而且节省了可观的内存空间,提高了用户质量体验(QoS)。基于本文提出的原理和方法对使用Windows CE操作系统的同类硬件平台(如ARM9、ARM11)的开发也具有一定的参考价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top