《電子技術應用》
您所在的位置:首頁 > 其他 > 设计应用 > 一种基于Smartphone类的注册表实现方案
一种基于Smartphone类的注册表实现方案
刘洲洲 西安航空技术高等专科
摘要: 由于Smartphone的用处已经越来越广泛,故提出一种为Smartphone建立较为通用高效的手机注册表实现方案,这对后继手机软件的应用开发,建立了良好的开发基础,性能优越且易于移植,已经成功应用于Linux和WindowsCE等嵌入式操作系统。目前该方案已用于诸多无线移动多媒体终端项目,且效果理想。
關鍵詞: 智能手机
Abstract:
Key words :

目前SmartphcIne類型的手機注冊表都是用數據庫實現的,現在要改用COMS來實現,具體做法是采用大小為64 KB的2塊FLASH來模擬CMOS,在此基礎上實現注冊表的管理,直接從FLASH驅動層做起。注冊表的記錄改變了傳統的Windows做法,采用一種簡化的方法,不分目錄級,由一個主鍵加一個鍵值構成,其主鍵是一個null結束的字符串,可以包含目錄信息,這對后繼手機軟件的應用開發建立了良好的開發基礎。
關鍵詞:注冊表;Smartphone:CMOS;FLASH

0 引言
隨著多媒體移動終端(PDA,智能手機)的快速發展,使其已經不再只是用于語音通信的手持設備,而成為集成了MP3,MP4以及上網移動辦公等附加功能的嵌入式通信平臺。Smartphon是Accelerator Technology公司開發的一種嵌入式RTOS產品,其操作系統為Nucleus,只需一次性購買Licenses就可以獲得操作系統的源碼。Accelerator Technology公司在底層對無線通信以及語音文本信息通信模塊做了大量優化。
Nucleus是一款優秀的嵌入式實時操作系統(RTOS),具有搶占式和時間片輪轉任務調度方式,主要用在時間苛刻的嵌入式應用當中。大約95%的Nucleus用ANSIC寫成,作為一個庫加載到應用代碼當中,目前手機行業有很多使用Nucleus。Smartphone平臺的基本架構分為:
無線堆棧層:負責最終的數據發送與接收處理,它對接收和發送的硬件細節進行控制,突出無線通信這個核心內容,是Smartphone操作平臺最低的一層。
核心API層:可利用它們來進行與無線通信和語音服務相關的開發,主要參照MSDN來使用。
邏輯層:系統為簡化開發,將一些API包裝成各個功能塊以便調用類似控件,這層提供各控件接口。
應用層:是系統中面向用戶提供服務的各應用程序。

