How to Use Hive-based Registry IN WINCE.NET

摘要:

WINCE本身是一个完全在内存中运行的系统。每次启动都需要把NK.BIN拷贝到内存中相对应的地址。这样的系统就不需要了系统维护,但是如何“永久”的保存设置就成了问题。本文将介绍如何在Wince中实现设置的永久保存。


关键字:

WINCE、嵌入式操作系统、Hive-based Registry


作者

Tony

Email:gzci@163.com

Windows CE .NET是Windows CE 3.0的后继产品。Windows CE .NET为嵌入式市场从新设计,为快速建立下一代智能移动和小内存占用的设备提供了一个健壮的实时操作系统。Windows CE .NET具备完整的操作系统特性集包和端对端开发环境,它包括了创建一个基于Windows CE的定制设备所需的一切,例如:强大的联网能力、强劲的实时性和小内存体积占用以及丰富的多媒体和Web浏览功能。

 WINCE本身是一个完全在内存中运行的系统。每次启动都需要把NK.BIN拷贝到内存中相对应的地址。关机之后内存中的数据将都“消失”。这样的系统就不需要了系统维护,但是如何“永久”的保存设置就成了问题。通过查找资料找到了一个微软提供的解决办法。具体实现方法如下:

第一步:在PB的Catalog里面将Hive-based Registry加入到我们的Platform之中。

 

第二步:在Platform.reg中修改[HKEY_LOCAL_MACHINE\init\BootVars]下面的设置为:

"SystemHive"=""

"Start DevMgr"=dword:

在我们系统中是从CF卡中直接启动,相当于Windows系统的C盘,所以具体更改如下:"SYSTEMHIVE"="Documents and Settings\\system.hv"

"PROFILEDIR"="Documents and Settings"

"Start DevMgr"=dword:1

SYSTEMHIVE是system.hv文件保存的路径。Start DevMgr是选择是否启动设备管理器(Device Manager),启动设备管理器的目的是为了启动一些Hive-based Registry所必须的设备。(Start DevMgr is a Boolean value indicating whether or not to start the Device Manager so it can start the drivers necessary to reach the registry hives. A value of 1 causes the Device Manager to start; 0 keeps the Device Manager from starting. The only case in which the Device Manager should not start is if you want to store the hives in the object store, which causes the hives to be lost on a cold boot. Typically, the hives are stored outside RAM, so it is necessary to start the Device Manager.)

第三步:在Platform.reg中修改[HKEY_LOCAL_MACHINE\init\BootVars]下面的"DefaultUser"=""设置,以确定调用哪个默认用户的Hive-based Registry。如果不是多用户可以不做设置。

第四步:确定一下Platform.reg和Common.reg当中所有的启动驱动程序的注册项是否设置。你可以在Platform.reg和Common.reg中搜索

; HIVE BOOT SECTION

; END HIVE BOOT SECTION

这样的字段。有许多项需要设置,包括IRQ、IO、PCI等,不过一般的如果你没有修改过,系统默认的就可以了。这些设置是告诉ROM registry builder需要把什么加入到boot hive中。

 

第五步:启动必须在第一启动阶段启动的驱动程序。我们先看一下下面的关于第一启动阶段的描述:

 

很显然的Filesys是必须在第一启动阶段启动的。在common.reg中找到相关的文件系统的设置,添加"Flags"=dword:1000,我们用的fat文件系统,具体设置如图:

第六步:设置MountFlags的注册值为DWORD:2。在Common.reg中的:

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\ \]

设置: "MountFlags"=dword:2

第七步:确定是否需要注册表刷新机制。一般情况下在OS挂起或者重启动等软起动的时候系统会自动的刷新保存注册表;但是当系统突然掉电的话,注册表是不会保存的。所以就需要在更改了设置之后对注册表进行刷新。一般的解决方案是在用户进行了设置之后运行保存设置程序(调用RegFlushKey)进行设置的保存;不要定时的刷新注册表,这样会是整个系统变的很慢。

第八步:完全的重新build,make image,重新生成nk.bin。

通过以上的设置Wince系统中就可以实现设置的永久保存了。

 

参考文献:

Microsoft Windows CE .NET 4.2 HELP VERSION 4.0

 

下面分享一下我在WINCE5。0下做好保存设置的方法(用的ARMSYS2440平台,很简单哦,理论的东西就不多说了,上面两篇文章讲得比较清楚了):

