詳解TCC89x的Hive Registry設(shè)置
//=====================================================================
本文引用地址:http://www.ex-cimer.com/article/201609/304824.htm//TITLE:
// 詳解TCC89x的Hive Registry設(shè)置
//AUTHOR:
// norains
//DATE:
// Tuesday 16-November-2010
//Environment:
// Windows CE 6.0
// TCC8900
//=====================================================================
Hive Registry在很多方案中設(shè)置比較麻煩,有的還專門弄了個(gè)文檔來一步一步講解如何設(shè)置;但對(duì)于TCC89x來說,如果你要求不高,僅僅是能夠正常讓Hive Registry運(yùn)作,那么一切都是很簡(jiǎn)單。
首先,我們要做的是,添加Hive Registry選項(xiàng),如圖:
選擇該特性以后,其實(shí)只是設(shè)置了SYSGEN_FSREGHIVE這個(gè)環(huán)境變量而已。編譯完畢,將系統(tǒng)燒錄到FLASH,這時(shí)候Hive Registry已經(jīng)開始正常工作了。但這時(shí)候細(xì)心的朋友測(cè)試的時(shí)候發(fā)現(xiàn),為什么更改后的注冊(cè)表數(shù)值重啟之后就消失了,沒有保存下載呢?這也能叫Hive Registry正常工作么?
很明確地說,此時(shí)Hive Registry已經(jīng)正常工作了,之所以數(shù)據(jù)沒有保存下來,是因?yàn)楸4娴穆窂讲粚?duì)。打開Platform.reg文件,發(fā)現(xiàn)保存路徑的設(shè)置如下:
從圖中可以看出,路徑是在“Documents and Settings”這個(gè)文件夾,也就是說完整的路徑為“/Documents and Settings”。這意味著什么?意味著我們的注冊(cè)表文件保存到內(nèi)存的臨時(shí)空間去了!為了能在關(guān)閉設(shè)備后還能保存數(shù)據(jù),我們只需要更改該路徑到Flash中即可,如:
可能有的朋友覺得將注冊(cè)表文件保存到NAND有點(diǎn)不專業(yè),想保存到隱藏的APP分區(qū),也許會(huì)按照我這篇文章《TCC89x的NAND數(shù)據(jù)分區(qū)的設(shè)置》(http://blog.csdn.net/norains/archive/2010/11/11/6002358.aspx)進(jìn)行設(shè)置,并且將路徑更改為“App//Documents and Settings”,但在實(shí)際運(yùn)行中發(fā)現(xiàn)根本數(shù)據(jù)就無法保存。然后再深究原因,結(jié)果是,當(dāng)選擇Hive Registry時(shí),APP分區(qū)根本就沒有手動(dòng)加載。怎么回事呢?其實(shí)這個(gè)我們需要在NAND注冊(cè)表中添加“; HIVE BOOT SECTION”字段,如圖:
編譯完畢,將系統(tǒng)燒錄,OK!一切正常!
熟悉注冊(cè)表的朋友可能就疑惑了,為什么加了這兩句之后,就能正常加載了呢?前面有“;”符號(hào),不是注釋么?一開始我也是這么想的,但該死的微軟,給我們開了一個(gè)天大的玩笑,HIVE BOOT SECTION之前加“;”不是注釋,是代表特殊的功能!眾所周知,Hive Registry分為兩個(gè)部分,一部分是編譯時(shí)生成的包含到NK里面的,另一部分是保存到非易失媒介的,也就是類似FLASH一類。夾在“; HIVE BOOT SECTION”和“ ; END HIVE BOOT SECTION”之間的數(shù)值,標(biāo)明它是要存儲(chǔ)在非易失媒介中的。
知道這些基礎(chǔ)知識(shí)之后,對(duì)于為什么之前的注冊(cè)表在Hive Registry的情形下,沒有正確加載APP分區(qū)了。首先,NAND注冊(cè)表的Flags設(shè)置為1000,意味著該驅(qū)動(dòng)在保存到Flash的注冊(cè)表找到的話,也只按照保存的這個(gè)數(shù)值進(jìn)行加載;即使是NK部分還存在該鍵值,也只執(zhí)行一次。換句話來說,如果Flags為0,那么會(huì)執(zhí)行兩次。接著,因?yàn)橹暗淖?cè)表沒有添加“HIVE BOOT SECTION”字段,所以并沒有保存到Flash的注冊(cè)表中,于是啟動(dòng)之后,在Flash的注冊(cè)表就沒有找到該分區(qū)信息,所以不會(huì)進(jìn)行加載。最后,又因?yàn)镹AND驅(qū)動(dòng)只加載一次,系統(tǒng)不會(huì)再執(zhí)行NK里面的NAND注冊(cè)表,于是APP分區(qū)就永遠(yuǎn)沒有辦法自動(dòng)加載了。
評(píng)論