WINCE REG文件相关资料
REG文件
?
注冊(cè)表文件,這個(gè)和Windows操作系統(tǒng)中使用的注冊(cè)表文件基本一樣,在BSP中主要是Platform.reg,該注冊(cè)表文件描述了和硬件平臺(tái)相關(guān)的配置,大部分是用來(lái)描述驅(qū)動(dòng)的相關(guān)信息。
注冊(cè)標(biāo)的格式如下:
de>[KEY1]de>
de>"ValueName1"={Value Type}:{data}de>
de>"ValueName2"={Value Type}:{data}de>
de>[KEY2]de>
de>"ValueName1"={Value Type}:{data}de>
其中Value Type和data相互對(duì)應(yīng),不同的Value type對(duì)應(yīng)不同的data,具體如下:
| Value Type | data | ? |
| REG_SZ | ”my string” | 字符串類型 |
| REG_DWORD | dword:NNNN(hex number) | DWORD類型 |
| REG_MULTI_SZ | multi_sz:”my_string_1”,”my_string_2” | 多字符串類型 |
| REG_BINARY | hex:xx,xx,xx | 二進(jìn)制類型 |
| HEX | hex(xxxxxxxx):xx,xx,xx,xx | 十六進(jìn)制類型 |
在注冊(cè)表中,同樣可以使用IF/ENDIF來(lái)進(jìn)行條件包含,其中條件可以是一個(gè)WinCE中的環(huán)境變量,還可以在該環(huán)境變量后加一個(gè)空格再加一個(gè)驚嘆號(hào)(“!”),表示沒(méi)有設(shè)置或者不等于的情況,比如:
de>IF environment variable [= value] [!]de>
de>[KEY1]de>
de>"ValueName1"={Value Type}:{data}de>
de>"ValueName2"={Value Type}:{data}de>
de>[KEY2]de>
de>"ValueName1"={Value Type}:{data}de>
de>ENDIFde>
如果注冊(cè)表某一行是以分號(hào)(“;”)開(kāi)始,表示這行是被注釋掉的。當(dāng)然也有一些例外,比如在支持Hive注冊(cè)表的時(shí)候,如下:
; HIVE BOOT SECTION
... reg data...
; END HIVE BOOT SECTION
關(guān)于Hive注冊(cè)表,以前介紹過(guò),這里不多說(shuō)了。我們?cè)谧?cè)表中無(wú)非就是創(chuàng)建,刪除key,賦值等操作。
創(chuàng)建一個(gè)注冊(cè)表key:
[Key1]
"ValueName"="Value Type"
刪除一個(gè)注冊(cè)表key:
[-KEY1]
刪除一個(gè)注冊(cè)表值:
"ValueName1"=-
和BSP以及硬件平臺(tái)相關(guān)的注冊(cè)表配置都放在platform.reg文件中,和WinCE工程相關(guān)的配置應(yīng)該放在project.reg文件中。
?
?
摘自論壇
http://topic.csdn.net/u/20081008/15/750119c7-efec-4140-9ecc-309dcb0ed7a4.html?1882204088
?
初學(xué), 關(guān)于wince reg文件的簡(jiǎn)單問(wèn)題
1:這是背光的
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/BAK]//這句說(shuō)明什么?
"Index"=dword:1 //index表示什么?1表示什么?
"Prefix"="BAK" //Prefix表示什么?
"Dll"="backlight.dll"
"Order"=dword:1//這個(gè)表示什么?
"IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}"? //這個(gè)表示什么,這串?dāng)?shù)據(jù)從哪里來(lái)的?
; Power-manageable generic
[HKEY_CURRENT_USER/ControlPanel/Backlight]//這個(gè)和上面的有什么區(qū)別嗎?
"ACTimeout"=dword:3c //這些是和程序聯(lián)系起來(lái)的嗎?
"BatteryTimeout"=dword:1e
"BacklightOnTap"=dword:1
"ACBacklightOnTap"=dword:1
? ? "Brightness"=dword:32
2:觸摸屏
[HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH]這個(gè)和上面的有什么區(qū)別嗎?
? "MaxCalError"=dword:7
; portrait
? "CalibrationData"="480,668 127,212 133,1128 838,1120 827,212 "//這串?dāng)?shù)據(jù)怎么得到的?從哪里得到的?怎么和源程序結(jié)合起來(lái)的?
3:串口
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial1]
? "DeviceArrayIndex"=dword:0//?
? "Irq"=dword:1c//?
? "MemBase"=dword:50000000//?
? "MemLen"=dword:2C//?
? "InterruptBitsShift"=dword:0 ; UART 0 Interrupt Sub Register shift bit.//?
? "ISTTimeouts"=dword:200 ; every 512 ticks checking Modem status.//?
? "Prefix"="COM"//?
? "Index"=dword:1//?
? "Dll"="serial_smdk2440.dll"
? "Order"=dword:0//?
? "Priority"=dword:0///?
? "Port"="COM1:"//?
? "DeviceType"=dword:0//?
? "FriendlyName"=LOC_DISPLAYNAME_COM1//?
? "Tsp"="unimodem.dll"//?
? "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"//?
? "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00//?
?
回復(fù):
Index"=dword:1 //index表示什么?1表示什么? ------------索引了,
"Prefix"="BAK" //Prefix表示什么? -----驅(qū)動(dòng)函數(shù)前綴
"Dll"="backlight.dll"
"Order"=dword:1//這個(gè)表示什么? ---------------啟動(dòng)順序吧。
"IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}"? //這個(gè)表示什么,這串?dāng)?shù)據(jù)從哪里來(lái)的? --------在微軟,每個(gè)外設(shè)都有一個(gè)固定的GUID。
?
?
?
WINCE中的注冊(cè)表文件
http://blog.ednchina.com/bluehacker/248746/message.aspx
注冊(cè)表文件是WINCE中非常重要的文件,所有驅(qū)動(dòng)程序的配置信息都保存在注冊(cè)表中,系統(tǒng)啟動(dòng)的時(shí)候,會(huì)根據(jù)系統(tǒng)注冊(cè)表中的信息,加載builtin驅(qū)動(dòng)程序。還會(huì)根據(jù)注冊(cè)表信息對(duì)flash或者SD卡等加載分區(qū)驅(qū)動(dòng)和文件系統(tǒng)驅(qū)動(dòng)。
Wince中的注冊(cè)表是在平臺(tái)build的時(shí)候根據(jù)幾個(gè)注冊(cè)表文件生成reginit.ini文件,這個(gè)文件是最終系統(tǒng)鏡像的注冊(cè)表文件。這是在build過(guò)程最后makeimg的階段完成的。 Reginit.ini文件是從幾個(gè).reg文件中生成的,只要有platform.reg,common.reg,wceshell.reg,IE.reg,project.reg等文件。
這幾個(gè)文件很是讓人困惑,今天仔細(xì)看了下微軟的文檔,總算搞明白到底怎么個(gè)關(guān)系,在合并產(chǎn)生reginit.ini文件的過(guò)程中,是按照下面的次序來(lái)合并的。
1.?????? 首先合并common.reg,IE.reg,wceapps.reg等操作系統(tǒng)通用的reg設(shè)置
2.?????? 然后合并project.reg文件,即工程的reg設(shè)置
3.?????? 最后才是platform.reg
也就是說(shuō),如果project.reg文件和common.reg中有相同的注冊(cè)表項(xiàng),那么project.reg將覆蓋common.reg中的設(shè)置;同樣,platform.reg會(huì)覆蓋project.reg中的設(shè)置。
?
基于WinCE的嵌入式系統(tǒng)注冊(cè)表的研究
?
摘要:本文首先講述了 Windows CE注冊(cè)表的重要性,它對(duì)整個(gè)嵌入式系統(tǒng)的正常運(yùn)行起著關(guān)鍵性作用。然后又介紹了兩種注冊(cè)表存儲(chǔ)方式,并著重講述了基于 HIVE的注冊(cè)表。詳細(xì)闡述了基于 HIVE的注冊(cè)表的保存數(shù)據(jù)方式及實(shí)現(xiàn) HIVE注冊(cè)表的方法。最后給出了系統(tǒng)成功修改注冊(cè)表的實(shí)現(xiàn)方法。本文的研究對(duì)其它操作系統(tǒng)的注冊(cè)表修改也具有著借鑒意義。
0 引言
嵌入式操作系統(tǒng) Windows CE和桌面操作系統(tǒng)一樣使用注冊(cè)表(Registry)來(lái)保存應(yīng)用程序、驅(qū)動(dòng)程序和用戶的設(shè)定以及其他一些配置信息,通常還存儲(chǔ)著操作系統(tǒng)調(diào)用程序的狀態(tài)信息,所以注冊(cè)表起著非常重要的作用,它是 Windows CE操作系統(tǒng)的核心。在沒(méi)有注冊(cè)表的情況下,操作系統(tǒng)將不能獲得必需的信息來(lái)運(yùn)行和控制附屬的設(shè)備和應(yīng)用程序及正確響應(yīng)用戶的輸入[1][2]。
1 Windows CE注冊(cè)表簡(jiǎn)介
Windows CE的注冊(cè)表結(jié)構(gòu)和其他版本的 Windows操作系統(tǒng)的注冊(cè)表結(jié)構(gòu)是類似的。注冊(cè)表是一個(gè)包括主關(guān)鍵字子樹(shù)的集合,它和文件目錄樹(shù)一樣具有層次結(jié)構(gòu)。每個(gè)子樹(shù)又由更低層的子樹(shù)、鍵以及鍵值組成。鍵相當(dāng)于文件系統(tǒng)的目錄,每個(gè)鍵包含若干鍵值項(xiàng)。而鍵值項(xiàng)相當(dāng)于文件系統(tǒng)末端的文件,它由鍵值名、數(shù)據(jù)類型和鍵值組成。鍵值就是注冊(cè)表存儲(chǔ)的數(shù)據(jù)。
Windows CE對(duì)注冊(cè)表的值有一些限制:鍵或者鍵值項(xiàng)的名字最多為 255個(gè)字符,數(shù)據(jù)最大為4K,鍵嵌套層次最多為 16層。所以在使用注冊(cè)表編程時(shí),要盡量使鍵和鍵值項(xiàng)占用最小的空間。另外,需要注意的是,在注冊(cè)表中,鍵值項(xiàng)比鍵值占用更大的存儲(chǔ)空間。
Windows CE注冊(cè)表包括4個(gè)根鍵 [2],如表1所示。
表 1 Windows CE注冊(cè)表根鍵
2 Windows CE注冊(cè)表類型
由于嵌入式系統(tǒng)的特點(diǎn),一些嵌入式設(shè)備是沒(méi)有外存的。因此 Windows CE的注冊(cè)表提供了兩種實(shí)現(xiàn)方式:基于對(duì)象存儲(chǔ)的注冊(cè)表(RAM-Based Registry)和基于 Hive的注冊(cè)表(Hive-Based Registry) [3]。我們可以在 Windows CE中使用任何一種注冊(cè)表,注冊(cè)表類型對(duì)于用戶和應(yīng)用程序來(lái)說(shuō)都是透明的。基于RAM的注冊(cè)表在經(jīng)常熱啟動(dòng)的設(shè)備上是非常高效的,而在經(jīng)常冷啟動(dòng)的設(shè)備上,性能卻很令人失望,最適合有電池后備的個(gè)人電子消費(fèi)類產(chǎn)品。對(duì)于經(jīng)常冷啟動(dòng)或者不怎么使用熱啟動(dòng)方式的設(shè)備來(lái)說(shuō),基于 hive的注冊(cè)表是非常高效的,最適合永久性的存儲(chǔ)器和多用戶環(huán)境下使用。
2.1 基于 RAM的注冊(cè)表
顧名思義,基于 RAM的注冊(cè)表把整個(gè)注冊(cè)表作為一個(gè)對(duì)象存儲(chǔ)堆放在 RAM中。這就意味著如果系統(tǒng)中斷對(duì) RAM的電池供電,對(duì)注冊(cè)表的所有改動(dòng)都會(huì)丟失。也就是說(shuō),它們的有效性和 RAM中數(shù)據(jù)的有效性是一致的。但是使用 RAM注冊(cè)表,對(duì)注冊(cè)表的讀寫訪問(wèn)操作非常的快速高效。在舊版本的 Windows CE中,大量應(yīng)用了基于 RAM的注冊(cè)表。如果有外存且需要經(jīng)常冷啟動(dòng)的設(shè)備采用基于 RAM的注冊(cè)表,則需要在系統(tǒng)斷電的時(shí)候?qū)ψ?cè)表進(jìn)行保存,等系統(tǒng)再次啟動(dòng)時(shí)對(duì)保存的注冊(cè)表進(jìn)行還原。
2.2 基于 HIVE的注冊(cè)表
HIVE系統(tǒng)包含了不屬于任何用戶信息的系統(tǒng)設(shè)置。HIVE系統(tǒng)由 OEM層調(diào)用。通常 hive文件為System.hv,但是它的存儲(chǔ)位置可能隨著平臺(tái)而變化。這種存儲(chǔ)方式使系統(tǒng)在斷電前后無(wú)須備份和恢復(fù)注冊(cè)表數(shù)據(jù),這使得系統(tǒng)冷啟動(dòng)時(shí)速度更快。
基于HIVE結(jié)構(gòu)的注冊(cè)表被分為兩部分存儲(chǔ):系統(tǒng)HIVE,存儲(chǔ)所有的系統(tǒng)數(shù)據(jù);用戶HIVE,存儲(chǔ)對(duì)特定用戶的所有相關(guān)數(shù)據(jù)。一個(gè)多用戶系統(tǒng)將包括幾個(gè)用戶HIVE。當(dāng)一個(gè)用戶登錄時(shí),相應(yīng)的用戶 HIVE就會(huì)被激活,當(dāng)用戶退出時(shí),相應(yīng)的用戶 HIVE也會(huì)被撤銷。所有的用戶 HIVE都用 USER.hv來(lái)命名,并且被放在不同的用戶目錄中,每個(gè)目錄都是以它屬于的用戶的用戶名來(lái)命名的。
注冊(cè)表中的HKEY_LOCAL_MACHINE/init/BootVars下的鍵值項(xiàng)ProfileDir存儲(chǔ)著所有用戶目錄的位置。HKEY_LOCAL_MACHINE/init/BootVars下的鍵值項(xiàng) SystemHive存儲(chǔ)著系統(tǒng)HIVE的文件路徑和文件名。
BOOT HIVE存儲(chǔ)只用于系統(tǒng)啟動(dòng)時(shí)的系統(tǒng)設(shè)置。BOOT HIVE從 ROM中讀出并用于啟動(dòng)驅(qū)動(dòng)程序和相關(guān)的文件系統(tǒng)。這個(gè)文件系統(tǒng)用于啟動(dòng)系統(tǒng) HIVE文件。當(dāng)系統(tǒng)HIVE啟動(dòng)后, BOOT HIVE將被終止。當(dāng)系統(tǒng) HIVE有效時(shí),啟動(dòng)過(guò)程中被修改的注冊(cè)表數(shù)據(jù)將被存放于系統(tǒng) HIVE中。但是 BOOT HIVE在 ROM中的數(shù)據(jù)還保持不變。 3 HIVE注冊(cè)表的實(shí)現(xiàn)HIVE注冊(cè)表是通過(guò)修改系統(tǒng)的平臺(tái)文件來(lái)實(shí)現(xiàn)的,在工程目錄下的 PLATFORM.REG文件中包含了系統(tǒng)的啟動(dòng)信息,HIVE注冊(cè)表的啟動(dòng)方式不同于普通注冊(cè)表的啟動(dòng)方式,它需要在系統(tǒng)加載設(shè)備管理器前加載系統(tǒng)存儲(chǔ)媒介的驅(qū)動(dòng)程序,只有這樣才能在加載設(shè)備管理器當(dāng)中提取設(shè)備在注冊(cè)表中的保存信息,達(dá)到 HIVE存儲(chǔ)的目的。下面介紹如何讓系統(tǒng)支持 HIVE 表2 標(biāo)準(zhǔn) HIVE及其支持的文件
注冊(cè)表存儲(chǔ):
1 )修改設(shè)備管理器的啟動(dòng)信息值 “Start DevMgr”= dword:1此冊(cè)項(xiàng)代表使用 HIVE注冊(cè)表存儲(chǔ)系統(tǒng)信息
2 )把系統(tǒng)的存儲(chǔ)媒介驅(qū)動(dòng)程序加在 “HIVE BOOT SECTION”與“END HIVE BOOT SECTION” 的注釋之間,該注釋被編譯器選擇提取之后,在系統(tǒng)上電后加載在設(shè)備管理器之前
3 )在系統(tǒng)的存儲(chǔ)媒介驅(qū)動(dòng)程序上提供一個(gè) FLAG項(xiàng),該項(xiàng)的目的是對(duì)目標(biāo)數(shù)據(jù)進(jìn)行邏輯運(yùn)算。
“flags”= dword:1
通過(guò)以上參數(shù)的修改,系統(tǒng)即可支持 HIVE注冊(cè)表存儲(chǔ),該存儲(chǔ)方式有效存儲(chǔ)系統(tǒng)保存
在 HIVE注冊(cè)表中的信息,比如觸摸屏觸電校驗(yàn)信息,系統(tǒng) IP地址等。經(jīng)大量試驗(yàn)證明,該方法有效可行。 4 系統(tǒng)注冊(cè)表修改分析
4.1 觸摸屏驅(qū)動(dòng)程序注冊(cè)表設(shè)置 下面是本多媒體系統(tǒng)觸摸屏驅(qū)動(dòng)程序的注冊(cè)表信息設(shè)置,我們?cè)谛?zhǔn)的時(shí)候需要在注冊(cè)表中存儲(chǔ)一些校準(zhǔn)坐標(biāo)信息: [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 "//校準(zhǔn)信息 Landscape "CalibrationData"="515,503 763,748 258,749 269,255 764,255 "
圖 1 HIVE注冊(cè)表需要修改的文件
4.2 在映像中固定 IP地址
在我們自己創(chuàng)建的調(diào)試環(huán)境中每次啟動(dòng)后都需要手動(dòng)修改 IP后才能多人同時(shí)調(diào)試,所以要想將 IP地址固定下來(lái)就要關(guān)系到注冊(cè)表的修改。而關(guān)于IP地址的更改一定會(huì)反映到系統(tǒng)注冊(cè)表中,也就是說(shuō)如果能將這部分更改在定制操作系統(tǒng)的時(shí)候就加進(jìn)去,那么當(dāng)映像啟動(dòng)后,就具有設(shè)定好的 IP地址了 [4]。
經(jīng)過(guò)不斷摸索,得出的結(jié)論很好,修改平臺(tái)文件project.reg,在文件中添加以下內(nèi)容:
[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
第一個(gè)是默認(rèn)網(wǎng)關(guān),第二個(gè)是子網(wǎng)掩碼,第三個(gè)是 IP地址,最后一個(gè)也必須加,就是禁用DHCP,只有這樣自己的設(shè)定才能生效。 注意:注冊(cè)表鍵值類型一定要設(shè)置好,像上面的 multi_sz,dword一定要添加在前面,否則仍然沒(méi)有效果。
4.3 SD卡驅(qū)動(dòng)注冊(cè)表信息
SD卡是車載多媒體系統(tǒng)的重要外圍存儲(chǔ)設(shè)備,為靈活實(shí)現(xiàn) SD卡熱插拔功能,使用流接口驅(qū)動(dòng)模型。SD卡驅(qū)動(dòng)程序以及它所使用的文件系統(tǒng)都是由存儲(chǔ)管理器負(fù)責(zé)的。在存儲(chǔ)管理器的啟動(dòng)過(guò)程中,很多配置信息都是從系統(tǒng)的注冊(cè)表得到的。因此必須先創(chuàng)建如下 SD卡注冊(cè)表信息:
[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 結(jié)論
注冊(cè)表是 Windows CE操作系統(tǒng)的核心,起著至關(guān)重要的作用,車載多媒體系統(tǒng)的所有驅(qū)動(dòng)程序和應(yīng)用程序的配置信息都被保存在注冊(cè)表中,如果修改或加載不當(dāng),都將使得整個(gè)系統(tǒng)的一些功能不能正常使用,甚至將會(huì)導(dǎo)致 Windows CE操作系統(tǒng)無(wú)法啟動(dòng)。本文的創(chuàng)新點(diǎn)在于提出了一種實(shí)現(xiàn) HIVE注冊(cè)表的方法和修改注冊(cè)表的思路,經(jīng)大量試驗(yàn)證明此種思路很有效,可以用來(lái)修改更多其它需要的配置。隨著我國(guó)的汽車事業(yè)的蓬勃發(fā)展,汽車導(dǎo)航多媒體系統(tǒng)有著越來(lái)越廣闊的應(yīng)用前景,本項(xiàng)目的經(jīng)濟(jì)效益預(yù)計(jì)在八十萬(wàn)元左右。
總結(jié)
以上是生活随笔為你收集整理的WINCE REG文件相关资料的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 准备发射!刘洋进舱三连拍 挥手、敬礼、比
- 下一篇: arm B和BL指令浅析