第(1)步,在当前Platform下加入Hive-based Registry的支持;

第 (2)步,在注册表platform.reg中查找“; HIVE BOOT SECTION”,有两处,在第二处(原来是:IF BSP_NONANDFS !的地方),将; HIVE BOOT SECTION 和 ; END HIVE BOOT SECTION之间的内容替换成:

[HKEY_LOCAL_MACHINE\init\BootVars]
    "SystemHive"="system.hv"
    "Start DevMgr"=dword:1
    "RegistryFlags"=dword:1
[HKEY_LOCAL_MACHINE\init\BootVars]
   "DefaultUser"="default"

IF BSP_NONANDFS !
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH]
    "DriverPath"="Drivers\\BuiltIn\\SMFLASH"
    ; LoadFlags 0x01 == load synchronously
    "LoadFlags"=dword:1
    "BootPhase"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH]
    "Prefix"="DSK"
    "Dll"="smflash.dll"
    "Index"=dword:1
    "Order"=dword:0
    "Profile"="SMFLASH"
    "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
   "Flags"= dword:1000            ;;;;;;;;;;

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH]
    "DefaultFileSystem"="BINFS"
    "AutoPart"=dword:1
    "AutoMount"=dword:1
    "PartitionDriver"="mspart.dll"
    "Name"="Microsoft Flash Disk"
    "Folder"="ResidentFlash"
    "BootPhase"=dword:0
   "MountFlags"=dword:2
    "Flags"= dword:1000            ;;;;;;;;;;

; Keep FATFS from trying to shadow \Windows
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\FATFS]
    "Flags"=dword:14
    "FormatTfat"=dword:1
    "CheckForFormat"=dword:1
     
[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]
    "Flags"=dword:00000014   ;FATFS_TFAT_ALWAYS|FATFS_FORCE_TFAT
     "MountFlags"=dword:0

ENDIF ; BSP_NONANDFS
; END HIVE BOOT SECTION

第(3)步,最后一步,重新Sysgen(要选择clean before building),最后build BSP,makeimg。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】libpcap实现机制及接口函数

转自:libpcap实现机制及接口函数 - 简书 1.Libpcap 的工作原理 Libpcap的工作原理可以描述为,当一个数据包到达网卡时,通过网络分接口(即旁路机制)将数据包发给BPF过滤器,匹配通过的数据包可以被libpcap利…

惊!MySQL官网巨变,下载被取消

随着欧盟的批准,甲骨文宣布收购Sun交易完成,与此同时甲骨文一系列动作也迅速展开。 甲骨文因MySQL被欧盟卡了大半年,在中国,MySQL的用户非常多,MySQL的前途无疑让人牵肠挂肚。并购之前,甲骨文说了很多&…

【转】【C++学习笔记】C++异常处理

转自:【C学习笔记】C异常处理!你绝对不能错过的干货! - 知乎 合理地使用C异常处理,能够使我们写出来的程序更加稳定强健,不易崩溃。那么,应该如何使用C异常处理呢?下面,我们就来向大…

【转】源码分析C++的string实现

转自:源码分析C的string实现 - 知乎 我们平时使用C开发过程中或多或少都会使用std::string,但您了解string具体是如何实现的吗,这里程序喵给大家从源码角度分析一下。 读完本文相信您可以回答以下问题: string的常见的实现方式…

做一个项目,平时都用到哪些工具提高效率(上)

做.NET 相关项目,Visual Studio 2008,SQL Server 2000/2005是标准的配置,但是,除此之外,还可以应用哪些工具来提高工作效率,让项目做的更轻松。 1 需要一个代码生成工具,生成实体层,数据访问代…

【转】傅里叶分析之掐死教程(完整版)更新于2014.06.06

转自:傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 知乎 作 者:韩 昊 知 乎:Heinrich 微 博:花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳…

wince6.0编译命令分析

下面从CSDN帮助文档简要说明vs2005下面的系统编译命令,这些命令位于Build->Advanced Build Commonds 一共有六条命令,分别是: 1.Sysgen 2.Clean Sysgen 3.Build and Sysgen 4.Rebuild and Clean Sysgen 5.Build Current BSP and Subprojec…

【转】C,C++宏中#与##的讲解

