【正文】
ed RISC Machines),既可以認為是一個公司的名字,也可以是對一類微處理器的通稱,還可以認為是一種技術的名字。目前據(jù)不完全統(tǒng)計,全世界嵌入式處理器的品種總量已經(jīng)超過1000多種,流行體系結構有30多個系列。 主要研究工作本文的題目盡管涉及到ARM系統(tǒng),但是,由于bootloader的特殊性以及個別性,即bootloader與具體的處理器以及具體的硬件系統(tǒng)緊密聯(lián)系在一起,需要實際的完整硬件系統(tǒng)支持,而基于ARM 920T體系的芯片實在太多,每款芯片除了具有基本的ARM體系結構的通性外,通常還具有各自獨特的特性,還需分別處理。然而,如何進行加載操作系統(tǒng)這個問題卻很少有人提出。目前,ARM芯片廣泛應用于汽車電子、保安設備、無線通信、智能手機等多個領域。針對嵌入式系統(tǒng)的各種微處理器遍布各個角落。特別地,現(xiàn)在對嵌入式軟件來說,都需要操作系統(tǒng)的支持。嵌入式系統(tǒng)廣泛地應用在信息終端、工業(yè)控制和信息家電等領域。 Bootloader目 錄摘 要 IABSTRACT II1 緒言 1 研究背景 1 主要研究工作 2 主要內(nèi)容 22 ARM處理器簡介 3 ARM處理器 3 ARM處理器介紹 3 ARM處理器的優(yōu)勢 7 RISC指令集 7 低功耗 83 ARM體系結構介紹 10 ARM core描述 10 ARM處理器工作狀態(tài)及模式 11 ARM處理器模式 11 ARM寄存器組介紹 12 ARM存儲系統(tǒng) 15 ARM指令集介紹 16 ARM體系的異常中斷 17 ARM最小系統(tǒng)描述 194 Bootloader的概念 20 Bootloader的基本概念 20 Bootloader的操作模式 21 Bootloader的概念擴展 21 ARM Bootloader的共性 225 Bootloader的設計與實現(xiàn) 24 課題研究的平臺環(huán)境 24 硬件平臺 24 軟件環(huán)境以及軟件開發(fā)工具 25 Bootloader的總體設計 26 階段設計 26 地址規(guī)劃設計 26 模式設計 27 Bootloader的具體實現(xiàn) 30 階段1的代碼實現(xiàn) 30 階段2的代碼實現(xiàn) 34 代碼的編譯 376 總結與展望 40參考文獻 41致 謝 421 緒言 研究背景隨著人民生活水平提高帶來巨大的消費需求、信息化進程的推進、電信運營業(yè)的發(fā)展,信息產(chǎn)業(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。Bootloader是嵌入式系統(tǒng)中執(zhí)行在內(nèi)核操作系統(tǒng)前的一段代碼,它的基本作用就是加載內(nèi)核鏡像。相應地,這也給處理器提出了要求。它并不是最近出現(xiàn)的新技術,只是隨著微電子技術和計算機技術的發(fā)展,微控制芯片功能越來越強大,而嵌入微控制芯片的設備和系統(tǒng)越來越多,從而使得這種技術越來越引人注目。它對軟硬件的體積大小、成本、功耗和可靠性都提出了嚴格的要求。當今,眾多的半導體廠商都生產(chǎn)基于ARM體系結構的通用微處理芯片,ARM技術已經(jīng)在當今的嵌入式微處理器領域中占據(jù)了它的領先地位。在實踐平臺上,本課題硬件上采用了ARM9系列的S3C2440A作為處理器,具有一定的代表性,并以此來搭建課題的硬件實踐平臺,軟件上以Linux作為操作系統(tǒng)。s embedded microprocessors occupy its leading reason is mainly that it39。在這良好的經(jīng)濟環(huán)境下,嵌入式系統(tǒng)領域得到進一步的拓寬與發(fā)展。在嵌入式系統(tǒng)的開發(fā)中,嵌入式軟件是實現(xiàn)各種系統(tǒng)功能的關鍵,也是計算機技術最活躍的研究方向之一。簡單的嵌入式系統(tǒng)根本沒有操作系統(tǒng),而只是一個控制循環(huán)。特別是采用ARM技術IP核的各種微處理器遍及各類產(chǎn)品市場。應該說,ARM無處不在。這就產(chǎn)生了另一個相關主題bootloader。因此,在真正的開發(fā)環(huán)節(jié)上,本課題主要基于ARM 920T體系構架的S3C2440A處理器,很具有代表性,并由此在理論上擴展到整個ARM系統(tǒng)。嵌入式微處理目前主要有Am186/8386EX、SC400、Power PC、MIPS、ARM系列等。1991年ARM公司成立于英國劍橋,主要出售芯片設計技術的授權。目前,全世界有幾十家大的半導體公司都使用ARM公司的授權,因此既使得ARM技術獲得更多的第三方工具、制造、軟件的支持,又使得整個系統(tǒng)成本降低,使產(chǎn)品更容易進入市場被消費者所接受,更具有競爭力。ARM7微處理器系列具有如下特點:★ 具有嵌入式ICE-RT邏輯,調(diào)試開發(fā)方便?!?對操作系統(tǒng)的支持廣泛,包括Windows CE、Linux、Palm OS等。 ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMIS、ARM720T、ARM7EJ?!??!?MPU支持實時操作系統(tǒng)。 (3)ARM9E微處理器系列ARM9E系列微處理器為可綜合處理器,使用單一的處理器內(nèi)核提供了微控制器、DSP、Java應用系統(tǒng)的解決方案,極大的減少了芯片的面積和系統(tǒng)的復雜程度?!?支持32位ARM指令集和16位Thumb指令集。★ MPU支持實時操作系統(tǒng)?! RM9E系列微處理器包含ARM926EJS、ARM946ES和ARM966ES三種類型,以適用于不同的應用場合。★ 支持32位ARM指令集和16位Thumb指令集。★ 支持數(shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力★ 主頻最高可達400MIPS。(5)StrongArm微處理器系列Intel StrongARM SA1100處理器是采用ARM體系結構高度集成的32位RISC微處理器。 RISC指令集 傳統(tǒng)的CISC(Complex Instruction Set Computer,復雜指令集計算機)結構有其固有的缺點,即隨著計算機技術的發(fā)展而不斷引入新的復雜的指令集,為支持這些新增的指令,計算機的體系結構會越來越復雜,然而,在CISC指令集的各種指令中,其使用頻率卻相差懸殊,大約有20%的指令會被反復使用,占整個程序代碼的80%。到目前為止,RISC體系結構也還沒有嚴格的定義,一般認為,RISC體系結構應具有如下特點:★ 采用固定長度的指令格式,指令歸整、簡單、基本尋址方式有2~3種。Thumb指令集比通常的8位和16位RISC/CISC處理器具有更好的代碼密度,而芯片面積只增加6%,可使程序存儲器更小。ARM架構的設計采用了以下一些措施:★ 降低電源電壓★ 減少門的翻轉(zhuǎn)次數(shù),當某個功能電路不需要時,禁止門翻轉(zhuǎn)★ 減少門的數(shù)目,即降低芯片的集成度★ 降低時鐘頻率ARM還其他采用了一些特別的技術,在保證高性能的前提下盡量縮小芯片的面積:★ 所有的指令都可以根據(jù)前面的執(zhí)行結果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率;★ 可用加載/存儲指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率;★ 可在一條數(shù)據(jù)處理指令中同時完成邏輯處理和移位處理;★ 在循環(huán)處理中使用地址的自動增減來提高運行效率;ARM的低功耗,使得ARM在專門針對嵌入式系統(tǒng)的處理器市場中始終處于有利的地位。 ARM core描述盡管本本文實現(xiàn)主要涉及軟件上的開發(fā),但是軟件上代碼的實現(xiàn)更多的都涉及芯片構架,因此在這里簡要介紹一下一般ARM core構架。2. 桶形移位寄存器:ARM采用了3232位的桶形移位寄存器,這樣可以使在左移/右移n位、環(huán)移n位和算術右移n位等都可以一次完成。FPA10浮點加速器是作為協(xié)處理方式與ARM相連,并通過協(xié)處理指令的解釋來執(zhí)行。因此。其中,除系統(tǒng)模式外,其他5種特權模式又稱為異常模式。這種體系結構可以使操作系統(tǒng)控制整個系統(tǒng)的資源。但是系統(tǒng)模式屬于特權模式,可以訪問所有的系統(tǒng)資源,也可以直接進行處理器模式的切換,它主要供操作系統(tǒng)任務使用。在所有的寄存器中,有些是各模式共用的同一個物理寄存器;有些寄存器是各模式自己擁有的獨立的物理寄存器。當通過跳轉(zhuǎn)指令調(diào)用子程序時,R14被設置為該子程序的返回地址;在子程序中,把R14的指賦值到程序計數(shù)器PC中時,子程序返回。也就是說,對于ARM指令集來說,PC指向當前指令的下兩條指令的地址。每一種處理器異常模式下都有一個專用的物理狀態(tài)寄存器,稱為SPSR(備份程序狀態(tài)寄存器)。當用戶模式或者系統(tǒng)模式中訪問SPSR,將會產(chǎn)生不可預知的結果。 CPSR的低8位稱為控制位,當異常中斷發(fā)生時這些位發(fā)生改變。 ARM存儲系統(tǒng)這里僅僅介紹ARM編程模型中與存儲系統(tǒng)相關的一些概念。ARM的地址空間也可以看作是230個32位的字單元。但是在字單元中,4個字節(jié)哪一個是高位字節(jié),哪一個是低位字節(jié),則有兩種不同的格式:bigendian格式和littleendian格式。標準的ARM指令每條都是32位,有些ARM核還可以執(zhí)行16位的Thumb指令集。它既可以是立即數(shù),也可以是邏輯運算數(shù),使得ARM指令可以在讀取數(shù)值的同時進行算術和移位操作。Thumb指令集的整體執(zhí)行速度比ARM32位指令集快,而且提高了代碼密度。★ I 位25,決定operand2的格式?!? Rd 位12-15,目標寄存器編碼。 ARM體系的異常中斷 在ARM體系中通常有以下3種方式控制程序的執(zhí)行流程:★ 在程序正常執(zhí)行過程種,每執(zhí)行一條ARM指令,程序計數(shù)器寄存器(PC)的值加4個字節(jié);每執(zhí)行一條Thumb指令,程序計數(shù)器寄存器的值加2個字節(jié)。在異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下一條指令處執(zhí)行。每個異常中斷對應的中斷向量表中的4個字節(jié)的空間中放了一個跳轉(zhuǎn)指令或者一個向PC寄存器中賦值的數(shù)據(jù)訪問指令?!? 設置當前的程序狀態(tài)寄存器CPSR中相應的位,包括設置CPSR中的位,使處理器進入相應的執(zhí)行模式;設置CPSR中的位,禁止IRQ中斷,當進入FIQ模式時,禁止FIQ模式。對于本課題來說,最終的bootloader也必須在具體的系統(tǒng)上運行起來。 Bootloader的基本概念一個嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃樗膫€層次:引導加載序、Linux內(nèi)核、文件系統(tǒng)、用戶應用程序。在嵌入式Linux中, 。不同的體系結構需求的bootloader是不同的;除了體系結構,bootloader還依賴于具體的嵌入式板級設備的配置。從固態(tài)存儲設備上啟動的bootloader大多數(shù)是二階段的啟動過程,也即啟動過程可以分為stage 1和stage 2兩部分。這種模式是bootloader的正常工作模式,因此當以嵌入式產(chǎn)品發(fā)布的時候,bootloader必須工作在這種模式下。工作于這種模式下的bootloader通常都會向它的中斷用戶提供一個簡單的命令行接口。 ARM Bootloader的共性 從上面bootloader的基本概念可以看出,bootloader的設計與實現(xiàn)是與具體的CPU以及具體的硬件系統(tǒng)緊密相關的,從上一章的實現(xiàn)就可以看出,要實現(xiàn)一個通用的ARM bootloader,即要適合所有的ARM處理器以及硬件系統(tǒng),是不太可能的事情。 對于ARM bootloader的一些共同特性,理論上只局限于bootloader的基本功能,因為擴展功能眾多,可以有串口、USB、以太網(wǎng)接口、IDE、CF等,無法進行歸納與總結。(4)啟動內(nèi)核鏡像(必需):根據(jù)內(nèi)核鏡像保存的存儲介質(zhì)不同,可以有兩種啟動方式:FALSH啟動以及RAM啟動;但是無論是哪種啟動方式,下面的系統(tǒng)狀態(tài)必須得到滿足:★ CPU寄存器的設置:R0=0; R1=機器類型; R2=啟動參數(shù)標記列表在RAM中的起始地址; 這三個