WinCE下multi bin的實現

2021-05-12 13:57:48 字數 2098 閱讀 6587

使用平台:omap3530+wince6.0

最近幾個月一直在弄bootloader,利用sd卡公升級系統以及bootloader,主要的功能差不多做完了,但是啟動速度是乙個問題,26m的核心啟動大概需要12~13s的時間,遠遠不能達到使用者的需求,我們決定採用multi-bin來提高啟動速度。工作主要是他做的,我主要跟他打下手,現在功能實現了,我覺得有必要記下來,以便以後查起來方便。

multi-bin的實現需要一些基礎知識:bin檔案格式的理解、bib、reg檔案的配置、binfs的理解記憶eboot中對flash的分割槽操作,這些資料在我的部落格裡都有**的~~~現在說一下實現過程。

if imgmultibin

kernel                      84001000    00600000     ramimage ; 6mb

chain                        84601000    00001000     reserved ; 4k

nk                              84602000    039fe000     nandimage; 64mb - 6mb - 4k - 4k

else

nk                              84001000    03fff000      ramimage ; 64mb - 4k

endif

ram                             88000000    03000000     ram      ; 48mb

display                      8b000000    01000000     reserved ; 16mb

這裡說明下,在使用binfs之後,nandimage在bib檔案裡劃分的memory的範圍就屬於binfs管理了,在kernel需要訪問這個記憶體範圍的nb0資料的時候會讓binfs.dll去讀取。

在kernel.bin中包含基本的dll,本例中包含的dll如下所示:

nk.exe

kernel.dll

coredll.dll

k.coredll.dll

oalioctl.dll

filesys.dll

fsdmgr.dll

mspart.dll

romfsd.dll

binfs.dll

boot.hv

k.fpcrt.dll

ceddk.dll

nand.dll

device.dll

devmgr.dll

regenum.dll

busenum.dll

pm.dll

pmext.dll

wince.nls

這些基本的配置過後,最重要的就是在eboot中實現binfs分割槽,這算是我的老本行了,弄了幾個月eboot了,閉上眼都知道怎麼回事~~~~~~

主要就是用微軟提供的那些函式,bp開頭的,這裡不方便貼出來。

這些都弄好後,接下去就是燒寫到flash裡去了,有兩種方式:一種是用pb通過usb或者乙太網燒寫;還有一種就是通過我們自己的公升級方式---sd卡,檔名定義好,解析.bin檔案到flash即可,flash裡儲存的一定是nb0,不然,啟動的時候再解析會很慢。

實現的大致流程就是這樣的,但是我的那個牛人同事用了可移植性比較好的方法,相容原來的方式,用乙個環境變數就可以切換兩種方式,不得不佩服他下~~~

他在c:/wince600/platform/ti_evm_3530/files下新增binfshelper.vbs、kitlrequiredfiles.lst、preromimage.bat、

requiredfiles.lst檔案,修改了config.bib、platform.reg,利用romimage.bat呼叫preromimage.bat檔案,然後呼叫binfshelper.vbs指令碼檔案,將兩個檔案列表中的dll檔案新增到ce.bib檔案中,即成為最終的儲存空間配置檔案,他沒有修改platform.bib檔案,可移植性很強~~

實現後測試啟動時間由原來的12~13s縮減到8s左右,感覺在6.0中實現不了傳說中的2s啟動~~~客戶要求是要5s進作業系統介面,所以,接下來的工作就是優化nanflash驅動,提高讀資料效率。~~

WinCe 下 Mass Storage 的實現

mass storage的實際應用就是u盤,目標板和pc通過usb相連,pc可以把目標板識別為u盤,在很多產品上都很常用。這裡介紹一下在wince系統中u盤功能的實現。在談wince的usb mass storage實現之前,首先要具備以下條件 1.開發板支援usbclient裝置。2.開發板上至少...

WinCE下Socket程式設計

wince下socket程式設計 wince 不支援win32中socket非同步類 那個mfc類忘記啥名字了 在軟體開發中 網路程式設計 是必不可少的基本功了 本文所講的 socket 程式設計也就是網路程式設計中的一種形式 當然你如果想問我什麼叫 socket 很遺憾的是我也不能準確的告訴你!但...

WinCE系統下BootLoader的開發

wince系統下bootloader的開發 未知 引言windows ce.net是微軟公司向嵌入式領域推出的一款作業系統。它最大程度繼承了桌面版windows作業系統的豐富功能,同時又副入了許多新特性,以適應嵌入式領域的實際情況和要求。無論是商業應用需求,還是人們的多 消費需求,都能被採用ce作業...