Windows Embedded CE嵌入式操作系統(tǒng)支持兩種不同的注冊表類型:RAM-based注冊表和Hive-based注冊表。
RAM-based注冊表將所有注冊表信息保存在對象存儲(object store)中,對象存儲可以看作是WinCE系統(tǒng)在內(nèi)存中永久的虛擬RAM磁盤,因此要保存注冊表信息,需要把注冊表轉(zhuǎn)存到具有掉電保護(hù)的RAM介質(zhì)中,為此CE提供了轉(zhuǎn)存及恢復(fù)注冊表的底層函數(shù)。如果沒有對注冊表進(jìn)行這樣的轉(zhuǎn)存及恢復(fù),則系統(tǒng)總是使用缺省的注冊表。
Hive-based注冊表將注冊表數(shù)據(jù)存儲為文件,注冊表文件可以存儲在任何文件系統(tǒng)中。將注冊表存儲在非易失的存儲介質(zhì)上(比如Flash),就不需要類似RAM-based注冊表的備份與恢復(fù)操作。
RAM-based注冊表通常用在總是使用熱啟動,很少甚至從不冷啟動的系統(tǒng)中,Windows Embedded CE6.0及以后版本,默認(rèn)采用Hive-based注冊表,英創(chuàng)公司的WinCE系列工控主板默認(rèn)使用Hive-based注冊表,注冊表文件存儲在NandFlash中。
WinCE在系統(tǒng)啟動過程中會在注冊表里添加信息,最典型的就是在注冊表中生成驅(qū)動的Active 項(xiàng),如果是Hive-based注冊表,則意味著WinCE在整個(gè)啟動過程中會不停寫盤,在大多數(shù)情況下這沒有任何問題,但如果系統(tǒng)使用環(huán)境供電不穩(wěn)定,在系統(tǒng)啟動過程中頻繁斷電,則有可能導(dǎo)致注冊表損壞。而對RAM-based注冊表,每次系統(tǒng)啟動時(shí)都會將內(nèi)核中的默認(rèn)注冊表加載到RAM中,系統(tǒng)啟動過種中生成的注冊表信息也寫在RAM中,因此不會有注冊表被寫壞的問題。所以從啟動的可靠性來看,RAM-based的注冊表方式優(yōu)于Hive-based注冊表方式。
為了提高主板的可靠性,我們在BSP中增加了支持RAM-based注冊表的底層轉(zhuǎn)存及恢復(fù)功能。所設(shè)計(jì)的轉(zhuǎn)存及恢復(fù)功能,主要是針對那些在實(shí)際的應(yīng)用中,必須保存的相關(guān)信息。比如觸摸屏較準(zhǔn)參數(shù),網(wǎng)絡(luò)參數(shù)等。為此我們對內(nèi)核進(jìn)行了更新,新的內(nèi)核在采用RAM-based注冊表同時(shí),也能保存一些必要的注冊表數(shù)據(jù)。
英創(chuàng)WinCE RAM-based注冊表版本內(nèi)核目前能保存以下注冊表信息:
| 注冊表功能 | 注冊表 | |
| 1 | 觸摸屏校準(zhǔn)參數(shù) |
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH] 'CalibrationData'='' |
| 2 | 網(wǎng)絡(luò)1參數(shù) |
[HKEY_LOCAL_MACHINE\Comm\ENET1\Parms\TcpIp] 'EnableDHCP'=dword:0 'UseZeroBroadcast'=dword:0 'DefaultGateway'='192.168.201.19' 'IpAddress'='192.168.201.213' 'Subnetmask'='255.255.255.0' 'DNS'='61.139.2.69' |
| 3 | 網(wǎng)絡(luò)2參數(shù) |
[HKEY_LOCAL_MACHINE\Comm\ENET2\Parms\TcpIp] 'EnableDHCP'=dword:0 'UseZeroBroadcast'=dword:0 'DefaultGateway'='192.168.201.19' 'IpAddress'='192.168.201.213' 'Subnetmask'='255.255.255.0' 'DNS'='61.139.2.69' |
| 3 | 系統(tǒng)語言設(shè)置 |
[HKEY_LOCAL_MACHINE\MUI] 'SysLang'=dword:804 [HKEY_LOCAL_MACHINE\MUI] 'DefaultLCID'=dword:804 [HKEY_CURRENT_USER\MUI] 'CurLang'=dword:804 |
表1
使用RAM-based注冊表時(shí),無論是由控制面板、遠(yuǎn)程注冊表工具或通過程序代碼直接修改了上面例出的注冊表項(xiàng)后,都需要調(diào)用RegFlushKey函數(shù)才能真正保存注冊表信息。下面是示例代碼:
HKEY hOpenKey;
// 打開任意注冊表鍵
RegOpenKeyEx (HKEY_LOCAL_MACHINE, L'HARDWARE\\DEVICEMAP\\TOUCH', 0, 0, &hOpenKey);
// 調(diào)用RegFlushKey會觸發(fā)系統(tǒng)保存注冊表
RegFlushKey( hOpenKey );
// 關(guān)閉打開的注冊表
RegCloseKey( hOpenKey);
我們將上面代碼封裝成了一個(gè)小工具RegFlushKey,放在系統(tǒng)的控制面板中,方便調(diào)試時(shí)使用。比如用戶通過控制面板的筆針工具較準(zhǔn)完觸摸屏后,再點(diǎn)擊運(yùn)行一次RegFlushKey,觸摸屏較準(zhǔn)數(shù)據(jù)就保存了。

圖1
根據(jù)用戶實(shí)際需求,我們會不斷添加保存的注冊表項(xiàng),本文檔表1也會同步更新。
與hive-based注冊表相比,使用RAM-based注冊表還有些需要注意的地方,比如“撥號連接”。在hive注冊表的系統(tǒng)中,通過控制面板或英創(chuàng)提供的RasEntry程序新建撥號連接后,對應(yīng)的注冊表就已經(jīng)自動保存了,系統(tǒng)斷電重啟不會丟失,因此在hive注冊表情況下,撥號連接只需要建立一次。而RAM-based注冊表不能保存這些信息,所以系統(tǒng)每次啟動后都需要新建撥號連接。
-
WINDOWS
+關(guān)注
關(guān)注
4文章
3630瀏覽量
93028 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6107瀏覽量
36881
發(fā)布評論請先 登錄
寶馬南京信息技術(shù)有限公司開業(yè)
易華錄入選國家級信息技術(shù)應(yīng)用創(chuàng)新典型解決方案
佛瑞亞如何通過信息技術(shù)推動業(yè)務(wù)增長
飛騰主板為信創(chuàng)產(chǎn)業(yè)發(fā)展提高硬實(shí)力
DEKRA德凱成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)認(rèn)證機(jī)構(gòu)
科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略
通過注冊表和Technitium MAC Address Changer修改MAC地址(支持W5500模塊及通用網(wǎng)卡)
通過注冊表和Technitium MAC Address Changer修改MAC地址(支持W5500模塊及通用網(wǎng)卡)
龍芯中科榮獲2024年度信息技術(shù)應(yīng)用創(chuàng)新工作委員會卓越貢獻(xiàn)成員單位
RAM-Based Shift Register Xilinx IP核的使用

英創(chuàng)信息技術(shù)WinCE RAM-Based與Hive-Based注冊表介紹
評論