当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]WinCE的嵌入式系统注册表技术分析

 0 引言

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

  1 Windows CE注册表简介

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

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

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

  表 1 Windows CE注册表根键


  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_MACHINEinitBootVars下的键值项ProfileDir存储着所有用户目录的位置。HKEY_LOCAL_MACHINEinitBootVars下的键值项 SystemHive存储着系统HIVE的文件路径和文件名。[!--empirenews.page--]
 BOOT HIVE存储只用于系统启动时的系统设置。BOOT HIVE从 ROM中读出并用于启动驱动程序和相关的文件系统。这个文件系统用于启动系统 HIVE文件。当系统HIVE启动后, BOOT HIVE将被终止。当系统 HIVE有效时,启动过程中被修改的注册表数据将被存放于系统 HIVE中。但是 BOOT HIVE在 ROM中的数据还保持不变。 3 HIVE注册表的实现HIVE注册表是通过修改系统的平台文件来实现的,在工程目录下的 PLATFORM.REG文件中包含了系统的启动信息,HIVE注册表的启动方式不同于普通注册表的启动方式,它需要在系统加载设备管理器前加载系统存储媒介的驱动程序,只有这样才能在加载设备管理器当中提取设备在注册表中的保存信息,达到 HIVE存储的目的。下面介绍如何让系统支持 HIVE 表2 标准 HIVE及其支持的文件


  注册表存储:

  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_MACHINEControlPanel]      "InputConfig"= dword:3  ;3 =>键盘和触摸屏

  [HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPTOUCH] "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 "


 图 1 HIVE注册表需要修改的文件
[!--empirenews.page--]

  4.2 在映像中固定 IP地址

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

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

  [HKEY_LOCAL_MACHINEcommvmini1parmstcpip] "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_MACHINEDriversBuiltInsdcard] "D11"="sdcard.d11" "Prefix"="SDC" "Index"=dword:1

  "Order"=dword:l

  "FSD"="fatfs.d11"

  [HKEY_LOCAL_MACHINESystemStorageManagerProfilesSDCARD]

  "Name"="SD Card"

  "Folder"= "SDCARD Storage"

  5 结论

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

2024年4月18日,国民技术第四代可信计算芯片NS350 v32/v33系列产品正式发布并开始量产供货。NS350 v32/v33是一款高安全、高性能、超值可信密码模块2.0 (TCM 2.0)安全芯片,适用于PC、服...

关键字: PC 服务器平台 嵌入式系统

2024年,嵌入式系统将走向何方?如何才能走在趋势的前沿?从工厂到家电,从医院里昂贵的医疗设备,到随处可见的可穿戴设备,我们身边的联网设备越来越多,生活更加绿色低碳,嵌入式系统功不可没。ST于3月19日成功举办STM32...

关键字: 嵌入式系统 可穿戴设备

存储器是计算机系统中的关键组件,负责存储程序指令和数据,是实现计算和信息处理的基础。根据其工作原理、存储容量、访问速度、稳定性以及持久性等诸多特性,存储器可以被细分为多个类别。本篇文章将详细介绍存储器的主要分类,并探讨各...

关键字: 存储器 RAM

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

提供业界最高容量的闪存、RAM和GPIO组合,支持Matter over Thread

关键字: 闪存 RAM 物联网

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统

【2024年3月25日,德国慕尼黑和瑞典瓦尔贝格讯】不同汽车的独特性给汽车零部件供应商和OEM厂商等带来了挑战,因为每辆车的驾驶方式、驾驶地点、驾驶者、设计、用途以及道路和交通状况都是独一无二的。为保证每辆汽车都能正常运...

关键字: AI 机器学习 嵌入式系统

GD32F303作为一款先进的微控制器,在嵌入式系统领域有着广泛的应用。本文旨在深入探究GD32F303的发布时间,并分析其背后的技术背景和市场环境。通过对相关资料的梳理和分析,本文揭示了GD32F303发布的历史背景、...

关键字: GD32F303 微控制器 嵌入式系统

物联网控制模块作为连接物理世界与数字世界的桥梁,在现代科技领域扮演着至关重要的角色。本文将详细探讨物联网控制模块的定义、功能、应用领域以及未来发展趋势,旨在为读者提供全面而深入的了解,并展望其在未来物联网产业中的广阔前景...

关键字: 物联网 控制模块 嵌入式系统
关闭
关闭