怎樣設(shè)置S3c2440A平臺(tái)HIVE注冊(cè)表 binfs
出處:互聯(lián)網(wǎng) 發(fā)布于:2011-09-04 13:42:10
其實(shí)所有的工作都是改注冊(cè)表,但是怎么改,為什么這么改要搞懂就蠻費(fèi)一番心思了,好在俺是喜歡鉆研這個(gè)東西接下來(lái)就讓我給你們介紹下S3c2440A 平臺(tái)HIVE注冊(cè)表binfs 的實(shí)現(xiàn)。
我們的案子是基于samsung S3C2440A+samsung ONENAND+WinCE5.0的,開(kāi)發(fā)平臺(tái)是platform builder 5.0,首先我們基于RAM regiSTer的image已經(jīng)可以正常跑起來(lái)了,F(xiàn)lash 除了放置image 外其他的空間為用戶提供文件系統(tǒng),這部分的驅(qū)動(dòng)程序是用三星的PocetStoreII15。
先來(lái)回味一下底層的東東,我們的Image主要由兩部分組成:XIPKERNEL.bin和NK.bin,XIPKERNEL.bin中的東西就是那些WinCE中比較的又需要經(jīng)常加載的一些程序和DLL文件,這些文件會(huì)被Boot Loader在剛啟動(dòng)的時(shí)候拷貝到RAM中去,這樣就可以在RAM中XIP(Excute in place)了。在NK.bin中的基本上是需要但不至于要常駐內(nèi)存的一些程序和DLL了,比如我們BuildIn下的大部分驅(qū)動(dòng),比如微軟的IE,mediaplayer等應(yīng)用程序,甚至連設(shè)備管理器device.exe也可以放到這里面,這些文件只有在需要的時(shí)候才被復(fù)制到內(nèi)存中去執(zhí)行,節(jié)約了內(nèi)存并且也加快了啟動(dòng)的時(shí)間。嘿,到這里大概知道binfs 的工作原理和重要性吧。
binfs的建立工作是在用UT(OEM自己的一種底層的工具集)實(shí)現(xiàn)的,UT在燒image的時(shí)候會(huì)自動(dòng)把XIPKERNEL和NK分別保存到flash的特定的邏輯扇區(qū)上。啟動(dòng)的時(shí)候Boot Loader會(huì)先把XIPKERNEL復(fù)制到RAM中,然后跳到RAM中的XIPKERNEL的入口點(diǎn)去執(zhí)行,這個(gè)時(shí)候會(huì)跑一些OEMinit之類的CPU,內(nèi)存,中短等初始化的過(guò)程,接著OS會(huì)從注冊(cè)表中找到binfs的一些設(shè)置,然后加載binfs的驅(qū)動(dòng)使binfs分區(qū)對(duì)OS來(lái)講是可用的,假如device.exe是在NK.bin中的話,那么在這個(gè)時(shí)候就可以用\binfs\device.exe(\binfs是假設(shè)的裝載路徑)來(lái)調(diào)用它了,如果這個(gè)時(shí)候binfs沒(méi)有初始化成功那么,device.exe得不到執(zhí)行,那么系統(tǒng)肯定就起不來(lái)了。
現(xiàn)在來(lái)講講HIVE,其實(shí)HIVE是個(gè)很簡(jiǎn)單的東西,都怪和binfs牽到一起搞得很多問(wèn)題都走錯(cuò)了方向,本來(lái)一天就能搞定結(jié)果搞了四五天,NND。這么說(shuō)吧,WinCE下面就兩種注冊(cè)表,一種是RAM based,另外就是HIVE based了,缺省用的是前者,如果用前者PB會(huì)在編譯的時(shí)候把common.reg和platform.reg的內(nèi)容做到一個(gè)叫reginit.ini的文件然后壓縮成default.***(忘記擴(kuò)展名了,有過(guò)老跡象了哈)的文件放到XIPKERNEL中去,image在起來(lái)的時(shí)候會(huì)把這個(gè)文件解壓到RAM中形成RAM based注冊(cè)表,既然是RAM based那么所有的改動(dòng)都會(huì)在斷電后蒸發(fā),哈哈。怎么辦呢?其實(shí)再笨你也能想出來(lái),保存到磁盤上不就結(jié)了嗎!?對(duì)你太聰明了,但是你想如果你把注冊(cè)表全放到磁盤(SDMMC或HDD或Flash)上WinCE怎么在沒(méi)有加載你磁盤的驅(qū)動(dòng)的情況下讀到注冊(cè)表呢?而一般情況加載磁盤的驅(qū)動(dòng)程序也是要注冊(cè)表的支持啊!嘿,對(duì)了,這就是HIVE想到的,看它怎么做,它把注冊(cè)表分成兩部分(其實(shí)是三部分,當(dāng)時(shí)大體還是兩步分,把user.hv和system.hv做一部分),部分就是叫做boot.hv的注冊(cè)表,里面的東西就是一些在沒(méi)有拿到保存在磁盤的注冊(cè)表之前引導(dǎo)時(shí)需要的一些設(shè)置,這部分的注冊(cè)表和RAM based的是一樣的,改了之后斷電就沒(méi)了,所以這部分的注冊(cè)表項(xiàng)都是不需要改動(dòng)的,需要改動(dòng)的都放到第二部分就是了,這第二部分就是system.hv和user.hv了,也就是一直提到的要放到磁盤上的注冊(cè)表。 編譯的時(shí)候PB會(huì)根據(jù)platform.reg和Common.reg中的標(biāo)簽判斷哪些表項(xiàng)放到boot.hv中,這個(gè)標(biāo)簽就是;HIVE BOOT SECTION ;END BOOT SECTION,夾在這個(gè)標(biāo)簽之間的表項(xiàng)PB在編譯的時(shí)候會(huì)把它們?nèi)絙oot.hv中去(boot.hv是二進(jìn)制文件,要看里面到底放了哪些表項(xiàng)用一個(gè)老外寫的工具吧,好像叫d_readvol.exe,到google上找得到的),其他的內(nèi)容會(huì)分別塞到default.hv和user.hv中去,會(huì)把這三個(gè)hv文件統(tǒng)統(tǒng)塞到XIPKERNEL中去,這樣WinCE在引導(dǎo)的階段就把所有的hv扔到RAM中去了,然后打開(kāi)boot.hv拿到必要的資料,這其中包括如何加載放置system.hv的磁盤的驅(qū)動(dòng),所以那些和加載這個(gè)磁盤相關(guān)的驅(qū)動(dòng)要統(tǒng)統(tǒng)放到boot.hv中,比如FAT文件系統(tǒng)驅(qū)動(dòng),mspart分區(qū)驅(qū)動(dòng)等等,這里有一點(diǎn)很重要就是假如你用binfs而且device.exe在NK.bin中,那么一定在階段要保證binfs可用,否則這里就不可能為system.hv創(chuàng)造條件了。WinCE次啟動(dòng)時(shí)候磁盤上沒(méi)有東東,這個(gè)時(shí)候WinCE會(huì)將內(nèi)存中的default.hv和user.hv復(fù)制到注冊(cè)表BootVars指定的地方,default.hv往往會(huì)被重命名為system.hv,第二次啟動(dòng)會(huì)先檢查磁盤上的hv是不是和內(nèi)存中的一致,不一致就加載磁盤上的表項(xiàng)。
整個(gè)過(guò)程就是這樣子,但要注意一點(diǎn),HIVE注冊(cè)表也是在內(nèi)存中運(yùn)行的,不同的是啟動(dòng)的時(shí)候會(huì)從磁盤上去讀改動(dòng)的表項(xiàng),因?yàn)檫@樣才能保證速度,所以你做的的注冊(cè)表改動(dòng)也是在內(nèi)存中做的,這個(gè)時(shí)候如果你不掉用FlushRegister去將內(nèi)存中的數(shù)值保存到磁盤上那么這些改動(dòng)還是會(huì)丟失的。兩種方法來(lái)避免丟失,一種是認(rèn)為去調(diào)用FlushRegister,令一種就設(shè)置一個(gè)flag讓W(xué)inCE在每次改動(dòng)注冊(cè)表后自動(dòng)Flush.
總結(jié)一下我到底做了哪些事情:
1)在PB中將HIVEbased Registers拉到項(xiàng)目的WorkSpaces中來(lái)。
2)把Platform.reg中的下列表項(xiàng)加到boot.hv中
3)Build Image了
我也是參考了這個(gè)才得以實(shí)現(xiàn),注冊(cè)表配置為:
; HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\init\BootVars]
"SYSTEMHIVE"="system.hv"
"Start DevMgr"=dword:1
"DefaultUser"="default"
"Flags"=dword:3
"RegistryFlags"=dword:1
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FlashDrv]
; "DriverPath"="Drivers\\BlockDevice\\FlashDrv"
; "LoadFlags"=dword:1
; "MountFlags"=dword:11
; "BootPhase"=dword:0
; "Flags"=dword:1000
"DriverPath"="Drivers\\BlockDevice\\FlashDrv"
"LoadFlags"=dword:1
"MountFlags"=dword:11
"BootPhase"=dword:1
"Flags"=dword:1000 ;lieal modify
[HKEY_LOCAL_MACHINE\Drivers\BlockDevice\FlashDrv]
"Prefix"="DSK"
"Dll"="FLASHDRV.dll"
"Order"=dword:0
"Ioctl"=dword:4
"Profile"="FlashDrv"
"FriendlyName"="MS Flash Driver"
"MountFlags"=dword:11
"BootPhase"=dword:0
"Flags"=dword:1000 ;lieal modify
; Bind BINFS to the block driver
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDrv]
DefaultFileSystem"="BINFS"
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
;"MountFlags"=dword:2 ;11 to 2 lieal modify
"Folder"="ResidentFlash"
"Name"="Microsoft Flash Disk"
"BootPhase"=dword:0
"Flags"=dword:1000 ;lieal modify
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDrv\FATFS]
"FriendlyName"="FAT FileSystem"
"Dll"="fatfsd.dll"
"Flags"=dword:00280014
"Paging"=dword:1
"CacheSize"=dword:0
"EnableCacheWarm"=dword:0
"EnableCache"=dword:1
"MountFlags"=dword:2
; END HIVE BOOT SECTION
但是具體的 關(guān)于這些詳細(xì)參數(shù)的說(shuō)明,卻沒(méi)有找到合適的出處,如果有誰(shuí)知道,還忘指點(diǎn)!
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應(yīng)用開(kāi)發(fā)實(shí)踐指南2026/1/6 10:40:19
- 嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計(jì)實(shí)踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開(kāi)啟異核通信新時(shí)代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識(shí)2025/7/14 16:59:04
- 高速PCB阻抗控制核心實(shí)操規(guī)范
- 高速數(shù)字系統(tǒng)(如DDR、SerDes)中的信號(hào)完整性濾波
- MOSFET在UPS電源中的應(yīng)用解析
- 電源管理IC在物聯(lián)網(wǎng)設(shè)備中的應(yīng)用
- SMT連接器焊接缺陷分析
- MOSFET在汽車電子中的應(yīng)用要求
- 通信設(shè)備電源管理IC應(yīng)用解析
- 通信設(shè)備連接器選型與設(shè)計(jì)
- PCB電磁兼容性(EMC)設(shè)計(jì)核心實(shí)操規(guī)范
- 物聯(lián)網(wǎng)節(jié)點(diǎn)低功耗設(shè)計(jì):信號(hào)鏈中的濾波與功耗管理









