




已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式系統(tǒng)ARM的通用bootloader的設(shè)計(jì)與實(shí)現(xiàn)-論文嵌入式系統(tǒng)ARM的通用bootloader的設(shè)計(jì)與實(shí)現(xiàn)目錄摘要IAbstractII目錄III緒言1. 背景2. 主要研究工作3. 主要內(nèi)容第一章ARM簡(jiǎn)介1.1 ARM 簡(jiǎn)介1.1.1 ARM處理器介紹1.2 ARM處理器的優(yōu)勢(shì)特點(diǎn)1.2.1 RISC指令集1.2.2 低功耗第二章 ARM體系結(jié)構(gòu)介紹2.1 ARM core描述2.2 編程模型介紹2.2.1 ARM處理器模式2.2.2 ARM寄存器組介紹2.2.3 ARM存儲(chǔ)系統(tǒng)2.2.4 ARM指令集介紹2.2.5 ARM體系的異常中斷2.3 ARM最小系統(tǒng)描述2.4 Intel Xscale系統(tǒng)構(gòu)架2.4.1 PXA255介紹第三章 Bootloader的概念3.1 Bootloader的基本概念3.2 Bootloader的操作模式3.3 Bootloader的概念擴(kuò)展3.4 ARM Bootloader的共性第四章 Bootloader的設(shè)計(jì)與實(shí)現(xiàn)4.1 研究的平臺(tái)環(huán)境4.1.1 硬件平臺(tái)4.1.2 軟件環(huán)境以及軟件開(kāi)發(fā)工具4.2 Bootloader的總體設(shè)計(jì)4.2.1 階段設(shè)計(jì)4.2.2 地址規(guī)劃設(shè)計(jì)4.2.3 模式設(shè)計(jì)4.3 Bootloader的具體實(shí)現(xiàn)4.3.1 階段1的代碼實(shí)現(xiàn)4.3.2 階段2的代碼實(shí)現(xiàn)4.3.3 代碼的編譯4.3.4 目標(biāo)文件的鏈接與轉(zhuǎn)換4.4 代碼組織結(jié)構(gòu)4.5 使用操作第五章實(shí)驗(yàn)結(jié)果與測(cè)評(píng)5.1 實(shí)驗(yàn)結(jié)果5.1.1 基本功能的實(shí)現(xiàn)結(jié)果5.1.2 擴(kuò)展功能的實(shí)現(xiàn)結(jié)果5.2 程序性能5.2.1 擴(kuò)展功能的功能性測(cè)試數(shù)據(jù)5.2.2 程序的可移植性第六章 總結(jié)與展望緒言1.研究背景隨著人民生活水平提高帶來(lái)巨大的消費(fèi)需求、信息化進(jìn)程的推進(jìn)、電信運(yùn)營(yíng)業(yè)的發(fā)展,信息產(chǎn)業(yè)市場(chǎng)空間將得到進(jìn)一步拓展。在這良好的經(jīng)濟(jì)環(huán)境下,嵌入式系統(tǒng)領(lǐng)域得到進(jìn)一步的拓寬與發(fā)展。嵌入式系統(tǒng)是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可剪裁來(lái)適應(yīng)系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)、電子技術(shù)和各行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物,它是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)。嵌入式系統(tǒng)廣泛地應(yīng)用在信息終端、工業(yè)控制和信息家電等領(lǐng)域。在嵌入式系統(tǒng)的開(kāi)發(fā)中,嵌入式軟件是實(shí)現(xiàn)各種系統(tǒng)功能的關(guān)鍵,也是計(jì)算機(jī)技術(shù)最活躍的研究方向之一。不同應(yīng)用對(duì)嵌入式軟件系統(tǒng)有不同的要求,并且隨著計(jì)算機(jī)技術(shù)的發(fā)展,這些要求也在不斷變化。通常,應(yīng)用系統(tǒng)對(duì)嵌入式軟件的基本要求是體積小、執(zhí)行速度快、具有較好的可剪裁性和可移植性。特別地,現(xiàn)在對(duì)嵌入式軟件來(lái)說(shuō),都需要操作系統(tǒng)的支持。簡(jiǎn)單的嵌入式系統(tǒng)根本沒(méi)有操作系統(tǒng),而只是一個(gè)控制循環(huán)。但是,當(dāng)系統(tǒng)變得越來(lái)越復(fù)雜時(shí),就需要一個(gè)嵌入式操作系統(tǒng)來(lái)支持,否則應(yīng)用軟件就會(huì)變得過(guò)于復(fù)雜,使開(kāi)發(fā)難度過(guò)大,安全性和可靠性都難以保證。嵌入式軟件,特別是操作系統(tǒng)的支持,使得對(duì)硬件的要求越來(lái)越高。針對(duì)嵌入式系統(tǒng)的各種微處理器遍布各個(gè)角落。特別是采用ARM技術(shù)IP核的各種微處理器遍及各類產(chǎn)品市場(chǎng)。ARM技術(shù)以其較高的性能和功效,使得在嵌入式系統(tǒng)中得到廣泛應(yīng)用。世界上幾乎所有的主要半導(dǎo)體廠商都生產(chǎn)基于ARM體系結(jié)構(gòu)的通用芯片,如TI,Motorola,Intel,NS,Ateml,Philips,SAMSUNG等。目前,ARM芯片廣泛應(yīng)用于無(wú)線產(chǎn)品、PDA、GPS、網(wǎng)絡(luò)、消費(fèi)電子產(chǎn)品、STB及智能卡。應(yīng)該說(shuō),ARM無(wú)處不在。隨著嵌入式產(chǎn)品中高端微處理器ARM的加入以及軟件上操作系統(tǒng)的支持,使得整個(gè)嵌入式系統(tǒng)擁有了完整的構(gòu)架?,F(xiàn)在,專門(mén)為嵌入式產(chǎn)品開(kāi)發(fā)的各個(gè)操作系統(tǒng)層出不窮,WINDOW CE,POCKET PC,Linux等等,各界關(guān)注地也特別多。然而,如何進(jìn)行加載操作系統(tǒng)這個(gè)問(wèn)題卻很少有人提出。這就產(chǎn)生了另一個(gè)相關(guān)主題bootloader。Bootloader本身的功能就是引導(dǎo)與加載內(nèi)核鏡像。如何實(shí)現(xiàn)bootloader的基本功能,如何針對(duì)基于ARM體系的微處理器來(lái)實(shí)現(xiàn)bootloader,就成為本課題的一個(gè)基本論題。,除了基本功能,bootloader還能有什么更加具體的擴(kuò)展功能來(lái)方便各個(gè)系統(tǒng)開(kāi)發(fā)者,都屬于本課題討論的范疇。2.主要研究工作本文的題目盡管涉及到ARM系統(tǒng),但是,由于bootloader的特殊性以及個(gè)別性,即bootloader與具體的處理器以及具體的硬件系統(tǒng)緊密聯(lián)系在一起,需要實(shí)際的完整硬件系統(tǒng)支持,而基于ARM體系的芯片實(shí)在太多,每款芯片除了具有基本的ARM體系結(jié)構(gòu)的通性外,通常還具有各自獨(dú)特的特性,還需分別處理。因此,在真正的開(kāi)發(fā)環(huán)節(jié)上,本課題主要基于Intel Xscale體系構(gòu)架的PXA255處理器,Xscale本身是與ARM V5TE構(gòu)架兼容的,因此很具有代表性,并由此在理論上擴(kuò)展到整個(gè)ARM系統(tǒng)。在實(shí)現(xiàn)過(guò)程中具體研究開(kāi)發(fā)如下:l選擇基于Intel Xscale構(gòu)架的PXA255芯片作為處理器,并以此構(gòu)建一套硬件開(kāi)發(fā)系統(tǒng)l與實(shí)際項(xiàng)目接軌,選擇GNU的linux作為系統(tǒng)的操作系統(tǒng)l在上述軟硬件開(kāi)發(fā)系統(tǒng)上實(shí)現(xiàn)基于PXA255的bootloader的基本功能,即引導(dǎo)加載內(nèi)核鏡像的功能l在實(shí)現(xiàn)bootloader基本功能的基礎(chǔ)上,增加bootloader的擴(kuò)展功能,包括:通過(guò)串口打印調(diào)試信息、通過(guò)串口更新鏡像、通過(guò)USB接口更新鏡像、實(shí)現(xiàn)bootloader加載模式與下載模式的轉(zhuǎn)換以及實(shí)現(xiàn)對(duì)FLASH的擦寫(xiě)操作支持l在Xscale的構(gòu)架基礎(chǔ)上在理論上擴(kuò)展到ARM系統(tǒng),分析對(duì)于ARM系統(tǒng),bootloader實(shí)現(xiàn)的一些共性以及一些限制l分析對(duì)于實(shí)現(xiàn)bootloader,移植到其他ARM平臺(tái)的相關(guān)處理3.主要內(nèi)容根據(jù)所涉及的主要研究工作,本文的內(nèi)容主要包括一下幾個(gè)部分:第一章簡(jiǎn)要敘述ARM世界的一些主流處理器以及其優(yōu)勢(shì)特點(diǎn);緊接著第二章則詳細(xì)描述了ARM的體系結(jié)構(gòu),指令系統(tǒng)并在此基礎(chǔ)上簡(jiǎn)單的描述了一下PXA255的相關(guān)結(jié)構(gòu);第三章的內(nèi)容是介紹bootloader的概念,并專門(mén)針對(duì)ARM bootloader進(jìn)行了詳細(xì)說(shuō)明;第四章在首先介紹軟硬件平臺(tái)之后詳細(xì)介紹了bootloadr的實(shí)現(xiàn),包括基本功能,擴(kuò)展功能等,以及軟件上的編譯連接的實(shí)現(xiàn),代碼組織結(jié)構(gòu)等;第五章針對(duì)第四章的實(shí)現(xiàn),對(duì)結(jié)果進(jìn)行分析以及擴(kuò)展功能的一些數(shù)據(jù)測(cè)試,以及如何在實(shí)現(xiàn)的bootloader基礎(chǔ)上進(jìn)行移植;最后一章進(jìn)行一下總結(jié)與展望。第一章,簡(jiǎn)單闡述ARM的發(fā)展,基于ARM體系的各類主流處理器以及ARM的優(yōu)勢(shì)特點(diǎn)。第二章,詳細(xì)描述了ARM的體系結(jié)構(gòu),包括ARM編程模型方面的內(nèi)容,簡(jiǎn)單介紹了ARM core,ARM最小系統(tǒng)的組成以及硬件系統(tǒng)相關(guān)的PXA255處理器的介紹。第三章,闡述bootloader的一些基本概念以及ARM bootloader的一些共性。第四章,簡(jiǎn)單介紹了其實(shí)現(xiàn)的軟硬件平臺(tái),詳細(xì)介紹了基于PXA255處理器的bootloader基本功能的實(shí)現(xiàn)以及擴(kuò)展功能的實(shí)現(xiàn)以及軟件上編譯連接的處理。第五章,實(shí)驗(yàn)結(jié)果的一些分析與測(cè)評(píng),包括一些測(cè)試數(shù)據(jù)以及程序的穩(wěn)定性與可移植性、剪裁性的分析。第六章,總結(jié)與展望。摘要隨著移動(dòng)設(shè)備的流行和發(fā)展,嵌入式系統(tǒng)已經(jīng)成為一個(gè)熱點(diǎn)。它并不是最近出現(xiàn)的新技術(shù),只是隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,微控制芯片功能越來(lái)越大,而嵌入微控制芯片的設(shè)備和系統(tǒng)越來(lái)越多,從而使得這種技術(shù)越來(lái)越引人注目。它對(duì)軟硬件的體積大小、成本、功耗和可靠性都提出了嚴(yán)格的要求。嵌入式系統(tǒng)的功能越來(lái)越強(qiáng)大,實(shí)現(xiàn)也越來(lái)越復(fù)雜,隨之出現(xiàn)的就是可靠性大大降低。最近的一種趨勢(shì)是一個(gè)功能強(qiáng)大的嵌入式系統(tǒng)通常需要一種操作系統(tǒng)來(lái)給予支持,這種操作系統(tǒng)是已經(jīng)成熟并且穩(wěn)定的,可以是嵌入式的Linux,WINCE等等。相應(yīng)地,這也給處理器提出了要求。當(dāng)今,眾多的半導(dǎo)體廠商都生產(chǎn)基于ARM體系結(jié)構(gòu)的通用微處理芯片,ARM技術(shù)已經(jīng)在當(dāng)今的嵌入式微處理器領(lǐng)域中占據(jù)了它的領(lǐng)先地位。究其原因,它的精簡(jiǎn)指令構(gòu)架為主又不放棄與復(fù)雜指令平衡的設(shè)計(jì),使得在獲得高性能的同時(shí)又能做到低功耗。本文所要研究的就是基于ARM嵌入式系統(tǒng)通用bootloader的設(shè)計(jì)與實(shí)現(xiàn)。Bootloader是嵌入式系統(tǒng)中執(zhí)行在內(nèi)核操作系統(tǒng)前的一段代碼,它的基本作用就是加載內(nèi)核鏡像。在實(shí)踐平臺(tái)上,本課題硬件上采用了Intel Xscale系列的PXA255作為處理器,Xscale核心是與ARM V5TE構(gòu)架兼容的,因此具有一定的代表性,并以此來(lái)搭建課題的硬件實(shí)踐平臺(tái),軟件上以Linux作為操作系統(tǒng)。而在具體的實(shí)現(xiàn)上目標(biāo)是除了實(shí)現(xiàn)bootloader的基本功能外,還將它實(shí)現(xiàn)成一個(gè)更加復(fù)雜的系統(tǒng),即增加對(duì)硬件電路板的支持,以方便開(kāi)發(fā)人員進(jìn)行調(diào)試以及開(kāi)發(fā)。因此,本文重點(diǎn)闡述了實(shí)踐上具體的設(shè)計(jì),具體的實(shí)現(xiàn)以及簡(jiǎn)單評(píng)估了它的作用。最后,對(duì)實(shí)現(xiàn)的bootloader進(jìn)行了擴(kuò)展:即在闡明ARM嵌入式系統(tǒng)中bootloader的一些共同點(diǎn)之后,介紹了如何對(duì)其他ARM系統(tǒng)進(jìn)行移植,以做到通用性。關(guān)鍵詞:嵌入式系統(tǒng) ARM Bootload 1391嵌入式系統(tǒng)ARM的通用bootloader的設(shè)計(jì)與實(shí)現(xiàn)第一章 ARM簡(jiǎn)介嵌入式系統(tǒng)的核心部件是各種類型的嵌入式處理器。目前據(jù)不完全統(tǒng)計(jì),全世界嵌入式處理器的品種總量已經(jīng)超過(guò)1000多種,流行體系結(jié)構(gòu)有30多個(gè)系列。嵌入式微處理目前主要有Am186/88、386EX、SC-400、Power PC、MIPS、ARM系列等。其中,ARM是一種今年來(lái)在嵌入式系統(tǒng)中有著強(qiáng)大影響力的微處理器設(shè)計(jì)商和制造商,ARM的設(shè)計(jì)非常適合與小的電源供電系統(tǒng)。特別是,隨著近年來(lái),微處理器結(jié)構(gòu)由RISC(精簡(jiǎn)指令集)全面取代傳統(tǒng)的CISC(復(fù)雜指令集),因?yàn)锳RM是著名的RISC的擁護(hù)者。1.1 ARM 簡(jiǎn)介 ARM(Advanced RISC Machines),既可以認(rèn)為是一個(gè)公司的名字,也可以是對(duì)一類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。1991年ARM公司成立于英國(guó)劍橋,主要出售芯片設(shè)計(jì)技術(shù)的授權(quán)。目前,采用ARM技術(shù)只是產(chǎn)權(quán)(IP)核的微處理器,即通常我們所說(shuō)的ARM微處理器,已經(jīng)遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、無(wú)線系統(tǒng)等各類產(chǎn)品市場(chǎng),基于ARM技術(shù)的微處理應(yīng)用約占據(jù)了32位RISC微處理器75以上的市場(chǎng)份額,ARM技術(shù)正在逐步滲入我們生活的各個(gè)方面。ARM公司是專門(mén)從事基于RISC技術(shù)芯片設(shè)計(jì)開(kāi)發(fā)的公司,作為知識(shí)產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計(jì)許可由合作公司生長(zhǎng)各具特色的芯片。世界各大半導(dǎo)體生產(chǎn)商從ARM公司購(gòu)買(mǎi)其設(shè)計(jì)的ARM微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐?,從而形成自己的ARM微處理器芯片進(jìn)入市場(chǎng)。目前,全世界有幾十家大的半導(dǎo)體公司都使用ARM公司的授權(quán),因此既使得ARM技術(shù)獲得更多的第三方工具、制造、軟件的支持,又使得整個(gè)系統(tǒng)成本降低,使產(chǎn)品更容易進(jìn)入市場(chǎng)被消費(fèi)者所接受,更具有競(jìng)爭(zhēng)力。1.1.1ARM處理器介紹ARM處理器目前包括下面幾個(gè)系列的處理器產(chǎn)品以及其他廠商實(shí)現(xiàn)的基于ARM體系結(jié)構(gòu)的處理器:ARM7系列、ARM9系列、ARM9E系列、 ARM10E系列、SecurCore系列、Intel的Xscale系列、Intel的StrongARM系列。ARM體系有變種,也就是說(shuō)有些版本具備特定功能,在各個(gè)版本的版本號(hào)上可以體現(xiàn)出來(lái),說(shuō)明如下5:T: 支持16位壓縮指令集Thumb;D: 支持片上Debug;M:內(nèi)嵌硬件乘法器(Multiplier),增加用于長(zhǎng)乘法操作的指令;I: 嵌入式ICE,支持片上斷點(diǎn)和調(diào)試點(diǎn);E:增強(qiáng)型DSP指令;ARM構(gòu)架誕生至今,已經(jīng)產(chǎn)生了多次變革,每一次都帶來(lái)性能上的極大飛躍,其過(guò)程包括: V1構(gòu)架(ARM1)基本的數(shù)據(jù)處理指令(無(wú)乘法)字節(jié)、半字和字的Load/Store指令轉(zhuǎn)移指令,包括子程序的調(diào)用和鏈接指令軟件中斷指令尋址空間64MB V2構(gòu)架(ARM2,ARM3)增加乘法和乘法指令增加支持協(xié)處理器的操作增加快速中斷模式增加SWP/SWPB的存儲(chǔ)器和寄存器交換指令 V3構(gòu)架(ARM6)增加了MRS/MSR指令,訪問(wèn)新增的CPSR/SPSR寄存器增加了異常處理返回尋址空間4GB V4構(gòu)架(ARM7, ARM9)增加符號(hào)化和非符號(hào)化半字及符號(hào)化字節(jié)的存取指令增加16位的Thumb指令完善軟件中斷SWI指令 V5構(gòu)架(ARM10)帶有鏈接和交換的轉(zhuǎn)移BLX指令計(jì)數(shù)前導(dǎo)零CLZ指令BRK中斷指令增加了一些信號(hào)處理的指令 V6構(gòu)架增加了SIMD功能擴(kuò)展,為包括音頻/視頻處理在內(nèi)的應(yīng)用系統(tǒng)提供優(yōu)化功能接下來(lái)就簡(jiǎn)要介紹一下各主要系列處理器的特點(diǎn)。(1)ARM7微處理器系列5ARM7系列微處理器為低功耗的32位RISC處理器,最適合用于對(duì)價(jià)位和功耗要求較高的消費(fèi)類應(yīng)用。ARM7微處理器系列具有如下特點(diǎn): 具有嵌入式ICERT邏輯,調(diào)試開(kāi)發(fā)方便。 極低的功耗,適合對(duì)功耗要求較高的應(yīng)用,如便攜式產(chǎn)品。 能夠提供0.9MIPS/MHz的三級(jí)流水線結(jié)構(gòu)。 代碼密度高并兼容16位的Thumb指令集。 對(duì)操作系統(tǒng)的支持廣泛,包括Windows CE、Linux、Palm OS等。 指令系統(tǒng)與ARM9系列、ARM9E系列和ARM10E系列兼容,便于用戶的產(chǎn)品升級(jí)。 主頻最高可達(dá)130MIPS,高速的運(yùn)算處理能力能勝任絕大多數(shù)的復(fù)雜應(yīng)用。ARM7系列微處理器的主要應(yīng)用領(lǐng)域?yàn)椋汗I(yè)控制、Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備、移動(dòng)電話等多種多媒體和嵌入式應(yīng)用。ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。(2)ARM9微處理器系列5ARM9系列微處理器在高性能和低功耗特性方面提供最佳的性能。具有以下特點(diǎn): 5級(jí)整數(shù)流水線,指令執(zhí)行效率更高。 提供1.1MIPS/MHz的哈佛結(jié)構(gòu)。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA總線接口。 全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。 MPU支持實(shí)時(shí)操作系統(tǒng)。 支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。ARM9系列微處理器主要應(yīng)用于無(wú)線設(shè)備、儀器儀表、安全系統(tǒng)、機(jī)頂盒、高端打印機(jī)、數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)等。ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應(yīng)用場(chǎng)合。 (3)ARM9E微處理器系列5ARM9E系列微處理器為可綜合處理器,使用單一的處理器內(nèi)核提供了微控制器、DSP、Java應(yīng)用系統(tǒng)的解決方案,極大的減少了芯片的面積和系統(tǒng)的復(fù)雜程度。ARM9E系列微處理器提供了增強(qiáng)的DSP處理能力,很適合于那些需要同時(shí)使用DSP和微控制器的應(yīng)用場(chǎng)合。ARM9E系列微處理器的主要特點(diǎn)如下: 支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。 5級(jí)整數(shù)流水線,指令執(zhí)行效率更高。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA總線接口。 支持VFP9浮點(diǎn)處理協(xié)處理器。 全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。 MPU支持實(shí)時(shí)操作系統(tǒng)。 支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。 主頻最高可達(dá)300MIPS。ARM9系列微處理器主要應(yīng)用于下一代無(wú)線設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。ARM9E系列微處理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三種類型,以適用于不同的應(yīng)用場(chǎng)合。(4)ARM10E微處理器系列5ARM10E系列微處理器具有高性能、低功耗的特點(diǎn),由于采用了新的體系結(jié)構(gòu),與同等的ARM9器件相比較,在同樣的時(shí)鐘頻率下,性能提高了近50,同時(shí),ARM10E系列微處理器采用了兩種先進(jìn)的節(jié)能方式,使其功耗極低。ARM10E系列微處理器的主要特點(diǎn)如下: 支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。 6級(jí)整數(shù)流水線,指令執(zhí)行效率更高。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA總線接口。 支持VFP10浮點(diǎn)處理協(xié)處理器。 全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。 支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力 主頻最高可達(dá)400MIPS。 內(nèi)嵌并行讀/寫(xiě)操作部件。ARM10E系列微處理器主要應(yīng)用于下一代無(wú)線設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、通信和信息系統(tǒng)等領(lǐng)域。ARM10E系列微處理器包含ARM1020E、ARM1022E和ARM1026EJ-S三種類型,以適用于不同的應(yīng)用場(chǎng)合。(5)StrongArm微處理器系列Intel StrongARM SA-1100處理器是采用ARM體系結(jié)構(gòu)高度集成的32位RISC微處理器。它融合了Intel公司的設(shè)計(jì)和處理技術(shù)以及ARM體系結(jié)構(gòu)的電源效率,采用在軟件上兼容ARMv4體系結(jié)構(gòu)、同時(shí)采用具有Intel技術(shù)優(yōu)點(diǎn)的體系結(jié)構(gòu)。Intel StrongARM處理器是便攜式通訊產(chǎn)品和消費(fèi)類電子產(chǎn)品的理想選擇,已成功應(yīng)用于多家公司的掌上電腦系列產(chǎn)品(6)Intel Xscale微處理器系列有關(guān)Intel Xscale微處理器系列,會(huì)在后面相關(guān)篇幅中進(jìn)行介紹。1.2ARM處理器的優(yōu)勢(shì)特點(diǎn)采用RISC結(jié)構(gòu)的ARM微處理器一般具有如下特點(diǎn):1體積小、低功耗、低成本、高性能;2支持Thumb(16位)/ARM(32位)雙指令集,能很好地兼容8/16位器件;3大量使用寄存器,指令執(zhí)行速度更快;4大多數(shù)數(shù)據(jù)操作都在寄存器中完成;5尋址方式靈活簡(jiǎn)單,執(zhí)行效率高;6指令長(zhǎng)度固定;ARM處理器之所以能夠廣泛應(yīng)用于各個(gè)領(lǐng)域,與以上所列的各個(gè)特點(diǎn)密切相關(guān),綜合起來(lái),主要包括以下幾點(diǎn)。1.2.1 RISC指令集傳統(tǒng)的CISC(Complex Instruction Set Computer,復(fù)雜指令集計(jì)算機(jī))結(jié)構(gòu)有其固有的缺點(diǎn),即隨著計(jì)算機(jī)技術(shù)的發(fā)展而不斷引入新的復(fù)雜的指令集,為支持這些新增的指令,計(jì)算機(jī)的體系結(jié)構(gòu)會(huì)越來(lái)越復(fù)雜,然而,在CISC指令集的各種指令中,其使用頻率卻相差懸殊,大約有20的指令會(huì)被反復(fù)使用,占整個(gè)程序代碼的80。而余下的80的指令卻不經(jīng)常使用,在程序設(shè)計(jì)中只占20,顯然,這種結(jié)構(gòu)是不太合理的。基于以上的不合理性,1979年美國(guó)加州大學(xué)伯克利分校提出了RISC(Reduced Instruction Set Computer,精簡(jiǎn)指令集計(jì)算機(jī))的概念,RISC并非只是簡(jiǎn)單地去減少指令,而是把著眼點(diǎn)放在了如何使計(jì)算機(jī)的結(jié)構(gòu)更加簡(jiǎn)單合理地提高運(yùn)算速度上。RISC結(jié)構(gòu)優(yōu)先選取使用頻率最高的簡(jiǎn)單指令,避免復(fù)雜指令;將指令長(zhǎng)度固定,指令格式和尋址方式種類減少;以控制邏輯為主,不用或少用微碼控制等措施來(lái)達(dá)到上述目的。到目前為止,RISC體系結(jié)構(gòu)也還沒(méi)有嚴(yán)格的定義,一般認(rèn)為,RISC體系結(jié)構(gòu)應(yīng)具有嵌入式系統(tǒng)ARM的通用bootloader的設(shè)計(jì)與實(shí)現(xiàn)如下特點(diǎn): 采用固定長(zhǎng)度的指令格式,指令歸整、簡(jiǎn)單、基本尋址方式有23種。 使用單周期指令,便于流水線操作執(zhí)行。 大量使用寄存器,數(shù)據(jù)處理指令只對(duì)寄存器進(jìn)行操作,只有加載/ 存儲(chǔ)指令可以訪問(wèn)存儲(chǔ)器,以提高指令的執(zhí)行效率。ARM主要使用32位的RISC指令,但是指令代碼利用率低,ARM為了彌補(bǔ)此不足,在新型ARM構(gòu)架(V4T版本以上)定義了16位的Thumb指令集。Thumb指令集比通常的8位和16位RISC/CISC處理器具有更好的代碼密度,而芯片面積只增加6,可使程序存儲(chǔ)器更小。另外,為了加速通信和多媒體中有關(guān)數(shù)字信號(hào)的處理,ARM處理器在RISC的基礎(chǔ)上增加了許多原屬DSP核中的關(guān)鍵部件。雙核協(xié)同工作,各用所長(zhǎng),有效地提高了數(shù)據(jù)處理能力核傳輸速度,但是RISC+DSP分立的雙核結(jié)構(gòu)存在兩核之間互相通信的困難和分別編程的麻煩,為此發(fā)展了兩核融合在一起的單核結(jié)構(gòu),同時(shí)將指令集也合二為一,簡(jiǎn)化編程提高效率,將CPU提升到可快速運(yùn)算多媒體的算法,實(shí)現(xiàn)許多音視頻的解碼功能。1.2.2低功耗由于ARM架構(gòu)的處理器主要用于手持式嵌入式系統(tǒng)之中,因此ARM構(gòu)架在設(shè)計(jì)中十分注意低電壓、低功耗這一點(diǎn),因而在手持式嵌入式系統(tǒng)得到廣泛的應(yīng)用。ARM架構(gòu)的設(shè)計(jì)采用了以下一些措施: 降低電源電壓 減少門(mén)的翻轉(zhuǎn)次數(shù),當(dāng)某個(gè)功能電路不需要時(shí),禁止門(mén)翻轉(zhuǎn) 減少門(mén)的數(shù)目,即降低芯片的集成度 降低時(shí)鐘頻率ARM還其他采用了一些特別的技術(shù),在保證高性能的前提下盡量縮小芯片的面積: 所有的指令都可以根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率; 可用加載/存儲(chǔ)指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率; 可在一條數(shù)據(jù)處理指令中同時(shí)完成邏輯處理和移位處理; 在循環(huán)處理中使用地址的自動(dòng)增減來(lái)提高運(yùn)行效率;ARM的低功耗,使得ARM在專門(mén)針對(duì)嵌入式系統(tǒng)的處理器市場(chǎng)中始終處于有利的地位。一組典型數(shù)據(jù)是:對(duì)于ARM7系列處理器,當(dāng)核電壓是3.3V時(shí),每MHz,其功耗只為1.1mW。第二章 ARM體系結(jié)構(gòu)介紹在介紹具體的ARM Bootloader的實(shí)現(xiàn)之前,首先介紹一下ARM的體系結(jié)構(gòu),因?yàn)锽ootloader是與處理器芯片緊密相連的。為了更好的在后面篇幅中介紹實(shí)現(xiàn),先簡(jiǎn)單介紹相關(guān)的體系結(jié)構(gòu)以及相關(guān)指令集。2.1ARM core描述盡管本本文實(shí)現(xiàn)主要涉及軟件上的開(kāi)發(fā),但是軟件上代碼的實(shí)現(xiàn)更多的都涉及芯片構(gòu)架,因此在這里簡(jiǎn)要介紹一下一般ARM core構(gòu)架。下圖所示的是ARM構(gòu)架圖。它由32位ALU、若干個(gè)32位通用寄存器以及狀態(tài)寄存器、328位乘法器、3232位桶形移位寄存器、指令譯碼以及控制邏輯、指令流水線和數(shù)據(jù)/地址寄存器組成。1ALU:它有兩個(gè)操作數(shù)鎖存器、加法器、邏輯功能、結(jié)果以及零檢測(cè)邏輯構(gòu)成。2桶形移位寄存器:ARM采用了3232位的桶形移位寄存器,這樣可以使在左移/右移n位、環(huán)移n位和算術(shù)右移n位等都可以一次完成。3高速乘法器:乘法器一般采用“加一移位”的方法來(lái)實(shí)現(xiàn)乘法。ARM為了提高運(yùn)算速度,則采用兩位乘法的方法,根據(jù)乘數(shù)的2位來(lái)實(shí)現(xiàn)“加一移位”運(yùn)算 ;ARM高速乘法器采用328位的結(jié)構(gòu),這樣,可以降低集成度(其相應(yīng)芯片面積不到并行乘法器的1/3)。4浮點(diǎn)部件:浮點(diǎn)部件是作為選件供ARM構(gòu)架使用。FPA10浮點(diǎn)加速器是作為協(xié)處理方式與ARM相連,并通過(guò)協(xié)處理指令的解釋來(lái)執(zhí)行。5控制器:ARM的控制器采用的是硬接線的可編程邏輯陣列PLA。6寄存器:具體的介紹參考下節(jié)的相關(guān)介紹。 不同的ARM core可能還有所不同。因此,圖2.17描述的僅僅針對(duì)一般而言。 圖 2.1 ARM構(gòu)架圖2.2編程模型介紹對(duì)于ARM編程,需要了解的一下幾個(gè)方面:2.2.1 ARM處理器模式ARM處理器共有7種運(yùn)行模式,如表2.16所示:處理器模式處理器模式描述用戶模式(User,usr)正常程序執(zhí)行的模式快速中斷模式(FIQ,fiq)用于高速數(shù)據(jù)傳輸和通道處理普通中斷模式(IRQ,irq)用于通常的中斷處理監(jiān)管模式(Supervisor,svc)供操作系統(tǒng)使用的一種保護(hù)模式數(shù)據(jù)訪問(wèn)中止模式(Abort,abt)用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)未定義指令中止模式(Undefined,und)用于支持通過(guò)軟件方針硬件的協(xié)處理器系統(tǒng)模式(System,sys)用于運(yùn)行特權(quán)級(jí)的操作系統(tǒng)任務(wù)表格 2.1除了用戶模式之外的其他6種處理器模式稱為特權(quán)模式(Privileged Modes)。在這些模式下,程序可以訪問(wèn)所有的系統(tǒng)資源,也可以任意地進(jìn)行處理器模式的切換。其中,除系統(tǒng)模式外,其他5種特權(quán)模式又稱為異常模式。處理器模式可以通過(guò)軟件控制進(jìn)行切換,也可以通過(guò)外部中斷或異常處理過(guò)程進(jìn)行切換。大多數(shù)的用戶程序運(yùn)行在用戶模式下,這時(shí),應(yīng)用程序不能夠訪問(wèn)一些受操作系統(tǒng)保護(hù)的系統(tǒng)資源,應(yīng)用程序也不能直接進(jìn)行處理器模式的切換。當(dāng)需要進(jìn)行處理器模式的切換時(shí),應(yīng)用程序可以產(chǎn)生異常處理,在異常處理過(guò)程中進(jìn)行模式的切換。這種體系結(jié)構(gòu)可以使操作系統(tǒng)控制整個(gè)系統(tǒng)的資源。當(dāng)應(yīng)用程序發(fā)生異常中斷時(shí),處理器進(jìn)入相應(yīng)的異常模式。在每一種異常模式中都有一組寄存器,供相應(yīng)的異常處理程序使用,這樣就可以保證在進(jìn)入異常模式時(shí),用戶模式下的寄存器(保證了程序運(yùn)行狀態(tài))不被破壞。系統(tǒng)模式并不是通過(guò)異常過(guò)程進(jìn)入的,它和用戶模式具有完全一樣的寄存器。但是系統(tǒng)模式屬于特權(quán)模式,可以訪問(wèn)所有的系統(tǒng)資源,也可以直接進(jìn)行處理器模式的切換。它主要供操作系統(tǒng)任務(wù)使用。通常操作系統(tǒng)的任務(wù)需要訪問(wèn)所有的系統(tǒng)資源,同時(shí)該任務(wù)仍然使用用戶模式下的寄存器組,而不是使用異常模式下相應(yīng)的寄存器組,這樣可以保證當(dāng)異常中斷發(fā)生時(shí)任務(wù)狀態(tài)不被破壞6。2.2.2 ARM寄存器組介紹ARM處理器一般共有37個(gè)寄存器,其中包括5:l31個(gè)通用寄存器,包括程序計(jì)數(shù)器(PC)在內(nèi),這些寄存器都是32位寄存器;l6個(gè)狀態(tài)寄存器,這些寄存器也是32位寄存器; 上一節(jié)已經(jīng)說(shuō)過(guò),ARM處理器共有7種不同的處理器模式,在每一種處理器模式中有一組相應(yīng)的寄存器。任意時(shí)刻(也就是任意的處理器模式下),可見(jiàn)的寄存器包括15個(gè)通用嵌入式系統(tǒng)ARM的通用bootloader的設(shè)計(jì)與實(shí)現(xiàn)寄存器(R0R14)、一個(gè)或者兩個(gè)狀態(tài)寄存器以及程序計(jì)數(shù)器(PC)。在所有的寄存器中,有些是各模式共用的同一個(gè)物理寄存器;有些寄存器是各模式自己擁有的獨(dú)立的物理寄存器。圖3.1表示了各處理器模式下的可見(jiàn)寄存器:用戶模式和系統(tǒng)模式寄存器組 異常模式下的寄存器組R8_fiqR9_fiqR10_fiqR11_fiqR13_undR14_undR13_svcR14_svcSPSR_undSPSR_abtSPSR_irqSPSR_fiqSPSR_svcCPSR從表3.1中可以看出,通用寄存器R0R7在所有的處理器模式下指的都是同一個(gè)物理寄存器。而對(duì)于R8R12寄存器組,除了在快速中斷模式下有自己專有的物理寄存器,其它模式下也共有統(tǒng)一物理寄存器。R13寄存器對(duì)應(yīng)6個(gè)不同的物理寄存器,即除了前面提過(guò)的用戶模式與系統(tǒng)模式共用一個(gè)寄存器外,其它模式都有相應(yīng)的物理寄存器;一般地,R13寄存器在ARM中通常用作棧指針,在ARM指令中這只是一種習(xí)慣的用法,并沒(méi)有任何指令強(qiáng)制性的使用R13作為棧指針。R14寄存器又被稱為連接寄存器(Link Register,LR),在ARM體系中有下面兩種特殊的作用6:l每一種處理器模式自己的物理R14中存放當(dāng)前子程序的返回地址。當(dāng)通過(guò)跳轉(zhuǎn)指令調(diào)用子程序時(shí),R14被設(shè)置為該子程序的返回地址;在子程序中,把R14的指賦值到程序計(jì)數(shù)器PC中時(shí),子程序返回;l當(dāng)異常中斷發(fā)生時(shí),該異常模式特定的物理R14被設(shè)置成該異常模式將要返回的地址,對(duì)于有些異常模式,R14的值可能與將返回的地址有個(gè)常數(shù)的偏移量。 程序計(jì)數(shù)器R15又被記作PC。由于ARM采用了流水線機(jī)制,當(dāng)正確讀取了PC的值時(shí),該值為當(dāng)前指令地址加8個(gè)字節(jié)。也就是說(shuō),對(duì)于ARM指令集來(lái)說(shuō),PC指向當(dāng)前指令的下兩條指令的地址。由于ARM指令是字對(duì)齊的,PC值的第0位和第1位總為0。CPSR(當(dāng)前程序狀態(tài)寄存器)可以在任何處理器模式下被訪問(wèn)。它包含了標(biāo)志位、中斷禁止位、當(dāng)前處理器模式標(biāo)志以及其它的一些控制和狀態(tài)位。每一種處理器異常模式下都有一個(gè)專用的物理狀態(tài)寄存器,稱為SPSR(備份程序狀態(tài)寄存器)。當(dāng)特定的異常中斷發(fā)生時(shí),這個(gè)寄存器用于存放當(dāng)前程序狀態(tài)寄存器的內(nèi)容。在異常中斷返回退出時(shí),可以用SPSR種保存的值來(lái)恢復(fù)CPSR。由于用戶模式和系統(tǒng)模式不是異常中斷模式,所以它們沒(méi)有SPSR。當(dāng)用戶模式或者系統(tǒng)模式中訪問(wèn)SPSR,將會(huì)產(chǎn)生不可預(yù)知的結(jié)果。SPSR與CPSR的格式相同。CPSR的格式如圖2.36所示: 31 30 29 28 27 8 7 6 5 4 0NZCQUnused IFTModes圖2.3N(Negative)、Z(Zero)、C(Carry)、V(Overflow)統(tǒng)稱為標(biāo)志位。大部分的ARM指令可以根據(jù)CPSR中的這些條件標(biāo)志位來(lái)選擇性地執(zhí)行。各條件標(biāo)志位的具體含義如下:N:當(dāng)兩個(gè)補(bǔ)碼表示的有符號(hào)整數(shù)運(yùn)算時(shí),N1表示運(yùn)算的結(jié)果為負(fù)數(shù);N0表示運(yùn)算結(jié)果為正數(shù)或零;Z:Z1表示運(yùn)算結(jié)果為零;Z0表示運(yùn)算的結(jié)果不為零;C:在加法指令中,當(dāng)結(jié)果產(chǎn)生了進(jìn)位,則C1;其他情況下C0; 在減法指令中,當(dāng)運(yùn)算中發(fā)生借位,則C0;其他情況下C0;V:對(duì)于加/減法運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為二進(jìn)制的補(bǔ)碼表示的帶符號(hào)數(shù)時(shí),V1表示符號(hào)位溢出CPSR的低8位稱為控制位,當(dāng)異常中斷發(fā)生時(shí)這些位發(fā)生改變。在特權(quán)模式下,軟件可以修改這些控制位:I:普通中斷禁止位;I1時(shí)禁止IRQ中斷。F:快速中斷禁止位;F1時(shí)禁止FIQ中斷。T:對(duì)于ARMv4以及更高的版本的T系列的ARM處理器lT0表示執(zhí)行ARM指令lT1表示執(zhí)行Thumb指令對(duì)于ARMv5以及更高版本的非T系列的ARM處理器lT=0表示執(zhí)行ARM指令lT1表示強(qiáng)制下一條執(zhí)行的指令產(chǎn)生為定義指令中斷 Modes位控制處理器模式,在這不再贅述。2.2.3ARM存儲(chǔ)系統(tǒng)這里僅僅介紹ARM編程模型中與存儲(chǔ)系統(tǒng)相關(guān)的一些概念。ARM體系中的存儲(chǔ)空間ARM體系中使用單一的平板地址空間。該地址空間的大小232個(gè)8位字節(jié)。這些字節(jié)單元的地址是一個(gè)無(wú)符號(hào)的32位數(shù)值也可以看作是230個(gè)32位的字單元。這些字單元的地址可以被4整除,也就是說(shuō)該地址的低兩位為0b00。地址為A的字?jǐn)?shù)包括地址A、A+1、A+2、A+3這4個(gè)字節(jié)單元的內(nèi)容。ARM的存儲(chǔ)器格式在ARM體系中,每個(gè)字單元中包含4個(gè)字節(jié)單元或者兩個(gè)半字單元,其中1個(gè)半字單元中包含兩個(gè)字節(jié)單元。但是在字單元中,4個(gè)字節(jié)哪一個(gè)是高位字節(jié),哪一個(gè)是低位字節(jié),則有兩種不同的格式:big-endian格式和little-endian格式。在big-endian格式中,對(duì)于地址為A的字單元包括字節(jié)單元A、A+1、A+2、A+3,其中字節(jié)單元由高位到低位字節(jié)順序?yàn)锳、A+1、A+2、A+3;地址為A的字單元包括半字單元A、A+2,其中半字單元由高位到地位字節(jié)順序?yàn)锳、A+2;地址為A的半字單元包括字節(jié)單元A、A+1,其中字節(jié)單元由高位到低位字節(jié)順序?yàn)锳、A+1。這種存儲(chǔ)器格式如下圖所示: 31 24 23 16 15 8 7 0字單元A半字單元A半字單元A2字節(jié)單元A字節(jié)單元A1字節(jié)單元A2字節(jié)單元A3 圖2.4 big-endian格式的存儲(chǔ)系統(tǒng)在little-endian格式中,地址為A的字單元包括字節(jié)單元A、A+1、A+2、A+3,其中字節(jié)單元由高位到低位字節(jié)順序?yàn)锳3、A+2、A+1、A;地址為A的字單元包括半字單元A、A+2,其中半字單元由高位到地位字節(jié)順序?yàn)锳2、A;地址為A的半字單元包括字節(jié)單元A、A+1,其中字節(jié)單元由高位到低位字節(jié)順序?yàn)锳1、A。這種存儲(chǔ)器格式如下圖所示: 31 24 23 16 15 8 7 0字單元A半字單元A2半字單元A字節(jié)單元A3字節(jié)單元A2字節(jié)單元A1字節(jié)單元A 圖2.5 little-endian格式的存儲(chǔ)系統(tǒng)2.2.4 ARM指令集介紹ARM指令系統(tǒng)屬于RISC指令系統(tǒng)。標(biāo)準(zhǔn)的ARM指令每條都是32位,有些ARM核還可以執(zhí)行16位的Thumb指令集。一般地,ARM指令具有以下特點(diǎn)9:l指令的條件執(zhí)行ARM指令都是條件執(zhí)行,條件標(biāo)志位位于程序代碼字節(jié)的cond位(位2831,下文會(huì)介紹)。根據(jù)cond的不同編碼,可以選擇根據(jù)條件碼標(biāo)志決定指令的執(zhí)行。l靈活的第二操作數(shù)ARM指令的另一個(gè)重要的特點(diǎn)是數(shù)據(jù)處理類指令有靈活的第二操作數(shù)operand2(位與程序代碼的位011)。它既可以是立即數(shù),也可以是邏輯運(yùn)算數(shù),使得ARM指令可以在讀取數(shù)值的同時(shí)進(jìn)行算術(shù)和移位操作。l協(xié)處理器的作用ARM內(nèi)核可提供協(xié)處理接口,通過(guò)擴(kuò)展協(xié)處理器完成更加復(fù)雜的功能。因此ARM指令中還包括了多條協(xié)處理器指令,使用多達(dá)16個(gè)協(xié)處理器,允許將其他處理器通過(guò)協(xié)處理器接口進(jìn)行緊耦合;ARM還包括幾種內(nèi)存管理單元的變種,包括簡(jiǎn)單的內(nèi)存保護(hù)到復(fù)雜的頁(yè)面層次。lThumb指令A(yù)RM在有的版本支持16位Thumb指令。Thumb指令集的整體執(zhí)行速度比ARM32位指令集快,而且提高了代碼密度。l具有RISC指令的特點(diǎn)由于ARM指令屬于RISC指令,所以多具有RISC指令的特點(diǎn),指令少,且等長(zhǎng), 便于充分利用流水線技術(shù),使用多寄存器,且為簡(jiǎn)單的Load和Store指令。ARM指令按功能大致可以分為跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、乘法類指令、數(shù)據(jù)傳送指令、協(xié)處理器類指令以及雜項(xiàng)指令(包括狀態(tài)寄存器傳送指令、乘法類指令、軟件中斷指令和斷點(diǎn)指令)。ARM指令字長(zhǎng)為固定的32位,一條典型的ARM指令編碼格式如下9: 31 28 27 26 2524 21 20 19 16 15 12 11 0Cond 00 Iopcode S RnRdoperand2圖2.6其中:lcond位2831,執(zhí)行指令的條件編碼。lI位25,決定operand2的格式。lopcode 位2124,操作碼。lS位20,表示結(jié)果是否影響狀態(tài)寄存器標(biāo)志位:1影響,0不影響。lRn位1619,第一操作數(shù)的寄存器編碼。lRd位位011,表示第二操作數(shù)編碼。ARM指令包括60多個(gè)指令,并且支持多種尋址方式:寄存器尋址、立即數(shù)尋址、寄存器間接尋址、寄存器變址尋址、多寄存器尋址、堆棧尋址、塊拷貝尋址以及相對(duì)尋址等。對(duì)于具體的指令集,可以參考相關(guān)文檔。2.2.5 ARM體系的異常中斷在ARM體系中通常有以下3種方式控制程序的執(zhí)行流程6:l在程序正常執(zhí)行過(guò)程種,每執(zhí)行一條ARM指令,程序計(jì)數(shù)器寄存器(PC)的值加4個(gè)字節(jié);每執(zhí)行一條Thumb指令,程序計(jì)數(shù)器寄存器的值加2個(gè)字節(jié)。整個(gè)過(guò)程是按順序執(zhí)行。l通過(guò)跳轉(zhuǎn)指令,程序可以跳轉(zhuǎn)到特定的地址標(biāo)號(hào)處執(zhí)行,或者跳轉(zhuǎn)到特定的子程序處執(zhí)行。l當(dāng)異常中斷發(fā)生時(shí),系統(tǒng)執(zhí)行完當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。在異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下一條指令處執(zhí)行。ARM體系中中斷向量表中指定了各異常中斷及處理程序的對(duì)應(yīng)關(guān)系。它可以放在存儲(chǔ)地址的低端,也可以放在存儲(chǔ)地址的高端。異常中斷向量表的大小位32字節(jié),其中每個(gè)異常中斷占據(jù)4個(gè)字節(jié)大小,保留了4個(gè)字節(jié)空間。每個(gè)異常中斷對(duì)應(yīng)的中斷向量表中的4個(gè)字節(jié)的空間中放了一個(gè)跳轉(zhuǎn)指令或者一個(gè)向PC寄存器中賦值的數(shù)據(jù)訪問(wèn)指令。通過(guò)這兩種指令,程序?qū)⑻D(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。下面是ARM體系中各異常中斷向量的描述表:嵌入式系統(tǒng)ARM的通用bootloader的設(shè)計(jì)與實(shí)現(xiàn)ARM處理器對(duì)異常中斷的響應(yīng)過(guò)程如下:l保存處理器當(dāng)前狀態(tài)、中斷屏蔽位以及各條件標(biāo)志位。這是通過(guò)將當(dāng)前程序狀態(tài)寄存器CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對(duì)應(yīng)的SPSR寄存器中實(shí)現(xiàn)的。l設(shè)置當(dāng)前的程序狀態(tài)寄存器CPSR中相應(yīng)的位,包括設(shè)置CPSR中的位,使處理器進(jìn)入相應(yīng)的執(zhí)行模式;設(shè)置CPSR中的位,禁止IRQ中斷,當(dāng)進(jìn)入FIQ模式時(shí),禁止FIQ模式。l將寄存器lr_mode設(shè)置成返回地址。l將程序計(jì)數(shù)器值PC設(shè)置成該異常中斷的中斷向量地址,從而跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。 ARM最小系統(tǒng)描述對(duì)于任何一個(gè)系統(tǒng),都希望不是一個(gè)虛擬系統(tǒng),也就是說(shuō)系統(tǒng)都希望是特定系統(tǒng),即有具體的CPU,有具體的存儲(chǔ)芯片以及有各種具體的外圍控制模塊。對(duì)于本課題來(lái)說(shuō),最終的bootloader也必須在具體的系統(tǒng)上運(yùn)行起來(lái)。但是,任何一個(gè)ARM系統(tǒng),在沒(méi)有特定指定的條件下,仍然可以將通用特性(一些通用基本控制模塊)描述出來(lái),在此稱之為ARM最小系統(tǒng),見(jiàn)下圖:圖2.7 ARM最小系統(tǒng)從上圖中,可以了解一個(gè)基本的ARM最小系統(tǒng)通常包括以下幾個(gè)部分:lARM COREl存儲(chǔ)控制器:通過(guò)它系統(tǒng)可以接入各種DRAM以及ROM;l總線橋接:系統(tǒng)總線與外圍總線的連接器l中斷控制器:供各種設(shè)備提供中斷服務(wù)l串口lGPIO控制模塊:供各種外設(shè)以及系統(tǒng)擴(kuò)充使用對(duì)于一些復(fù)雜系統(tǒng),還可以有更多的功能性模塊,特別是隨著網(wǎng)絡(luò)通信的發(fā)展,ARM系統(tǒng)中包括了更多的通訊控制模塊。2.4Intel Xscale系統(tǒng)構(gòu)架本文最終實(shí)現(xiàn)以及驗(yàn)證平臺(tái)是基于Intel Xscale構(gòu)架的,因此在本節(jié)中主要介紹一下Intel Xscale的系統(tǒng)結(jié)構(gòu)并簡(jiǎn)要介紹一下基于Xscale微架構(gòu)的處理器PXA255。Xscale微構(gòu)架處理器是為新一代無(wú)線手持式應(yīng)用產(chǎn)品開(kāi)發(fā)的嵌入式處理器,是PCA開(kāi)發(fā)式平臺(tái)架構(gòu)中的應(yīng)用子系統(tǒng)與通信子系統(tǒng)中的嵌入式處理器。圖3.87所示為Xscale系統(tǒng)結(jié)構(gòu)圖。Intel Xscale構(gòu)架與ARM V5TE相兼容,其主要特性如下:(1)采用7/8級(jí)超級(jí)流水線:動(dòng)態(tài)跳轉(zhuǎn)預(yù)測(cè)以及分支目標(biāo)緩沖;(2)支持多媒體處理技術(shù):增加乘、加法器;累加器;兼容ARMV5TE指令;特定DSP型協(xié)處理器CP0;(3)指令快存(I-Cache):32KB;(4)數(shù)據(jù)快存(D-Cache):32KB;(5)微小型理單元D-MMU:32路變換后備緩沖器TLB;(8)中斷控制器;(9)總線控制器;(10)調(diào)試接口;(11)動(dòng)態(tài)電源管理;Xscale微構(gòu)架處理器的時(shí)鐘可達(dá)1GHz,功耗1.6W,并能達(dá)到1200兆條指令/秒。目前,基于Xscale微構(gòu)架的處理器有:IOP310,IOP321,PXA210,PXA250,PXA255,PXA26X等。2.4.1PXA255介紹PXA250/PXA255應(yīng)用處理器是Intel公司生產(chǎn)的第一代基于Xscale微構(gòu)架的第一個(gè)系統(tǒng)芯片(ISOC)的處理器。它除了Xscale微內(nèi)核外,還集成了許多世適用于手持式設(shè)備市場(chǎng)需要的外圍設(shè)備。如圖2.9 11所示為PXA255應(yīng)用處理器的框圖。圖2.9PXA255作為本課題的整個(gè)硬件平臺(tái)核心,具有很強(qiáng)的處理能力,同時(shí)兼具低功耗和高集成度的特性。它內(nèi)置了JTAG調(diào)試接口,存儲(chǔ)器控制器,實(shí)時(shí)時(shí)鐘和操作系統(tǒng)時(shí)鐘,串口,并口,紅外通信,藍(lán)牙接口,AC97接口以及USB 1.1設(shè)備端控制模塊等。第三章 Bootloader的概念本文在實(shí)現(xiàn)以及驗(yàn)證上都以開(kāi)放源代碼的linux為操作系統(tǒng),因此,在眾多舉例以及圖表描述中,多以linux系統(tǒng)為例子。但是,這并不防礙對(duì)許多概念的解釋,其本質(zhì)在任何操作系統(tǒng)中都是一致的,所不同的僅僅是實(shí)現(xiàn)形式。3.1Bootloader的基本概念一個(gè)嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃樗膫€(gè)層次:引導(dǎo)加載程序、Linux內(nèi)核、文件系統(tǒng)、用戶應(yīng)用程序。用戶應(yīng)用程序文件系統(tǒng) Linux內(nèi)核 引導(dǎo)加載程序系統(tǒng)調(diào)用接口設(shè)備驅(qū)動(dòng)操作系統(tǒng)核心機(jī)制(進(jìn)程調(diào)度、內(nèi)存管理、 中斷管理、時(shí)鐘管理、 文件系統(tǒng)、網(wǎng)絡(luò)支持 信號(hào)機(jī)制、同步機(jī)制等等)圖 3.1引導(dǎo)加載程序是系統(tǒng)加電后運(yùn)行的第一段代碼。我們熟悉的PC中的引導(dǎo)程序一般由BIOS和位于MBR的OS bootloader(例如LILO或者GRUB)一起組成。然而在嵌入式系統(tǒng)中通常沒(méi)有像BIOS那樣的固件程序(有的嵌入式CPU有),因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由bootloader來(lái)完成。在嵌入式Linux中, 圖3.1中的引導(dǎo)加載程序即等效為bootloader。簡(jiǎn)單地說(shuō),bootloader就是在操作
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)品度合同范例
- 單位租憑員工車輛合同范本
- 中糧銷售合同范本
- 化工散水出售合同范本
- seb采購(gòu)合同范本
- 華為銷售合同范本
- 農(nóng)業(yè)采購(gòu)合同范本格式
- 伐樹(shù)施工合同范本
- 代理業(yè)主房屋合同范本
- 寫(xiě)作委托協(xié)議合同范本
- 地理-天一大聯(lián)考2025屆高三四省聯(lián)考(陜晉青寧)試題和解析
- 小巴掌童話課件
- 教科版六年級(jí)科學(xué)下冊(cè)全冊(cè)教學(xué)設(shè)計(jì)教案
- 初中數(shù)學(xué)新課程標(biāo)準(zhǔn)(2024年版)
- GB/T 19342-2024手動(dòng)牙刷一般要求和檢測(cè)方法
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 8款-組織架構(gòu)圖(可編輯)
- 《鋼鐵是怎樣煉成的》讀書(shū)報(bào)告
- 中學(xué)生班干部培訓(xùn)方案(共4頁(yè))
- 凈土資糧——信愿行(11)第六講凈業(yè)三福變化氣質(zhì)
- 美的集團(tuán)公司分權(quán)手冊(cè)
評(píng)論
0/150
提交評(píng)論