WINCE6 0 S3C2443的啟動過程

2021-06-19 07:38:06 字數 1609 閱讀 2053

2.6 oemlaunch

bootloadermain函式接下來會呼叫oemlaunch函式,

圖1下面來學習oemlaunch的主要函式體

2.6.1 writeosimagetobootmedia函式

圖2下面就進去學習writeosimagetobootmedia的主要函式體

圖3⑵標識nboot,toc和eboot儲存的block的唯讀資訊等,並且擦出eboot之後的所有block。

圖4⑶呼叫bp_lowlevelformat來格式化所有儲存空間

該函式於級格式化,格式化flash裝置block,重新建立mbr並mbr存第個blockd第個扇區。dwstartblock起始block,dwnumblocks多少個block,dwflags格式化標記位,表示採何種格式化方式。該函式根據需由eboot函式調。

圖5我們來看pb中對bp_lowlevelformat的說明

圖6mbr: master boot sector, mbr在ce中主要是記錄後面的儲存器空間是如何分割槽的,這個記錄應該和pc上是一樣的,起始sector號碼,總共有幾個sectors,分割槽使用什麼檔案系統(這裡是binfs檔案系統,)。但是不同的是,mbr不需要承擔引導**的功能,在mbr之後,按照分割槽記錄中的起始位址,就是各個分割槽。

binfs: binary romimage file system

binfs就是ms給ce做的一種存放系統映象的乙個檔案系統,這其實就是乙個結構體(說是檔案系統確實比較勉強,結構體可能更合適),裡面有記錄各模組的起始位址,大小等的資訊,你要找模組可以根據這個資訊到後面找。

⑷在把sdram中的nk燒寫到nand中去之前,先呼叫bp_openpartition來建立乙個binfs分割槽,建好之後將nk.bin燒入binfs分割槽中。

圖7我們來看bp_openpartition在pb中的描述

圖8⑸bp_setdatapointer

該函式用於設定某乙個分割槽的資料指標,實際上資料指標是指在該分割槽中下一次被讀或寫的位置。一般會配合bp_readdata(..)和bp_writedata(..)兩個函式來用。hpartition為被建立分割槽的控制代碼,dwaddress為資料指標的新位置。

圖9⑹呼叫bp_writedata 往binfs分割槽裡面寫入資料nk.bin

圖10bp_writedata函式最終會呼叫到flash驅動的函式來寫資料。

⑺更新toc和把核心拷貝到sdram中,為下一步的跳轉執行做準備。

圖11⑻為系統建立擴充套件分割槽

圖12到此nk.bin對應的mbr也建立了,nk.bin也寫進去了,對應的位於1塊的toc資料也更新了,擴充套件分割槽也建立了,工作完成了,返回ok,假如把圖12部分**注釋掉,系統啟動會停止在串列埠輸出的下面資訊處

#### fmd_driver:::fmd_oemiocontrol

fmd_oemiocontrol: unrecognized ioctl (0x71c24).

到此就返回writeosimagetobootmedia函式了

2.6.2 得到更新後的toc資訊並寫回到toc所在的block中。

圖132.6.3 呼叫函式launch跳轉到oal.exe的startup函式執行,從此eboot階段的任務就完成了,開始進入oal.exe,也即進入nk的啟動過程了。

WINCE6 0 S3C2443自動重啟的實現

為了實現 wince標準 ui和我們產品的 shell 的切換,系統需要實現自動重啟的功能,這裡的自動重啟並不是按下 reset 鍵之後的從 nboot 開始執行的復位重啟,而只是跳轉到 nk的開始位址處執行,和 bootloader 沒有關係。在src inc oal ioctl tab.h 中,...

S3C2410 WinCE6 0 OAL的快速除錯

檢視 183 評分 0 0 前文分析了s3c2410 wince6.0 oal的啟動 本文接著介紹oal的移植過程。在繼續之前,再明確一下wince6.0 oal的作用。在wince6.0中,oal首先起了穿針引線的作用,這一點可從其啟動 看出來。第二個作用,暴露一些oem函式供kernel呼叫,具...

WinCE6 0 S3C6410 IIC驅動學習

整個的十月份一直都在研究camera的驅動,但收穫頗少,磕磕撞撞的沒有獲得多大的收穫。雖然目前工作的主要任務不在這一塊,但是還是想堅持下去,直到自己覺得camera驅動掌握到一定程度位置。由於camera驅動中使用了iic,而且發現現有camera驅動中,iic的部分出了問題,所以先入手掌握iic驅...