转自:C,C宏中#与##的讲解 - MoreWindows - 博客园 文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C中常用的预定义宏》 宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的…

wince对中文字体的支持

最近情况真的是很糟,小小年纪,得了好几样小毛病,弄得每天都提不起精神来,恍恍惚惚的,幸好有妻子的支持,她不论自己多忙多累,一看到我情绪不好,就给与很多安慰,百般鼓励&a…

提示信息的窗口效果

代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml"><head><title>提示信息的窗口效果<…

【转】ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍

转自&#xff1a;ARM 之七 主流编译器&#xff08;armcc、iar、gcc for arm、LLVM(clang)&#xff09;详细介绍_itexp-CSDN博客_armcc 必备 在讲解各编译器之前&#xff0c;必须先了解一下以下文件。这些文件在编译器目录下或者编译生成目标平台的可执行程序时经常见到。此外&a…

【转】深入浅出理解有限状态机

转自&#xff1a;深入浅出理解有限状态机 - 知乎 有限状态机是一种用来进行对象行为建模的工具&#xff0c;其作用主要是描述对象在它的生命周期内所经历的状态序列&#xff0c;以及如何响应来自外界的各种事件。在计算机科学中&#xff0c;有限状态机被广泛用于建模应用行为、…

wince 环境变量

wince工程的环境变量在PBInitEnv.bat文件中存储&#xff0c;经测试&#xff0c;如果在下面增加了新的变量&#xff0c;在此文件中会出现

【转】vs平台工具集介绍,vc6~vs2019各IDE对应的工具集版本

转自&#xff1a;vs平台工具集介绍以及安装 - jack_Meng - 博客园 一、什么是平台工具集&#xff1a; 平台工具集其实是MSBuild其目录所在C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0。VS从2010之后开始支持使用之前的版本进行编译&#xff0c;可以在工程属性->常…

基于FPGA的前向纠错算法

目前&#xff0c;无线产品的广泛应用使无线音频和视频的高质量传输成为可能。蓝牙、无限局域网等无线传输设备比较复杂&#xff0c;成本较高&#xff0c;急需 开发一种简便的、仅用于流媒体的无线传输平台&#xff0c;将音频数据实时地发送到移动终端。由于音频数据的实时性&am…

【转】Windows版本,OS内核版本,Windows SDK之间的关系

转自&#xff1a;Windows版本&#xff0c;OS内核版本&#xff0c;Windows SDK之间的关系 - 知乎 前言&#xff1a;我们经常会会被几个概念弄混淆&#xff0c;什么是Windows版本号&#xff0c;什么又是操作同内核版本&#xff0c;开发C的时候什么又是WindowsSDK&#xff0c;实际…

【转】30分钟学会UML类图

转自&#xff1a;30分钟学会UML类图 - 知乎 30分钟学会UML类图 肖继潮 UML图有很多种&#xff0c;但是并非必须掌握所有的UML图&#xff0c;才能完整系统分析和设计工作。一般说来&#xff0c;在UML图中&#xff0c;只要掌握类图、用例图、时序图的使用&#xff0c;就能完成大…

Microsoft SQL Server 2005数据库安装

Microsoft SQL Server 2005数据库&#xff0c;电脑里原有的mssql2000已经不适用了&#xff0c;到网上寻找SQL Server 2005简体中文开发版的下载地址&#xff0c;一开始下载了个学习版的express&#xff0c;可限制太多&#xff0c;还是决心安装开发版本的。到微软的官方网站寻找…

Wince6.0 cleartype

WinCE6.0下显示宋体毛刺很严重&#xff0c;影响显示效果&#xff0c;打开cleartype以后字体显示平滑&#xff0c;但是不知道为什么wince桌面上的中文字体显示乱码&#xff0c;而且自己的引用程序也变的很卡。 开始以为是字库的原因&#xff0c;后来添加了系统的组件以后一切正常…

【转】ubuntu16.04安装配置tftp服务

转自&#xff1a;ubuntu16.04安装配置tftp服务_carspiriter的博客-CSDN博客_ubuntu安装tftp 首先声明&#xff1a;tftp是client客户端&#xff0c;tftpd是server服务器端&#xff0c;d应该指的是daemon。如果你要从别人的tftp服务器端上传/下载东西&#xff0c;就要用到tftp&a…