基于WinCE的嵌入式系统注册表的研究

发布者:快乐的成长最新更新时间:2012-03-21 来源: 微计算机信息关键字:Windows  注册表  HIVE  信息存储 手机看文章 扫描二维码
随时随地手机看文章

0 引言

嵌入式操作系统Windows CE和桌面操作系统一样使用注册表(Registry)来保存应用程序、驱动程序和用户的设定以及其他一些配置信息,通常还存储着操作系统调用程序的状态信息,所以注册表起着非常重要的作用,它是Windows CE操作系统的核心。在没有注册表的情况下,操作系统将不能获得必需的信息来运行和控制附属的设备和应用程序及正确响应用户的输入[1][2]。

1 Windows CE注册表简介

Windows CE的注册表结构和其他版本的Windows操作系统的注册表结构是类似的。注册表是一个包括主关键字子树的集合,它和文件目录树一样具有层次结构。每个子树又由更低层的子树、键以及键值组成。键相当于文件系统的目录,每个键包含若干键值项。而键值项相当于文件系统末端的文件,它由键值名、数据类型和键值组成。键值就是注册表存储的数据。

Windows CE对注册表的值有一些限制:键或者键值项的名字最多为255个字符,数据最大为4K,键嵌套层次最多为16层。所以在使用注册表编程时,要尽量使键和键值项占用最小的空间。另外,需要注意的是,在注册表中,键值项比键值占用更大的存储空间。

Windows CE注册表包括4个根键[2],如表1所示。

 

根键名

键值内容

HKEY_LOCAL_MACHINE

硬件及驱动程序配置数据

HKEY_CURRENT_USER

用户配置数据

HKEY_CLASSES_ROOT

OLE和文件类型匹配配置数据

HKEY_USERS

适用于所有用户的存储数据

表1 Windows CE注册表根键

Table1 The root key of Windows CE register

2 Windows CE注册表类型

由于嵌入式系统的特点,一些嵌入式设备是没有外存的。因此Windows CE的注册表提供了两种实现方式:基于对象存储的注册表(RAM-Based Registry)和基于Hive的注册表(Hive-Based Registry)[3]。我们可以在Windows CE中使用任何一种注册表,注册表类型对于用户和应用程序来说都是透明的。基于RAM的注册表在经常热启动的设备上是非常高效的,而在经常冷启动的设备上,性能却很令人失望,最适合有电池后备的个人电子消费类产品。对于经常冷启动或者不怎么使用热启动方式的设备来说,基于hive的注册表是非常高效的,最适合永久性的存储器和多用户环境下使用。

2.1 基于RAM的注册表

顾名思义,基于RAM的注册表把整个注册表作为一个对象存储堆放在RAM中。这就意味着如果系统中断对RAM的电池供电,对注册表的所有改动都会丢失。也就是说,它们的有效性和RAM中数据的有效性是一致的。但是使用RAM注册表,对注册表的读写访问操作非常的快速高效。在旧版本的Windows CE中,大量应用了基于RAM的注册表。如果有外存且需要经常冷启动的设备采用基于RAM的注册表,则需要在系统断电的时候对注册表进行保存,等系统再次启动时对保存的注册表进行还原。

2.2 基于HIVE的注册表

HIVE系统包含了不属于任何用户信息的系统设置。HIVE系统由OEM层调用。通常hive文件为System.hv,但是它的存储位置可能随着平台而变化。这种存储方式使系统在断电前后无须备份和恢复注册表数据,这使得系统冷启动时速度更快。

基于HIVE结构的注册表被分为两部分存储:系统HIVE,存储所有的系统数据;用户HIVE,存储对特定用户的所有相关数据。一个多用户系统将包括几个用户HIVE。当一个用户登录时,相应的用户HIVE就会被激活,当用户退出时,相应的用户HIVE也会被撤销。所有的用户HIVE都用 USER.hv来命名,并且被放在不同的用户目录中,每个目录都是以它属于的用户的用户名来命名的。

注册表中的HKEY_LOCAL_MACHINE\init\BootVars下的键值项ProfileDir存储着所有用户目录的位置。 HKEY_LOCAL_MACHINE\init\BootVars下的键值项SystemHive存储着系统HIVE的文件路径和文件名。[page]