1 接口設計與實現方案
當前大部分智能手機的注冊表原來是用數據庫實現的,現在要改為用COMS來實現,具體做法是,采用大小為64 KB的2塊FLASH來模擬CMOS,在此基礎上實現注冊表的管理,直接從FLASH驅動層做起。注冊表的記錄改變了傳統Windows的做法,采用一種簡化的方法,不分目錄級,由一個主鍵加一個鍵值構成。主鍵是一個null結束的字符串,可以包含目錄信息,也可以寫成“\APP\WINDOW\POSITION\X”,考慮到查找的方便性,主鍵字串必須用大寫,并且要以“\”開始。鍵值有3種類別,分別是DWORD,Binary和string。其中,DWORD占4 B;String是null結束的字符串;Binary是由一個4 B的Size加上內容構成。考慮到FLASH的讀寫特性以及可移植性,整個記錄信息向4 B對齊,并用0填充冗余各位。
1.1 數據結構
注冊表的大小為64 KB,另外的64 KB是為了擦寫時備份用的。整個64 KB空間分成2大塊,即索引塊和數據塊,其中索引塊大小為4 KB,數據塊為60 KB。索引塊由32 B的HEAD和一個偏移表構成,HEAD由1個4 B的片選字加1個28 B的保留位構成,保留位建議填寫成“HTW CMOS VER1.0”,片選字用作擦除時掉電的保護。偏移表的每項占4 B,共有1 016項,每個偏移項均由低28 b的偏移值和高4 b標志位構成,標志位用作增加和修改時掉電的保護。數據塊由一個接一個變長的記錄構成,每個記錄內容向4 B對齊,并用0填充冗余各位。記錄由4 B控制字段+4 BCHECKSUM+主鍵+鍵值構成。其中,控制字段=28 b SIZE+4 b FLAG。SIZE是低28位,即物理的前28位。它表示整個記錄的大小,包括自身及CHECKSUM、主鍵、鍵值等。FLAG是高4位,即物理的后4位,它表示鍵值的屬性,同時用來作為掉電保護的判斷標志。
1.2 關于掉電保護信息
掉電保護要做好,有2個必要條件,一是系統啟動后在初始化時,有能力知道上次關機是正常關機還是異常掉電關機;二是系統在任何時候突然掉電,有能力追溯到掉電前的資料信息。注冊表系統用于掉電保護的信息有3處,分別是片選字、偏移表項的標志位、記錄控制字段的FLAG。片選字共有2塊64 KB的FLASH,每塊最前面的4 B是片選信息,正常情況下,正在使用的那一塊(記A)片選信息寫著00 00 00 C0,另外一塊(記B)寫著FF FF FF FF,并且B是一個擦除過的很干凈的空塊。A其余可能的取值是00 00 00 80,B其余可能的取值是00 00 00 F0和00 0000 E0,這一點與FMM中的用法基本相同。當A寫滿時需要整理,會運行一個整理流程,也會用到這些取值。每個偏移表項由低28 b的偏移值和高4 b標志位構成,其中標志位正常取值時,0xC0表示有效,0x8表示已刪除;其余可能的取值是0xF表示空閑或者正在寫,0xE表示剛剛修改完。對注冊表的增加、修改、刪除都會用到這些取值。記錄控制字的FLAG每個記錄控制字由低28 b的SIZE和高4 b的FLAG構成。FLAG的取值前面有描述,正常情況下0xE表示鍵值為DW0RD,0xC表示鍵值為Binary,0x8表示鍵值為String,其他的取值都表示正在寫入控制字段時突然掉電,此時SIZE不可靠,整個數據塊應該丟棄這4個字節。下一個偏移表項的取值應該儀僅越過這4個字節。對注冊表的增加、修改、刪除等操作,會用到這個FLAG,它與偏移表項的標志位一起使用,共同完成這幾種操作的掉電保護。
1.3 部分API函數示例
注冊表系統向應用提供的API接口有4個,另外還有一個初始化和一個塊擦除流程,即RegCreateKey()刨建;RegDeleteKey()刪除;RegQueryValueEx()查詢;RegSetValue()設置;Reg_Initialize()初始化;Reg_EraseChip()擦除。

2 開發環境
本軟件模組在PC機上開發,經過編譯工具embedded Visual C++后,在CPU為ARM920T的硬件平臺下運行。
編程語言:C語言
操作系統:Nucleus
Nucleus內核版本:2.4.20
交叉編譯工具:VC++&ADS
編譯環境:Visual C++
硬件平臺:SC32442X或ARM920T

3 結語
由于Smartphone的用處已經越來越廣泛,故提出一種為Smartphone建立較為通用高效的手機注冊表實現方案,這對后繼手機軟件的應用開發,建立了良好的開發基礎,性能優越且易于移植,已經成功應用于Linux和Windows CE等嵌入式操作系統。目前該方案已用于諸多無線移動多媒體終端項目,且效果理想。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 青青青国产在线观看| 日韩精品福利片午夜免费观看| 国产在线观看福利| 久久国产日韩欧美| 日韩中文字幕在线视频播放| 国产欧美日本在线| 久久天天躁狠狠躁夜夜av| 国产精品视频免费观看www| 欧美精品免费观看二区| 日韩亚洲国产中文字幕| 不卡一区二区三区视频| 精品国偷自产在线| 欧美一级片中文字幕| 日本一区二区三区在线视频| 91av福利视频| 福利视频久久| 99精品国产高清在线观看| 国产欧美综合一区| 国产伦理久久久| 国产精品视频99| 国产成一区二区| 97精品国产97久久久久久| 狠狠干 狠狠操| 国产美女在线精品免费观看| 久久777国产线看观看精品| 久久久国产影院| 久久久久久久久国产| 美女亚洲精品| 欧美国产综合在线V| 久久天堂国产精品| 久久久成人精品| 国产日韩视频在线播放| 国产一区免费视频| 国产日本欧美视频| 国产精品吹潮在线观看| 中文字幕av久久| 日韩在线免费观看视频| 日韩中文字幕久久| 日韩精品综合在线| 蜜臀精品一区二区| 韩国视频理论视频久久|