基于ARM9內(nèi)核的軟硬件平臺設(shè)計(jì)
其中Sibl是bootstrap加載并執(zhí)行的第一個引導(dǎo)程序,在程序大小上受到bootstrap加載的限制,因此設(shè)計(jì)上盡量做到了小型化和功能專一。它除了完成最基本的硬件初始化以外,主要功能是實(shí)現(xiàn)其他程序(包括Uboot)從NAND Flash的加載,完成下一級Bootloader運(yùn)行之前的內(nèi)存地址空間分布。
本文引用地址:http://www.ex-cimer.com/article/255836.htm第二級Bootloader采用功能強(qiáng)大的sourceforge開源軟件Uboot。Uboot的主要功能是完成嵌入式操作系統(tǒng)啟動前的底層硬件初始化,并為Linux內(nèi)核提供啟動參數(shù),最終引導(dǎo)操作系統(tǒng)Linux內(nèi)核啟動。另外,為了實(shí)現(xiàn)程序鏡像文件編程寫入NAND Flash,Uboot嵌入了一個NAND子系統(tǒng),通過 Uboot的用戶命令行實(shí)現(xiàn)對NAND Flash的讀/寫操作,可將程序鏡像寫入NAND Flash指定的地址空間。
(2) 嵌入式操作系統(tǒng)
LPC3180 內(nèi)部集成了ARM926EJS處理器內(nèi)核,帶存儲器管理單元MMU,支持多數(shù)主流嵌入式操作系統(tǒng)。系統(tǒng)通過編寫板級支持代碼,移植了 Linux2.6.10作為平臺操作系統(tǒng),利用穩(wěn)定的Linux2.6內(nèi)核實(shí)現(xiàn)任務(wù)調(diào)度、進(jìn)程管理、內(nèi)存管理等功能,同時,針對Linux的可配置性,對內(nèi)核進(jìn)行裁剪和硬件驅(qū)動代碼添加,系統(tǒng)實(shí)現(xiàn)了一個小型但功能強(qiáng)大的內(nèi)核程序,適應(yīng)了嵌入式系統(tǒng)存儲資源相對緊缺的狀況。
5 系統(tǒng)啟動流程分析
由上面的軟件結(jié)構(gòu)組成分析可知,整個系統(tǒng)啟動流程分為3個步驟:
① 系統(tǒng)上電后,首先從片上ROM固化的bootstrap程序執(zhí)行。bootstrap用于完成外部引導(dǎo)程序下載并跳入執(zhí)行。bootstrap運(yùn)行過程首先讀輸入引腳GPIO_01。如果GPIO_01置為高,則從NAND Flash下載程序引導(dǎo)系統(tǒng)啟動;如果置為低,則依次檢測USB接口和UART5接口,通過外部連接下載引導(dǎo)程序。系統(tǒng)通過設(shè)置GPIO_IO跳線來控制bootstrap啟動過程,本例將GPIO_01置為高,從NAND Flash下載程序。
?、?系統(tǒng)啟動的第二階段是運(yùn)行bootstrap下載的引導(dǎo)程序Sibl。Sibl完成系統(tǒng)必要的初始化后,從NAND Flash加載鏡像程序到指定的SDRAM空間。鏡像程序在起始位置添加了64字節(jié)的頭信息,用于Sibl識別和加載,頭信息數(shù)據(jù)結(jié)構(gòu)如下:
struct image_header {
uint32_tih_magic;/*鏡像頭信息同步字,Sibl通過該字識別程序*/
uint32_tih_hcrc;/*鏡像頭信息CRC校驗(yàn)碼*/
uint32_tih_time;/*存儲鏡像創(chuàng)建時間*/
uint32_tih_size;/*鏡像數(shù)據(jù)大小*/
uint32_tih_load;/*鏡像加載地址*/
uint32_tih_ep;/*鏡像入口地址*/
uint32_tih_dcrc;/*鏡像數(shù)據(jù)CRC校驗(yàn)碼*/
uint8_tih_os;/*操作系統(tǒng)信息*/
uint8_tih_arch;/*CPU體系結(jié)構(gòu)類型*/
uint8_tih_type;/*鏡像類型*/
uint8_tih_comp;/*壓縮類型*/
uint8_tih_name[32];/*鏡像名稱*/
}
Sibl 從NAND Flash起始地址開始搜索。如果讀到鏡像同步字ih_magic,則識別鏡像程序,并根據(jù)偏移地址讀取程序大小ih_size和加載地址 ih_load,將程序加載到指定的SDRAM空間;加載完成后根據(jù)CRC校驗(yàn)碼ih_dcrc對SDRAM數(shù)據(jù)進(jìn)行CRC檢測;最后根據(jù)鏡像類型 ih_type判斷鏡像是否可執(zhí)行,若可執(zhí)行,則跳入鏡像入口地址ih_ep,否則Sibl繼續(xù)搜索NAND Flash鏡像程序。
鏡像程序使用U-boot提供的工具mkimage添加頭信息,命令格式如下:
mkimage-A arch-O os-T type-C comp-a addr-e ep-n name-d data_file image
圖6 系統(tǒng)啟動過程內(nèi)存空間分布圖
?、?完成Sibl加載后,內(nèi)存空間分布如圖6所示,系統(tǒng)進(jìn)入啟動流程的第三階段U-boot。U-boot完成Linux內(nèi)核鏡像的解壓縮和操作系統(tǒng)啟動前的初始化,最終跳入內(nèi)核入口地址,完成對Linux的引導(dǎo)。
6 系統(tǒng)性能分析
系統(tǒng)構(gòu)建提供了一個完整的LPC3180嵌入式軟硬件平臺,下面對LPC3180浮點(diǎn)運(yùn)算能力進(jìn)行測試和分析。測試方法是使用一個浮點(diǎn)運(yùn)算密集的算法,用 ADS編譯器分別編譯使能硬件VFP和軟浮點(diǎn)運(yùn)算兩個版本的測試程序,并在不同的CPU時鐘頻率下比較運(yùn)行時間,結(jié)果如表1所列。
分析實(shí)驗(yàn)數(shù)據(jù),可以得出結(jié)論:VFP協(xié)處理器在相同時鐘頻率下,提高了5倍左右的浮點(diǎn)運(yùn)算性能。因此,LPC3180平臺結(jié)合VFP協(xié)處理器,能夠?qū)崿F(xiàn)復(fù)雜的浮點(diǎn)運(yùn)算密集算法。在微控制器中集成硬件浮點(diǎn)運(yùn)算單元,這使得微控制器的數(shù)據(jù)處理能力大大提高,能夠勝任多數(shù)的數(shù)字信號處理應(yīng)用。
表1 浮點(diǎn)運(yùn)算結(jié)果
結(jié)語
本文介紹了以LPC3180微控制器為核心的嵌入式軟硬件平臺的設(shè)計(jì)與實(shí)現(xiàn),并測試、驗(yàn)證了LPC3180的浮點(diǎn)運(yùn)算性能。該平臺對于LPC3180的應(yīng)用開發(fā)具有借鑒意義。目前LPC3180在醫(yī)療器械、工業(yè)控制、POS機(jī)、數(shù)字信號處理等領(lǐng)域有著廣泛的應(yīng)用。
參考文獻(xiàn)
[1] LPC3180 User Manual. http://standardics.philips.com.
[2] ISP1301 User Manual. http://semiconductors.philips.com.
存儲器相關(guān)文章:存儲器原理
評論