BOOT HIVE存储只用于系统启动时的系统设置。BOOT HIVE从ROM中读出并用于启动驱动程序和相关的文件系统。这个文件系统用于启动系统HIVE文件。当系统HIVE启动后,BOOT HIVE将被终止。当系统HIVE有效时,启动过程中被修改的注册表数据将被存放于系统HIVE中。但是BOOT HIVE在ROM中的数据还保持不变。

3 HIVE注册表的实现

HIVE注册表是通过修改系统的平台文件来实现的,在工程目录下的PLATFORM.REG文件中包含了系统的启动信息,HIVE注册表的启动方式不同于普通注册表的启动方式,它需要在系统加载设备管理器前加载系统存储媒介的驱动程序,只有这样才能在加载设备管理器当中提取设备在注册表中的保存信息,达到HIVE存储的目的。下面介绍如何让系统支持HIVE

注册表中的HIVE

文件

描述

BOOT HIVE

BOOT.hv存于ROM中

包括所有

HKEY_LOCAL_MACHINE

HKEY_CLASSES_ROOT

HKEY_USERS下的数据,只是在启动时使用。启动后对它的修改将影响系统HIVE

SYSTEM HIVE

OEM-dependen

包括所有

HKEY_LOCAL_MACHINE

HKEY_CLASSES_ROOT

HKEY_USERS下的数据,包括对每个用户都一样的设备的设置

USER HIVE

USER.hv

包括所有HKEY_CURRENT_USER下的数据,包含用户定义的设置。每个用户具有不同的HIVE,当用户登录时会启动它,当退出时,会将它关闭

    表2 标准HIVE及其支持的文件

Table2 Standard HIVE and support type

 

注册表存储:

1)修改设备管理器的启动信息值

“Start DevMgr”= dword:1

此册项代表使用HIVE注册表存储系统信息

2)把系统的存储媒介驱动程序加在

“HIVE BOOT SECTION”与“END HIVE BOOT SECTION”

的注释之间,该注释被编译器选择提取之后,在系统上电后加载在设备管理器之前

3)在系统的存储媒介驱动程序上提供一个FLAG项,该项的目的是对目标数据进行逻辑运算。

“flags”= dword:1

通过以上参数的修改,系统即可支持HIVE注册表存储,该存储方式有效存储系统保存在HIVE注册表中的信息,比如触摸屏触电校验信息,系统IP地址等。经大量试验证明,该方法有效可行。

4 系统注册表修改分析

4.1 触摸屏驱动程序注册表设置

下面是本多媒体系统触摸屏驱动程序的注册表信息设置,我们在校准的时候需要在注册表中存储一些校准坐标信息:

[HKEY_LOCAL_MACHINE\ControlPanel]

     "InputConfig"= dword:3   ;3 =>键盘和触摸屏

[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]

     "DriverName"="touch:dll"

     "MaxCalError"=dword:10

"CalibrationData"="500,512 762,268 758,760 244,758 241,266 "//校准信息

Landscape

"CalibrationData"="515,503 763,748 258,749 269,255 764,255 "[page]

图1 HIVE注册表需要修改的文件

Fig.1 The file wants modified if HIVE register needs

4.2 在映像中固定IP地址

在我们自己创建的调试环境中每次启动后都需要手动修改IP后才能多人同时调试,所以要想将IP地址固定下来就要关系到注册表的修改。而关于IP地址的更改一定会反映到系统注册表中,也就是说如果能将这部分更改在定制操作系统的时候就加进去,那么当映像启动后,就具有设定好的IP地址了[4]。 

经过不断摸索,得出的结论很好,修改平台文件project.reg,在文件中添加以下内容:

[HKEY_LOCAL_MACHINE\comm\vmini1\parms\tcpip]

"defaultgateway" = multi_sz:"192.168.0.1"

"subnetmask" = multi_sz:"255.255.255.0"

"IpAddress" = multi_sz:"192.168.0.5"

"enabledhcp" = dword:0

