WINCE REG文件相关资料
REG文件
?
注冊表文件,這個和Windows操作系統中使用的注冊表文件基本一樣,在BSP中主要是Platform.reg,該注冊表文件描述了和硬件平臺相關的配置,大部分是用來描述驅動的相關信息。
注冊標的格式如下:
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相互對應,不同的Value type對應不同的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 | 二進制類型 |
| HEX | hex(xxxxxxxx):xx,xx,xx,xx | 十六進制類型 |
在注冊表中,同樣可以使用IF/ENDIF來進行條件包含,其中條件可以是一個WinCE中的環境變量,還可以在該環境變量后加一個空格再加一個驚嘆號(“!”),表示沒有設置或者不等于的情況,比如:
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>
如果注冊表某一行是以分號(“;”)開始,表示這行是被注釋掉的。當然也有一些例外,比如在支持Hive注冊表的時候,如下:
; HIVE BOOT SECTION
... reg data...
; END HIVE BOOT SECTION
關于Hive注冊表,以前介紹過,這里不多說了。我們在注冊表中無非就是創建,刪除key,賦值等操作。
創建一個注冊表key:
[Key1]
"ValueName"="Value Type"
刪除一個注冊表key:
[-KEY1]
刪除一個注冊表值:
"ValueName1"=-
和BSP以及硬件平臺相關的注冊表配置都放在platform.reg文件中,和WinCE工程相關的配置應該放在project.reg文件中。
?
?
摘自論壇
http://topic.csdn.net/u/20081008/15/750119c7-efec-4140-9ecc-309dcb0ed7a4.html?1882204088
?
初學, 關于wince reg文件的簡單問題
1:這是背光的
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/BAK]//這句說明什么?
"Index"=dword:1 //index表示什么?1表示什么?
"Prefix"="BAK" //Prefix表示什么?
"Dll"="backlight.dll"
"Order"=dword:1//這個表示什么?
"IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}"? //這個表示什么,這串數據從哪里來的?
; Power-manageable generic
[HKEY_CURRENT_USER/ControlPanel/Backlight]//這個和上面的有什么區別嗎?
"ACTimeout"=dword:3c //這些是和程序聯系起來的嗎?
"BatteryTimeout"=dword:1e
"BacklightOnTap"=dword:1
"ACBacklightOnTap"=dword:1
? ? "Brightness"=dword:32
2:觸摸屏
[HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH]這個和上面的有什么區別嗎?
? "MaxCalError"=dword:7
; portrait
? "CalibrationData"="480,668 127,212 133,1128 838,1120 827,212 "//這串數據怎么得到的?從哪里得到的?怎么和源程序結合起來的?
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//?
?
回復:
Index"=dword:1 //index表示什么?1表示什么? ------------索引了,
"Prefix"="BAK" //Prefix表示什么? -----驅動函數前綴
"Dll"="backlight.dll"
"Order"=dword:1//這個表示什么? ---------------啟動順序吧。
"IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}"? //這個表示什么,這串數據從哪里來的? --------在微軟,每個外設都有一個固定的GUID。
?
?
?
WINCE中的注冊表文件
http://blog.ednchina.com/bluehacker/248746/message.aspx
注冊表文件是WINCE中非常重要的文件,所有驅動程序的配置信息都保存在注冊表中,系統啟動的時候,會根據系統注冊表中的信息,加載builtin驅動程序。還會根據注冊表信息對flash或者SD卡等加載分區驅動和文件系統驅動。
Wince中的注冊表是在平臺build的時候根據幾個注冊表文件生成reginit.ini文件,這個文件是最終系統鏡像的注冊表文件。這是在build過程最后makeimg的階段完成的。 Reginit.ini文件是從幾個.reg文件中生成的,只要有platform.reg,common.reg,wceshell.reg,IE.reg,project.reg等文件。
這幾個文件很是讓人困惑,今天仔細看了下微軟的文檔,總算搞明白到底怎么個關系,在合并產生reginit.ini文件的過程中,是按照下面的次序來合并的。
1.?????? 首先合并common.reg,IE.reg,wceapps.reg等操作系統通用的reg設置
2.?????? 然后合并project.reg文件,即工程的reg設置
3.?????? 最后才是platform.reg
也就是說,如果project.reg文件和common.reg中有相同的注冊表項,那么project.reg將覆蓋common.reg中的設置;同樣,platform.reg會覆蓋project.reg中的設置。
?
基于WinCE的嵌入式系統注冊表的研究
?
摘要:本文首先講述了 Windows CE注冊表的重要性,它對整個嵌入式系統的正常運行起著關鍵性作用。然后又介紹了兩種注冊表存儲方式,并著重講述了基于 HIVE的注冊表。詳細闡述了基于 HIVE的注冊表的保存數據方式及實現 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所示。
表 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_MACHINE/init/BootVars下的鍵值項ProfileDir存儲著所有用戶目錄的位置。HKEY_LOCAL_MACHINE/init/BootVars下的鍵值項 SystemHive存儲著系統HIVE的文件路徑和文件名。
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_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 "
圖 1 HIVE注冊表需要修改的文件
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注冊表的方法和修改注冊表的思路,經大量試驗證明此種思路很有效,可以用來修改更多其它需要的配置。隨著我國的汽車事業的蓬勃發展,汽車導航多媒體系統有著越來越廣闊的應用前景,本項目的經濟效益預計在八十萬元左右。
總結
以上是生活随笔為你收集整理的WINCE REG文件相关资料的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 准备发射!刘洋进舱三连拍 挥手、敬礼、比
- 下一篇: php和python的多线程,Pytho