日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WINCE应用BINFS

發布時間:2025/4/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WINCE应用BINFS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

********************************LoongEmbedded********************************

作者:LoongEmbedded(kandi)

時間:2012.03.02

類別:WINCE系統開發

********************************LoongEmbedded********************************

?

1.??? BINFS概述

BINFS(Binary ROM Image File System)是可以讀取由Romimage.exe生成的.bin文件的二進制ROM鏡像文件系統。.bin文件格式以具體的section來組織數據,每section有一個section頭,此部分包含這section的開始地址、長度和檢驗碼,見下圖:

?

圖1

Romimage.exe把邏輯section,比如一個應用程序的text或是.data區域的數據寫到.bin文件中。

?

為了能在塊驅動(block driver)的上層加載BINFS,我們必須在storage profile注冊表項下面加入(enter)塊驅動相應的注冊表鍵,如下所示,下面的示例注冊表信息表示我們可以增加自己塊驅動的storage profile來指定BINFS為默認的文件系統。

; Bind BINFS to the block driver

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFlash]

?????? "DefaultFileSystem"="BINFS"

?????? "PartitionDriver"="mspart.dll"

?????? "AutoMount"=dword:1

?????? "AutoPart"=dword:1

?????? "MountFlags"=dword:11

?????? "Folder"="ResidentFlash"

?????? "Name"="Samsung Flash Disk"

?????? "BootPhase"=dword:0

??? ??????

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFlash\BINFS]

??? "MountHidden"=dword:1

"MountAsROM"=dword:1

?

2.??? 如何應用(implemnet)BINFS

我們可以應用BINFS在NAND或NOR閃存上來讀取.bin文件。BINFS為最終的用戶(end user)解析每個區域(比如xipkernel,nk.bin).bin文件的記錄(record),為了使用BINFS,我們必須在bootloader中增加multi-bin區域技術,初始之外,還需要對config.bib文件進行必要的修改,從而使BINFS可以正確讀取我們的運行時鏡像文件。

?

為了應用BINFS,必須做下面的處理:

2.1? 在bootloader中增加對BINFS的支持

?

如果一個bootloader包含對BINFS的支持,那么bootloader能夠分區、格式化和寫數據到存儲介質中。Bootloader使用Bootpart庫(bootpart.lib)來向閃存寫數據和創建分區,在同一個儲存設備中需要創建BINFS和其他文件格式(比如是FAT)的分區。Bootloader使用Bootpart庫中的BP_OpenPartition()函數來創建BINFS分區和擴展分區。因為一旦Bootpart庫對閃存進行了分區,那么OS就不能修改MBR(master boot record),所以OS需要這個擴展分區來創建一個或多個數據分區。

?

Bootpart庫能夠創建一個保存引導參數(boot parameter)的引導分區,閃存的塊包含MBR扇區(sector)、BINFS存儲區域、引導參數分區(根據需要來決定,可選)和擴展分區,如下圖:

?

圖2

BIFS和引導參數分區是只讀,所以不能被格式化或刪除。

?

對于bootloader,Bootpart使FMD(flash media driver)的代碼比較抽象,這樣使得bootloader創建一個分區和指定分區中的數據偏移量就可以進行讀或寫了,另外Bootpart還可以對閃存進行低層格式化(low-level format)。

?

2.2? 修改config.bib的MEMORY部分來支持BINFS

為了應用BINFS,我們必須安裝下面的步驟來config.bib下面的內容:

⑴???? 加擴展區域(這里是指NK.bin,也即除了最小內核xipkernel.bin之外的其他OS部分)并且設置其類型為NANDIMAGE,這樣可以防止把擴展區域的地址空間分配為RAM,config.bib中的示例配置如下圖所示:

?

圖3

鏡像內核xipkernel為RAMIMAGE,見圖3,xipkernel區域是為支持BINFS能夠讀取存儲器上BINFS分區數據所需要的最小內核。因為這個內核必須存在于(reside in)RAM中和它是RAMIMAGE類型,所以包含在典型的情況下,xipkernel區域包含內核所需要的文件,而且xipkernel區域(xipkernel.bin)中必須包含下面的模塊:

????? Nk.exe

????? Kernel.dll

????? Coredll.dll

????? K.coredll.dll

????? Oalioctl.dll

????? Filesys.dll

????? Fsdmgr.dll

????? Mspart.dll

????? Romfsd.dll

????? Binfs.dll

????? Default.fdf or boot.hv

????? Fpcrt.dll (ARM-only)

????? Ceddk.dll (if required by your flash driver)

????? Your flash driver

?

⑶如果我們的flash驅動被設備管理器加載,那么還需要增加device.dll、devmgr.dll、regenum.dll、busenum.dll和pm.dll到xipkernel中。

⑷如內核支持KITL,那么也需要把kitl.dll包含進來。

⑸如要支持debug,需要增加hd.dll、osaxst0.dll和osaxst0.dll到xipkernel。

⑹把其他剩下部分(remaining items)包含到擴展區域(nk.bin)。

?

2.3? 修改config.bib的CONFIG部分來支持BINFS

config.bib中CONFIG部分必須指定RAM_AUTOSIZE=OFF和ROM_AUTOSIZE=OFF,XIPSCHAIN的值表示chain區域(chain.bin)的起始地址,這個值必須要和MEMORY部分指定的值一致,我們的BSP包中config.bib這部分內容如下:

?

圖4

?

2.4? 修改common.bib文件

如果我們的OS支持用戶模式驅動(User Mode Drivers),要修改common.bib文件中驅動模塊為非頁對齊的(non-pageable)。WINCE6.0支持設備驅動運行在用戶模式下,可是,如果導出PowerUp或PowerDown函數的用戶模式驅動和驅動代碼要求頁對齊(demand-paged), BINFS分區中有這種類型的驅動,或是這種類型驅動在.bib文件的FILE部分,或是這種驅動保存在外部存儲器中(external storage),這些情況都會發生頁缺陷出錯(a page fault error may occur)。

?

為了在BINFS中支持用戶模式驅動,我們必須修改common.bib文件中這些模塊的屬性,內容如下:

⑴獲取需要跟新模塊的列表。

使用 findstr /m “PowerDown” *.map查找導出PowerUp和PowerDown函數的驅動,如下圖:

圖5

⑵打開common.bib文件。

⑶通過上面命令找到的驅動,然后相應在common.bib文件中添加M標識以表示此模塊是非頁對齊的(non-pageable),如下所示:

coredll.dll $(_FLATRELEASEDIR)\coredll.dll XIPKERNEL SHM

⑷保存common.bib文件。

?

另外在common.reg中需要增加下面的內容

[HKEY_LOCAL_MACHINE\System\StorageManager\PartitionTable]

?? "20"="BOOT"

?? "21"="BINFS"

?

總結

以上是生活随笔為你收集整理的WINCE应用BINFS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。