第一个是默认网关,第二个是子网掩码,第三个是IP地址,最后一个也必须加,就是禁用DHCP,只有这样自己的设定才能生效。

     注意:注册表键值类型一定要设置好,像上面的multi_sz,dword一定要添加在前面,否则仍然没有效果。

    4.3 SD卡驱动注册表信息

SD卡是车载多媒体系统的重要外围存储设备,为灵活实现SD卡热插拔功能,使用流接口驱动模型。SD卡驱动程序以及它所使用的文件系统都是由存储管理器负责的。在存储管理器的启动过程中,很多配置信息都是从系统的注册表得到的。因此必须先创建如下SD卡注册表信息:

    [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\sdcard]

  "D11"="sdcard.d11"

  "Prefix"="SDC"

  "Index"=dword:1

  "Order"=dword:l

  "FSD"="fatfs.d11"

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDCARD]

  "Name"="SD Card"

  "Folder"= "SDCARD Storage"

5 结论

    注册表是Windows CE操作系统的核心,起着至关重要的作用,车载多媒体系统的所有驱动程序和应用程序的配置信息都被保存在注册表中,如果修改或加载不当,都将使得整个系统的一些功能不能正常使用,甚至将会导致Windows CE操作系统无法启动。本文的创新点在于提出了一种实现HIVE注册表的方法和修改注册表的思路,经大量试验证明此种思路很有效,可以用来修改更多其它需要的配置。随着我国的汽车事业的蓬勃发展,汽车导航多媒体系统有着越来越广阔的应用前景,本项目的经济效益预计在八十万元左右。

参考文献:

[1] 林涛. 嵌入式操作系统Windows CE的研究[J].微计算机信息,2006,6-2:91-93.

[2] 张冬泉等.Windows CE实用开发技术[M].北京:电子工业出版社,2006年.

[3] [美]微软公司. Microsoft Windows CE Device Driver Kit设备驱动程序开发指南[M].北京: 北京希望电子出版社,1999.

[4] 周毓林,宁杨,付林林.Windows CE.net内核定制及应用开发[M].北京:电子工业出版社.2005年.

关键字:Windows  注册表  HIVE  信息存储 引用地址:基于WinCE的嵌入式系统注册表的研究

上一篇:基于WinCE的智能终端自动升级引擎设计
下一篇:轻型PPP协议在µC/OS-II操作系统中的实现

推荐阅读最新更新时间:2024-05-02 21:58

微软下一个赚钱的硬件:头戴设备?
今年1月,微软推出了旗下首款增强现实头戴设备HoloLens,本月初微软宣布将于明年第一季度推出开发者版本,售价3000美元。最近,微软已经成功获得了HoloLens的设计专利认证。   微软HoloLens设计获得专利认证    微软HoloLens获得的专利涉及多个配件,包括镜架、镜片与显示屏。美国专利商标局近期公布了这些设计专利的持有人,他们均为微软员工:    Paul Bosveld    Nicolas Denhez    YeongKyu Yoo    Phil Frank    Young Duk Song    Henric Jentz    Aditha Adams   
[嵌入式]
微软扩大Windows嵌入式产品培训认证计划
在华南这块集中了中国70%左右电子制造业的大市场上,开源Linux阵营摆开阵仗开始挑战微软Windows Embedded OS在嵌入式市场的领导地位,如风河系统(Wind River)就在去年十二月底在深圳喜来登酒店联合其分销商和客户向业界人士大力推介Linux在嵌入式应用领域的发展趋势,着力渲染Linux的低开发成本、安全性和实时性优势,以及多少多少领先设备供应商(如摩托罗拉)开始采用Linux来满足终端消费市场的低成本需求趋势,特别是在今天全球经济形势一片糟糕的情况下。 微软Windows Embedded OS在中国嵌入式工控市场耕耘多年,当然不能示弱,为了以正视听,微软组织了一支庞大的参展阵营参加第14届中
[嵌入式]
基于Windows CE的超市预收款系统的设计
   1 概 述   为了缓解销售旺季收款台的压力,节省顾客的时间,以吸引更多顾客,本文设计一种超市预收款系统。当顾客排队交款时,在一定位置由两到三人组成临时收款台,扫描商品并装袋,装袋完毕后扫描包装条码并将包装条码贴到袋子上放进特制的红色袋子中。若顾客还有商品则继续扫描并放入新袋子中,直至全部商品扫描完毕。确认后顾客提着带有防盗码的红色袋子到收款台交款。收款台解除防盗码后,扫描包装条码进行结账。   Windows CE属于嵌入式操作系统,可以定制为很多设备的操作系统,所以很适合于工业控制。随着微软对Windows CE的不断升级,产生了Pocket PC以及当前非常流行的Mobile 5.0。如今Windows CE
