WinCE開發中Boot Loader的點點滴滴

2021-06-27 02:48:22 字數 1571 閱讀 7170

wince開發中boot loader的點點滴滴

boot loader是定製windows ce作業系統過程中乙個重要的開發環節。boot loader的作用正如名字中的兩個單詞:boot,既引導系統,如果基於ce的產品採用bios實現硬體初始化和配置,那麼boot loader只需引導軟體系統。如果沒有採用bios,那麼boot loader的作用還包括實現bios的基本功能;loader,既載入作業系統,在整個系統正常啟動後boot loader通過不同的方式載入ce的核心檔案nk.bin。當boot loader把nk.bin解壓到ram後就把cpu

控制權交給ce核心。x86平台的boot loader種類最多,下面就對x86平台的boot loader做一說明:

x86 rom boot loader

又叫rom boot,記得以前寫過的文章中提到了rom boot。rom boot 被設計存放在flash

/eeprom中,也就是原來bios的位置,這樣當上電後cpu到固定位址執行**,也就是執行了rom boot包含的**,它對整個硬體系統進行初始化和檢測,並且支援通過網絡卡

硬碟的活動分割槽中尋找nk.bin檔案載入。rom boot的優點就是引導並且載入速度快,而且它自身完成了所有的操作,這樣就不用bios、msdos,更不用loadcepc了。缺點就是需要ce開發者讀懂它的原始碼並修改。ce提供了rom boot的所有原始碼,讀者可以查詢標題為「x86 source organization」的幫助文件,在這個文件中列舉了所有相關的目錄及內容,另外還列舉了四種網絡卡的驅動程式原始碼所在目錄。

x86 bios boot loader

bios boot loader和msdos+loadcepc兩種方式差不多,bios boot loader只是不需要msdos作業系統,它仍然需要bios和fat檔案系統。下面講一下採用bios boot loader的系統的引導順序:系統上電後bios執行完硬體初始化和配置後,bios檢查引導裝置的啟動順序,如果引導裝置是硬碟、cf卡、doc(disk-on-chip)一類的儲存裝置,那麼就載入這些儲存器上的主引導扇區(master boot sector)中的實模式**到記憶體

,然後執行這些**。這裡提到的**被稱為主引導記錄(mbr)。mbr首先在分割槽表(同樣位於主引導扇區)中尋找活動分割槽,如果存在活動分割槽,那麼載入位於這個活動分割槽的第乙個扇區上的**到記憶體,然後執行這些**。這裡提到的活動分割槽的第乙個扇區被稱為引導扇區(boot sector)。引導扇區上的**的功能是找到並且載入bios boot loader,bios boot loader再載入nk.bin。引導扇區的原始碼位於%_winceroot%\public\common\oak\csp\i486\biosloader\bootsector目錄下。有乙個現成的引導扇區映象檔案,它的路徑為%_winceroot%\public\common\oak\csp\i486\biosloader\diskimages\setupdisk\bsect.img。而對於bios boot loader,ce提供了setupdisk.144和bootdisk.144兩個檔案,以「.144」為副檔名的檔案的解壓我在前面的文章中講過了。這兩個檔案解開後都包含了引導扇區和boot loader的映象檔案。執行「mkdiskc

WinCE中nandflash驅動開發介紹

這裡介紹nandflash驅動,在wince中,有專門針對flash儲存裝置驅動的支援,一般傳統採用fal fmd的架構。在wince最新的版本中,也就是windows ce6.0 r2中,還支援mdd pdd的架構。在fal fmd架構中,fal層由微軟來實現,我們需要實現fmd層的相關介面函式。...

WinCE中nandflash驅動開發介紹

這裡介紹nandflash驅動,在wince中,有專門針對flash儲存裝置驅動的支援,一般傳統採用fal fmd的架構。在wince最新的版本中,也就是windows ce6.0 r2中,還支援mdd pdd的架構。在fal fmd架構中,fal層由微軟來實現,我們需要實現fmd層的相關介面函式。...

WinCE中nandflash驅動開發介紹

先來談一下flash,flash是一種非易失儲存器,一般flash儲存裝置分為nandflash和norflash。這兩種flash各有優缺點。在讀寫速度上,norflash的讀速度快一些,nandflash的寫速度會快一些。nandflash的容量一般都比norflash大很多,而且相比 比較便宜...