【正文】
但是,一個真正的通用bootloader,應該有更多的擴展功能來適應更多的應用。6 總結(jié)與展望 本文主要介紹的是基于ARM嵌入式系統(tǒng)通用bootloader的設計與實現(xiàn)。e, 16) : 0。 ++reg) { gdbdbi_enetaddr[reg] = s ? simple_strtoul (s, amp。 /* MAC Address */ { int i。 /* go init the NAND */endif(4) 條件編譯初始化顯示設備。void mem_malloc_init (ulong dest_addr){ mem_malloc_start = dest_addr。(6)對SDRAM內(nèi)存初始化。模式的轉(zhuǎn)換設計主要在階段2中實現(xiàn)。對于本課題的硬件系統(tǒng),外接2M的FLASH,映射到物理地址的0x00000000處;對于64M的SDRAM,則對應S3C2440A的SDRAM BANK0,映射到0x3000000處。一般地,GNU工具地開發(fā)流程如下:(1)編寫C、C++或者匯編源程序(2)用相關編譯器生成目標文件(3)編寫連接腳本(4)用連接器生成最終文件(elf格式)(5)用二進制轉(zhuǎn)換工具生成可下載的二進制代碼?!? 采用高速指令ICache,高速數(shù)據(jù)DCache,寫緩沖器和物理地址TAG RAM 以減少主存帶寬和響應速度帶來的影響。S3C2440A的最大特點是其核心處理器(CPU)是一個由Advanced RISC Machines有限公司設計的16/32位ARM920T的RISC處理器。Bootloader主要是裝載內(nèi)核鏡像,鏡像數(shù)據(jù)必須真實寫回SDRAM中,所以數(shù)據(jù)cache必須關閉;而對于指令cache,不存在強制性的規(guī)定,但是一般情況下,推薦關閉指令cache。至于涉及到具體的設計與實現(xiàn),可以參看第5章的具體內(nèi)容,并根據(jù)自己的硬件系統(tǒng)進行移植,也不是一件困難的事情。Bootloader的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時使用;此外,以后的系統(tǒng)更新也會使用bootloader的這種工作模式。通常多階段的bootloader能提供更為復雜的功能,以及更好的可移植性。然而在嵌入式系統(tǒng)中通常沒有像BIOS那樣的固件程序(有的嵌入式CPU有),因此整個系統(tǒng)的加載啟動任務就完全由bootloader來完成。 ARM最小系統(tǒng)描述對于任何一個系統(tǒng),都希望不是一個虛擬系統(tǒng),也就是說系統(tǒng)都希望是特定系統(tǒng),即有具體的CPU,有具體的存儲芯片以及有各種具體的外圍控制模塊。異常中斷向量表的大小位32字節(jié),其中每個異常中斷占據(jù)4個字節(jié)大小,保留了4個字節(jié)空間。對于具體的指令集,可以參考相關文檔。ARM指令字長為固定的32位,一條典型的ARM指令編碼格式如下: 數(shù)據(jù)處理指令編碼其中:★ Cond 位28-31,執(zhí)行指令的條件編碼?!? 靈活的第二操作數(shù) ARM指令的另一個重要的特點是數(shù)據(jù)處理類指令有靈活的第二操作數(shù)operand2(位與程序代碼的位0-11)。(2)ARM的存儲器格式在ARM體系中,每個字單元中包含4個字節(jié)單元或者兩個半字單元,其中1個半字單元中包含兩個字節(jié)單元。T:對于ARMv4以及更高的版本的T系列的ARM處理器 T=0表示執(zhí)行ARM指令T=1表示執(zhí)行Thumb指令 對于ARMv5以及更高版本的非T系列的ARM處理器★ T=0表示執(zhí)行ARM指令★ T=1表示強制下一條執(zhí)行的指令產(chǎn)生為定義指令中斷 Modes位控制處理器模式,在這不再贅述。由于用戶模式和系統(tǒng)模式不是異常中斷模式,所以它們沒有SPSR。由于ARM采用了流水線機制,當正確讀取了PC的值時,該值為當前指令地址加8個字節(jié)。任意時刻(也就是任意的處理器模式下),可見的寄存器包括15個通用寄存器(R0-R14)、一個或者兩個狀態(tài)寄存器以及程序計數(shù)器(PC)。當需要進行處理器模式的切換時,應用程序可以產(chǎn)生異常處理,在異常處理過程中進行模式的切換。 不同的ARM core可能還有所不同。1. ALU:它由兩個操作數(shù)鎖存器、加法器、邏輯功能、結(jié)果以及零檢測邏輯構(gòu)成。 低功耗 由于ARM架構(gòu)的處理器主要用于手持式嵌入式系統(tǒng)之中,因此ARM構(gòu)架在設計中十分注意低電壓、低功耗這一點,因而在手持式嵌入式系統(tǒng)得到廣泛的應用。RISC結(jié)構(gòu)優(yōu)先選取使用頻率最高的簡單指令,避免復雜指令;將指令長度固定,指令格式和尋址方式種類減少;以控制邏輯為主,不用或少用微碼控制等措施來達到上述目的?! RM10E系列微處理器包含ARM1020E、ARM1022E和ARM1026EJS三種類型,以適用于不同的應用場合?!?6級整數(shù)流水線,指令執(zhí)行效率更高?!?全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)?! RM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應用場合。具有以下特點:★ 5級整數(shù)流水線,指令執(zhí)行效率更高?!?代碼密度高并兼容16位的Thumb指令集。世界各大半導體生產(chǎn)商從ARM公司購買其設計的ARM微處理器核,根據(jù)各自不同的應用領域,加入適當?shù)耐鈬娐罚瑥亩纬勺约旱腁RM微處理器芯片進入市場。目前據(jù)不完全統(tǒng)計,全世界嵌入式處理器的品種總量已經(jīng)超過1000多種,流行體系結(jié)構(gòu)有30多個系列。然而,如何進行加載操作系統(tǒng)這個問題卻很少有人提出。針對嵌入式系統(tǒng)的各種微處理器遍布各個角落。嵌入式系統(tǒng)廣泛地應用在信息終端、工業(yè)控制和信息家電等領域。 BootloaderABSTRACT With the popularity of mobile devices and development of embedded systems has bee a hot is not a recent emergence of new technology, but with the microelectronics and puter technology, more and more microcontrol chip functions, and embedded microcontroller chip devices and systems more and more, making this technology moreand more volume of its hardware and software size, cost, power consumption and reliability have made stringent powerful embedded systems to achieve more and more plex, the resulting reliability is greatly more recent trend is a powerful embedded systems usually require an operating system to support this operating system is already mature and stable, can be embedded Linux, WINCE and so on. Accordingly, it also made a request to the , many semiconductor manufacturers are producing generic architecture based on ARM microprocessing chip, ARM technology has in today39。相應地,這也給處理器提出了要求。盡我所知,除文中特別加以標注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過的研究成果,也不包含我為獲得 及其它教育機構(gòu)的學位或?qū)W歷而使用過的材料。它對軟硬件的體積大小、成本、功耗和可靠性都提出了嚴格的要求。在實踐平臺上,本課題硬件上采用了ARM9系列的S3C2440A作為處理器,具有一定的代表性,并以此來搭建課題的硬件實踐平臺,軟件上以Linux作為操作系統(tǒng)。在這良好的經(jīng)濟環(huán)境下,嵌入式系統(tǒng)領域得到進一步的拓寬與發(fā)展。簡單的嵌入式系統(tǒng)根本沒有操作系統(tǒng),而只是一個控制循環(huán)。應該說,ARM無處不在。因此,在真正的開發(fā)環(huán)節(jié)上,本課題主要基于ARM 920T體系構(gòu)架的S3C2440A處理器,很具有代表性,并由此在理論上擴展到整個ARM系統(tǒng)。1991年ARM公司成立于英國劍橋,主要出售芯片設計技術的授權。ARM7微處理器系列具有如下特點:★ 具有嵌入式ICE-RT邏輯,調(diào)試開發(fā)方便?! RM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMIS、ARM720T、ARM7EJ?!?MPU支持實時操作系統(tǒng)。★ 支持32位ARM指令集和16位Thumb指令集?! RM9E系列微處理器包含ARM926EJS、ARM946ES和ARM966ES三種類型,以適用于不同的應用場合?!?支持數(shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力★ 主頻最高可達400MIPS。 RISC指令集 傳統(tǒng)的CISC(Complex Instruction Set Computer,復雜指令集計算機)結(jié)構(gòu)有其固有的缺點,即隨著計算機技術的發(fā)展而不斷引入新的復雜的指令集,為支持這些新增的指令,計算機的體系結(jié)構(gòu)會越來越復雜,然而,在CISC指令集的各種指令中,其使用頻率卻相差懸殊,大約有20%的指令會被反復使用,占整個程序代碼的80%。Thumb指令集比通常的8位和16位RISC/CISC處理器具有更好的代碼密度,而芯片面積只增加6%,可使程序存儲器更小。 ARM core描述盡管本本文實現(xiàn)主要涉及軟件上的開發(fā),但是軟件上代碼的實現(xiàn)更多的都涉及芯片構(gòu)架,因此在這里簡要介紹一下一般ARM core構(gòu)架。FPA10浮點加速器是作為協(xié)處理方式與ARM相連,并通過協(xié)處理指令的解釋來執(zhí)行。其中,除系統(tǒng)模式外,其他5種特權模式又稱為異常模式。但是系統(tǒng)模式屬于特權模式,可以訪問所有的系統(tǒng)資源,也可以直接進行處理器模式的切換,它主要供操作系統(tǒng)任務使用。當通過跳轉(zhuǎn)指令調(diào)用子程序時,R14被設置為該子程序的返回地址;在子程序中,把R14的指賦值到程序計數(shù)器PC中時,子程序返回。每一種處理器異常模式下都有一個專用的物理狀態(tài)寄存器,稱為SPSR(備份程序狀態(tài)寄存器)。 CPSR的低8位稱為控制位,當異常中斷發(fā)生時這些位發(fā)生改變。ARM的地址空間也可以看作是230個32位的字單元。標準的ARM指令每條都是32位,有些ARM核還可以執(zhí)行16位的Thumb指令集。Thumb指令集的整體執(zhí)行速度比ARM32位指令集快,而且提高了代碼密度。★ Rd 位12-15,目標寄存器編碼。在異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下一條指令處執(zhí)行。★ 設置當前的程序狀態(tài)寄存器CPSR中相應的位,包括設置CPSR中的位,使處理器進入相應的執(zhí)行模式;設置CPSR中的位,禁止IRQ中斷,當進入FIQ模式時,禁止FIQ模式。 Bootloader的基本概念一個嵌入式Linux系統(tǒng)從軟件的角度看通常可以分為四個層次:引導加載序、Linux內(nèi)核、文件系統(tǒng)、用戶應用程序。不同的體系結(jié)構(gòu)需求的bootloader是不同的;除了體系結(jié)構(gòu),bootloader還依賴于具體的嵌入式板級設備的配置。這種模式是bootloader的正常工作模式,因此當以嵌入式產(chǎn)品發(fā)布的時候,bootloader必須工作在這種模式下。 ARM Bootloader的共性 從上面bootloader的基本概念可以看出,bootloader的設計與實現(xiàn)是與具體的CPU以及具體的硬件系統(tǒng)緊密相關的,從上一章的實現(xiàn)就可以看出,要實現(xiàn)一個通用的ARM bootloader,即要適合所有的ARM處理器以及硬件系統(tǒng),是不太可能的事情。(4)啟動內(nèi)核鏡像(必需):根據(jù)內(nèi)核鏡像保存的存儲介質(zhì)不同,可以有兩種啟動方式:FALSH啟動以及RAM啟動;但是無論是哪