[嵌入式]
基于SmartPhone的蓝牙遥控系统设计与实现
1.引言 蓝牙技术是一种解决短距离无线通信的技术,它的优势在于可摆脱设备间的电缆连接 的束缚,并且能使10 一l00m 距离内具有蓝牙接口的不同设备之间实现互连,因此蓝牙在 短技术短距数据传输中具有非常广阔的应用。   Windows Mobile 系统是Microsoft 公司为智能移动终端设备设计的嵌入式操作系统, Windows Mobile 系统主要针对两大手持设备领域:Pocket Pc 和Smartphone,随着技术的发 展,以Windows Mobile for Smartphone 为系统的智能手机使用越来越广泛,而且广泛内嵌蓝 牙模块,为开发基于SmartPhone 的蓝牙应用系统提供了必要条件。
[安防电子]
基于SmartPhone的蓝牙遥控系统设计与实现
微软公开主界面更新的Windows Mobile升级版
在美国拉斯维加斯召开的“CTIA WIRELESS 2008(CTIA)”首日主题演讲中,美国微软娱乐及设备部门总裁Robbie Bach发布了Windows Mobile的升级版“Windows Mobile 6.1”。Windows Mobile 6.1的最大特点是更新了主界面,“进一步简化了用户的操作”(Bach)。   在Windows Mobile 6.1的主界面上,可迅速获取各种重要信息。例如,未接来电、短信及播放中的歌曲等信息可直接显示在主界面上。手机的操作比原来更简单。   另外,还可通过主界面直接访问便携终端及服务设定画面。如,为使手机与支持蓝牙的外设联动,微软在OS中导入了可连接的全部外设的代码。还导入
[焦点新闻]
基于Windows CE的大功率微波嵌入式控制系统的研究
  微波作为一种节能环保的新能源形式,近年来在国内外得到了迅猛发展,并且在陶瓷烧结、环保、脱硫等方面有了很多成功的实例。微波加热技术是工业控制中的一种特殊应用,如何对其控制直接影响微波加热设备的应用前景。而微波加热设备,尤其是大功率微波加热系统,其繁杂的操作程序为其稳定运行带来很多不确定因素,因此亟需设计安全、智能的控制系统。现阶段国内外大功率工业微波加热系统存在系统功能过于单一、控制精度不够等问题。针对这些问题,本文提出了一种基于Windows CE的大功率微波嵌入式控制系统。   1 方案论证   目前国内外大多数微波设备采用的控制方式为触摸屏+PLC控制系统。此系统用在实验炉上时,虽运行相对稳定可靠,但具有一定的局限性:
[单片机]
基于<font color='red'>Windows</font> <font color='red'>CE</font>的大功率微波嵌入式控制系统的研究
谷歌暗示云游戏平台Stadia将能运行Windows游戏
谷歌似乎已经找到在自家云游戏平台 Stadia 上运行 Windows 游戏的解决方案,谷歌计划在下周 3 月 15 日举行的 Google for Games 开发者峰会上详细介绍其用于 Linux 的 Windows“模拟器”。   有 Reddit 用户在峰会上发现了一个会议,将详细介绍“如何从头开始为 Linux 编写一个 Windows 模拟器”。该会议将由谷歌 Stadia 移植平台团队的 Marcin Undak 主持,将“详细介绍谷歌在 Stadia 上运行未经修改的 Windows 游戏的解决方案背后的技术”。看来,谷歌已经为 Linux 建立了自己的 Windows 模拟器,以帮助开发者将游戏移植到服
[手机便携]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved