第六章-ARM處理器201604011_第1頁
第六章-ARM處理器201604011_第2頁
第六章-ARM處理器201604011_第3頁
第六章-ARM處理器201604011_第4頁
第六章-ARM處理器201604011_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Linux與嵌入式系統(tǒng)主講張璽君/方君麗Email:393378116@TEL算機(jī)與通信學(xué)院物聯(lián)網(wǎng)工程系嵌入式無處不在嵌入式系統(tǒng)(EmbeddedComputingSystem)1.嵌入式系統(tǒng)的定義專用性面向具體應(yīng)用計(jì)算機(jī)硬件軟件軟硬件可以剪裁功能、成本、體積、功耗滿足以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)2.嵌入式系統(tǒng)的組成典型的嵌入式系統(tǒng)組成示例硬件平臺的多樣性是嵌入式系統(tǒng)的主要特點(diǎn)之一3.程序移植移植的必要性基于嵌入式處理器的原因基于操作系統(tǒng)原因新舊的操作系統(tǒng)的更替應(yīng)用軟件不能操作系統(tǒng)平臺要求操作系統(tǒng)和應(yīng)用軟件的整體移植把應(yīng)用軟件移植到新的操作系統(tǒng)上處理器淘汰硬件平臺不同3.程序移植JavaC/C++匯編語言編譯器目標(biāo)文件編譯器目標(biāo)文件編譯器目標(biāo)文件鏈接器可重定位器程序定位器可執(zhí)行文件匯編語言的移植非常困難,甚至等于重新開發(fā)C語言的可移植性比較好由于技術(shù)的快速發(fā)展,在設(shè)計(jì)嵌入式應(yīng)用系統(tǒng)是,一種較好的設(shè)計(jì)思路和習(xí)慣是在設(shè)計(jì)的開始階段就考慮到系統(tǒng)的一致性問題。設(shè)計(jì)易于移植的嵌入式應(yīng)用軟件需要遵循層次化和模塊化的軟件設(shè)計(jì)方法。3.程序移植應(yīng)用軟件輸入輸出模塊(與硬件無關(guān))uart_drv.c硬件抽象層(與硬件相關(guān))uart_regrw.c嵌入式微控制器硬件基于模塊化層次化的嵌入式系統(tǒng)應(yīng)用軟件結(jié)構(gòu)示例intuart_init(……);

//初始化UARTintuart_putc(……);//通過UART發(fā)送一個(gè)字符intuart_puts(……);//通過UART發(fā)送一個(gè)字節(jié)流intuart_getc(……);//通過UART讀取一個(gè)字符intuart_gets(……);//通過UAR收取字節(jié)流Register_UART_SendRegister_UART_ReceiveRegister_UART_ModeRegister_UART_Controlvoiduart_reg_write(…);//寫寄存器voiduart_reg_read(…);//讀寄存器定義虛擬UART端口寄存器和訪問代碼intuart_putc(……){//把待發(fā)送字符寫到發(fā)送寄存器,調(diào)用voiduart_reg_write);//發(fā)送完成,函數(shù)返回}如果更換了微處理器,一直的時(shí)候只需要修改uart_regrw.c中的讀寫函數(shù)4.硬件抽象層(HAL)和板級支持包BSP應(yīng)用程序嵌入式中間件嵌入式操作系統(tǒng)硬件抽象層(HAL)和板級支持包BSP嵌入式硬件板級初始化串口驅(qū)動(dòng)LCD驅(qū)動(dòng)鍵盤驅(qū)動(dòng)Flash驅(qū)動(dòng)以太網(wǎng)驅(qū)動(dòng)其他驅(qū)動(dòng)4.硬件抽象層(HAL)和板級支持包BSP嵌入式處理平臺多樣性解決硬件差異性增強(qiáng)可移植性硬件抽象層HAL/板級支持包BSP介于硬件和軟件之間為軟件提供硬件特性,為硬件進(jìn)行驅(qū)動(dòng)是嵌入式系統(tǒng)很重要的軟件組成部分處理系統(tǒng)啟動(dòng)、硬件初始化以及中斷與異常,完成進(jìn)入嵌入式操作系統(tǒng)的運(yùn)行。硬件相關(guān)性BSP作為軟硬件間的接口,必須為操作系統(tǒng)提供操作和控制硬件的方法。而嵌入式系統(tǒng)的硬件環(huán)境具有應(yīng)用相關(guān)性。操作系統(tǒng)相關(guān)性不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu)。因此,不同的操作系統(tǒng)具有特定的硬件接口形式。4.硬件抽象層(HAL)和板級支持包BSP硬件檢測初始化系統(tǒng)設(shè)備裝入操作系統(tǒng)調(diào)度操作系統(tǒng)向硬件發(fā)出的指令BIOS操作系統(tǒng)啟動(dòng)以前的硬件和軟件初始化操作BSP/HAL

對于開發(fā)板提供商來說,BSP就是開發(fā)板的生產(chǎn)商提供的一個(gè)資料和資源包。通常包括:一硬件相關(guān):

1開發(fā)板原理圖

2開發(fā)板元件列表

3接口定義

4地址分布二軟件相關(guān):

1某些操作系統(tǒng)的bootloader及源代碼

2某些操作系統(tǒng)裁剪好的映像文件(如linux系列可能有源碼,如WinCE可能有CEC文件)三服務(wù)相關(guān)

1售后的技術(shù)支持(根據(jù)價(jià)格,差異很大)

4.硬件抽象層(HAL)和板級支持包BSP硬件抽象層的開發(fā)方法移植當(dāng)前的硬件抽象層通常是根據(jù)硬件設(shè)備,尋找其驅(qū)動(dòng)然后進(jìn)行移植;開發(fā)如果沒有可用的驅(qū)動(dòng),將被迫重新編寫設(shè)備驅(qū)動(dòng),但不利于軟件重用,會造成重復(fù)勞動(dòng)4.硬件抽象層(HAL)和板級支持包BSP示例:TIZ-Stack協(xié)議棧Z‐Stack在項(xiàng)目中的目錄結(jié)構(gòu)hal_assert.c是斷言文件,用于調(diào)試,hal_drivers.c是驅(qū)動(dòng)文件,抽象出與硬件無關(guān)的驅(qū)動(dòng)函數(shù),包含有與硬件相關(guān)的配置和驅(qū)動(dòng)及操作函數(shù)。Include目錄下主要包含各個(gè)硬件模塊的頭文件,

Target目錄下的文件是跟硬件平臺相關(guān)的示例:TIZ-Stack協(xié)議棧Z-Stack的main函數(shù)在ZMain.c中,總體上來說,它一共做了兩件工作,一個(gè)是系統(tǒng)初始化,即由啟動(dòng)代碼來初始化硬件系統(tǒng)和軟件構(gòu)架需要的各個(gè)模塊,另外一個(gè)就是開始執(zhí)行操作系統(tǒng)實(shí)體系統(tǒng)初始化流程圖擴(kuò)展:Zigbee、藍(lán)牙、Wifi、RFID、GIS、TCP/IP……擴(kuò)展:Andriod開發(fā)、信息家電、消費(fèi)電子、工業(yè)物聯(lián)網(wǎng)、網(wǎng)絡(luò)通信設(shè)備、航空航天設(shè)備、現(xiàn)代武器……5.嵌入式開發(fā)學(xué)習(xí)路線C語言Linux基礎(chǔ)應(yīng)用程序開發(fā)(系統(tǒng)編程、網(wǎng)絡(luò)編程)系統(tǒng)移植驅(qū)動(dòng)開發(fā)ARM編程模型指令系統(tǒng)存儲結(jié)構(gòu)I/O模塊C++、Java…………第六章ARM處理器1.ARM微處理器概述2.基于ARM的嵌入式系統(tǒng)開發(fā)舉例3.ARM微處理器編程模型4.ARM處理器的異常處理ARM的三個(gè)含義微處理器技術(shù)公司ARM-AdvancedRISCMachinesRISC

——ReducedInstructionSetComputer20%:常用80%:不常用CISC體系結(jié)構(gòu)指令數(shù)量整個(gè)程序代碼20%:不常用80%:常用指令構(gòu)成RISC體系結(jié)構(gòu)結(jié)構(gòu)優(yōu)化1979年,美國加州大學(xué)伯克利分校固定長度簡單指令大量使用寄存器加載存儲指令批量傳輸條件執(zhí)行單周期指令中使用邏輯處理和移位處理RISC體系結(jié)構(gòu)RISC結(jié)構(gòu)非常適合于嵌入式處理器ARM公司是全球領(lǐng)先的16/32位嵌入式RISC(ReducedInstructionSetComputer)微處理器解決方案的供應(yīng)商,向全球各大電子公司提供高性能、低功耗和低成本的RISC微處理器、外設(shè)和系統(tǒng)芯片技術(shù)授權(quán)。ARM還為開發(fā)完整系統(tǒng)提供綜合技術(shù)支持。

ARM公司成功的原因歸功于其三位一體的核心競爭力。首先是其領(lǐng)先業(yè)界的產(chǎn)品和技術(shù);其次是其獨(dú)辟蹊徑、最先締造的知識產(chǎn)權(quán)授權(quán)商業(yè)模式;最后是其龐大、穩(wěn)固的產(chǎn)業(yè)聯(lián)盟。ARM公司簡介ARM處理器應(yīng)用

到目前為止,ARM微處理器及其技術(shù)的應(yīng)用已經(jīng)深入到嵌入式的各個(gè)領(lǐng)域:

工業(yè)控制領(lǐng)域;(嵌入式控制、汽車控制等)成像和安全產(chǎn)品領(lǐng)域(數(shù)碼相機(jī)、數(shù)碼攝像機(jī)、打印機(jī)等、SIM卡、智能卡、金融設(shè)備、軌道交通等);

網(wǎng)絡(luò)應(yīng)用領(lǐng)域(WLAN、VoIP、xDSL等);

消費(fèi)類電子產(chǎn)品領(lǐng)域(MP3、MP4、機(jī)頂盒、游戲控制器、DVD、導(dǎo)航器等);

ARM處理器應(yīng)用無線通訊領(lǐng)域(85%的無線設(shè)備,智能手機(jī)、基站、PDA等);數(shù)字信號處理領(lǐng)域。ARM處理器的特點(diǎn)

ARM32位具體來講,ARM處理器的特點(diǎn)主要包括以下幾個(gè)方面:小體積、低功耗、低成本、高性能;精簡指令系統(tǒng)結(jié)構(gòu)RISC(大量通用寄存器、尋址方式靈活簡單、簡化指令譯碼、執(zhí)行速度快效率高);支持Thumb(16位)/ARM32位雙指令集,兼容性強(qiáng)

經(jīng)過多年的發(fā)展,ARM處理器已經(jīng)形成一個(gè)龐大的家族。ARM公司目前支持主要系列的處理器產(chǎn)品如下:

ARM7系列處理器;ARM11系列處理器;ARM9E系列處理器;

ARM10E系列處理器;ARM處理器系列概述ARM9系列處理器;Cortex系列處理器;SecurCore系列處理器;ARM7系列低功耗32位內(nèi)核3級流水線、馮洛伊曼結(jié)構(gòu)執(zhí)行ARMv4指令集合適對成本和功耗要求高的消費(fèi)類產(chǎn)品個(gè)人音頻設(shè)備接入及無線設(shè)備噴墨打印機(jī)數(shù)碼照相機(jī)PDAARM7TDMI應(yīng)用最廣泛ARM處理器系列概述ARM9系列如S3C2410,S3C24405級流水線,哈佛結(jié)構(gòu)執(zhí)行ARMv4T指令集合適對成本和功耗要求高的消費(fèi)類產(chǎn)品手持設(shè)備(視頻電話、PDA)數(shù)字消費(fèi)產(chǎn)品(機(jī)頂盒、游戲控制器、視頻播放器)成像設(shè)備(數(shù)碼相機(jī)、數(shù)字?jǐn)z像機(jī))汽車(通信和信息系統(tǒng))ARM處理器系列概述ARM11系列8級流水線,分離的Load-store和算數(shù)流水線高性能的存儲系統(tǒng)設(shè)計(jì)、影像處理性能強(qiáng)大的ARMv6指令集結(jié)構(gòu),ARMJazelle技術(shù)提高嵌入式Java代碼的執(zhí)行效率,ARMDSP擴(kuò)展,提供片上安全ARMTrustZone技術(shù),ARMThumb-2技術(shù)適應(yīng)更高的代碼密度和指令及效率MPCore綜合多處理器技術(shù)提高了處理器性能,大大節(jié)約了成本,與現(xiàn)有的EDA工具完全兼容例如:S3C6410X是基于ARM1176JZF-S核的用于手持、移動(dòng)等終端設(shè)備的通用處理器。ARM處理器系列概述Cortex系列基于ARMv7架構(gòu)優(yōu)化(1)Cortex-A主要用于復(fù)雜的操作系統(tǒng)和大型應(yīng)用場合,如高端手機(jī)、金融事務(wù)處理機(jī)等;(2)Cortex-R主要用于實(shí)時(shí)應(yīng)用場合,如大型發(fā)電機(jī)控制器、機(jī)械手臂等;(3)Cortex-M主要用戶傳統(tǒng)的低成本、低功耗、極速中斷反應(yīng)及高處理效率的自動(dòng)控制場合,如醫(yī)用器械、電子玩具、無線網(wǎng)絡(luò)等;ARM處理器系列概述SecurCore系列專為安全需要而設(shè)計(jì),提供了完善的32位RISC的安全解決方案,除了具有ARM體系結(jié)構(gòu)低成本、低功耗、高性能等的特點(diǎn),在支持安全解決方案的優(yōu)勢,如防止外部掃描探測、抵御攻擊等,適合場合(1)智能卡(2)SIM(3)金融業(yè)(4)付費(fèi)電視(5)軌道交通ARM處理器系列概述內(nèi)核功能處理速度存儲器尋址能力片內(nèi)外圍電路如何選擇嵌入式處理器需求示例處理器簡單的處理工作或控制實(shí)時(shí)性等數(shù)碼手表、空調(diào)、電冰箱等微控制器功能復(fù)雜,需要嵌入式操作系統(tǒng)電信交換機(jī)、路由器、網(wǎng)關(guān)、過程控制16或32位微處理器涉及信號處理和復(fù)雜數(shù)學(xué)計(jì)算音視頻和圖像信號處理、分析和編碼設(shè)備DSP面向圖形、響應(yīng)速度快桌面計(jì)算機(jī)、工業(yè)計(jì)算機(jī)等64位處理器如何選擇嵌入式處理器參數(shù)成本夠用處理器速度MIPS/MHz尋址能力總線寬度片上存儲器I/O接口功耗價(jià)格操作系統(tǒng)支持開發(fā)工具價(jià)格行業(yè)應(yīng)用廠商等TexasInstrumentFreescaleAtmelAMDSamsung……ARM微處理器S3C2440手冊&原理圖Feature基本功能特點(diǎn)Overview內(nèi)部功能基本模塊PinDescription管腳功能Register寄存器設(shè)置ARM微處理器S3C2440手冊&原理圖第六章ARM處理器1.ARM微處理器概述2.基于ARM的嵌入式系統(tǒng)開發(fā)舉例3.ARM微處理器編程模型4.ARM處理器的異常處理案例分析——PDA功能設(shè)計(jì)基本信息管理:

通訊錄、記事本、日程表、便箋……特定行業(yè)應(yīng)用軟件股票分析、警用PDA系統(tǒng)、物流系統(tǒng)、工業(yè)組態(tài)手持終端……常用應(yīng)用軟件社交軟件、游戲、輸入設(shè)備……硬件設(shè)計(jì)

硬件配置原理方框圖設(shè)計(jì)電路原理圖設(shè)計(jì)PCB圖與制版軟件設(shè)計(jì)操作系統(tǒng)驅(qū)動(dòng)程序網(wǎng)絡(luò)部分應(yīng)用軟件案例分析——PDA硬件設(shè)計(jì)

硬件配置原理方框圖設(shè)計(jì)電路原理圖設(shè)計(jì)PCB圖與制版S3C2410UART紅外SD卡LCD接口觸摸屏音頻輸入音頻輸出振蕩器、復(fù)位、供電、調(diào)試、通信模塊等NANDFLashSDRAM藍(lán)牙案例分析——PDA軟件設(shè)計(jì)操作系統(tǒng)驅(qū)動(dòng)程序網(wǎng)絡(luò)部分應(yīng)用軟件應(yīng)用軟件部分(基本管理、特定應(yīng)用、社交娛樂等)應(yīng)用編程接口API系統(tǒng)軟件(OS、GUI、電源管理、文件系統(tǒng))網(wǎng)絡(luò)部分(TCP/IP協(xié)議棧、Telnet)等LCDUART音頻其他驅(qū)動(dòng)S3C2410嵌入式硬件處理平臺案例分析——水表智能抄表系統(tǒng)設(shè)計(jì)目的傳統(tǒng)機(jī)械式的自來水表需要人工操作、工作量大、易出錯(cuò)、便利性不強(qiáng)智能水表:水表中嵌入處理器,自動(dòng)讀取水表數(shù)據(jù),傳輸至抄表手機(jī),抄表手機(jī)進(jìn)行數(shù)據(jù)處理、繳費(fèi)單帶你,并將數(shù)據(jù)傳送到公司數(shù)據(jù)庫中案例分析——水表智能抄表系統(tǒng)工作原理系統(tǒng)包含兩部分:公司數(shù)據(jù)庫部分和抄表員的抄表手機(jī)用戶的機(jī)械水表改裝成電子水表后,連接在樓宇匯集器中匯集器定時(shí)采集用戶水表數(shù)據(jù)并存儲在存儲器中抄表員使用抄表手機(jī)與匯集器進(jìn)行通信,一次讀取多個(gè)用戶的用水?dāng)?shù)據(jù)到達(dá)公司后,抄表手機(jī)與公司極端及進(jìn)行連接,把抄表數(shù)據(jù)導(dǎo)入公司數(shù)據(jù)庫案例分析——水表智能抄表系統(tǒng)第六章ARM處理器1.ARM微處理器概述2.基于ARM的嵌入式系統(tǒng)開發(fā)舉例3.ARM處理器編程模型4.ARM處理器的異常處理3.ARM微處理器編程模型ARM處理器的工作狀態(tài)ARM體系的存儲格式ARM處理器模式ARM寄存器的組織程序狀態(tài)寄存器CPSR第六章ARM處理器ARM采用的是32位架構(gòu)(ARMv7)ARM處理器支持以下數(shù)據(jù)類型:字節(jié)Byte: 8bits半字Halfword:16bits(2byte)字Word: 32bits(4byte)雙字Doubleword:64位(ARMv8架構(gòu)中)注意:ARMv8寄存器或操作數(shù)是64位寬,但指令長度仍為32位。ARMcore提供:ARM指令集(32-bit)Thumb指令集(T變種)(16-bit)Thumb-2指令集(16位和32位兼容)注意:

ARM處理器復(fù)位后開始執(zhí)行代碼時(shí),是處于ARM狀態(tài),ARM和Thumb狀態(tài)通過BX指令切換數(shù)據(jù)和指令類型3.ARM微處理器編程模型ARM處理器的工作狀態(tài)ARM體系體系的存儲格式ARM處理器模式ARM寄存器的組織程序狀態(tài)寄存器CPSR存儲器存儲格式A.小端存儲法(0x01234567)地址0x80000x80010x80020x8003數(shù)據(jù)(16進(jìn)制表示)0x670x450x230x01數(shù)據(jù)(二進(jìn)制表示)01100111010001010010001100000001B.大端存儲法地址0x80000x80010x80020x8003數(shù)據(jù)(16進(jìn)制表示)0x010x230x450x67數(shù)據(jù)(二進(jìn)制表示)00000001001000110100010101100111存儲器存儲格式大端模式(Big-endian)字?jǐn)?shù)據(jù)的高字節(jié)存儲在低地址中字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中小端模式(little-endian,缺省)低地址中存放字?jǐn)?shù)據(jù)的低字節(jié)高地址中存放字?jǐn)?shù)據(jù)的高字節(jié)3124

2316

158

70字地址11109887654432100低地址高地址3124

2316

158

70字地址89101184567401230低地址高地址3.ARM微處理器編程模型ARM處理器的工作狀態(tài)ARM體系體系的存儲格式ARM處理器模式ARM寄存器的組織程序狀態(tài)寄存器CPSR處理器模式說明備注用戶(usr)正常用戶程序執(zhí)行模式不能直接切換到其它模式系統(tǒng)(sys)運(yùn)行操作系統(tǒng)的特權(quán)任務(wù)與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式中斷(irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式管理(svc)操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式中止(abt)用于支持虛擬內(nèi)存和/或存儲器保護(hù)在訪問存儲器失敗時(shí)進(jìn)入此模式未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式處理器工作模式(1)ARM處理器有7種工作模式(ARM11,ARM9)特權(quán)模式下程序可以訪問所有系統(tǒng)資源,也可以進(jìn)行處理器模式切換各模式之間的切換,可以通過軟件控制來實(shí)現(xiàn),也可以由外部中斷或異常而引起特權(quán)模式異常模式異常發(fā)生時(shí),程序就要跳轉(zhuǎn)到響應(yīng)地址執(zhí)行,處理器也會處于相應(yīng)模式CortexA有九種模式處理器工作模式(2)處理器的模式與CPSR313029282726876543210NZCVQDNM(RAZ)IFTM4M3M2M1M0條件標(biāo)識位中斷禁止位控制位M4~M0處理器模式可訪問的寄存器10000用戶模式PC,R14~R0,CPSR(只讀)10001快速中斷PC,R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq10010外部中斷PC,R14_irq~R13_irq,R12~R0,CPSR,SPSR_irq10011特權(quán)模式PC,R14_svc~R13_svc,R12~R0,CPSR,SPSR_svc10111中止模式PC,R14_abt~R13_abt,R12~R0,CPSR,SPSR_abt11011未定義模式PC,R14_und~R13_und,R12~R0,CPSR,SPSR_und11111系統(tǒng)模式PC,R14~R0,CPSR(讀寫)當(dāng)異常發(fā)生時(shí),在特權(quán)模式下,程序可以修改這些位(1)中斷禁止位I、F,當(dāng)I=1時(shí)禁止IRQ中斷、當(dāng)F=1時(shí)禁止FIQ中斷(2)T控制位:用于控制指令執(zhí)行的狀態(tài),T=0表示執(zhí)行ARM指令,T=1時(shí)標(biāo)識執(zhí)行Thumb指令;(3)M控制位:控制處理器模式,具體含義如表所示MSRCPSR_c,#0xd3處理器模式與寄存器用戶模式系統(tǒng)模式管理模式中止模式未定義模式外部中斷模式快速中斷模式R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R8R8R8R8R8R8R8_fiqR9R9R9R9R9R9R9_fiqR10R10R10R10R10R10R10_fiqR11R11R11R11R11R11R11_fiqR12R12R12R12R12R12R12_fiqR13R13R13_svcR13_abtR13_undR13_irqR13_fiqR14R14R14_svcR14_abtR14_undR14_irqR14_fiqR15R15R15R15R15R15R15CPSRCPSRCPSRCPSRCPSRCPSRCPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq3.ARM微處理器編程模型ARM處理器的工作狀態(tài)ARM體系體系的存儲格式ARM處理器模式ARM寄存器的組織程序狀態(tài)寄存器CPSR用戶模式系統(tǒng)模式管理模式中止模式未定義模式外部中斷模式快速中斷模式R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R8R8R8R8R8R8R8_fiqR9R9R9R9R9R9R9_fiqR10R10R10R10R10R10R10_fiqR11R11R11R11R11R11R11_fiqR12R12R12R12R12R12R12_fiqR13R13R13_svcR13_abtR13_undR13_irqR13_fiqR14R14R14_svcR14_abtR14_undR14_irqR14_fiqR15R15R15R15R15R15R15CPSRCPSRCPSRCPSRCPSRCPSRCPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq各種處理器模式下的寄存器31個(gè)通用寄存器6個(gè)狀態(tài)寄存器寄存器R0~R7

(各對應(yīng)1個(gè)物理寄存器);寄存器CPSR(1個(gè)物理寄存器)和SPSR(5個(gè)寄存器);

寄存器R13(SP)~R14(LR)(各對應(yīng)6個(gè)物理寄存器);

寄存器R15-程序計(jì)數(shù)器PC(1個(gè)物理寄存器);

ARM寄存器寄存器R8~R12(各對應(yīng)2個(gè)物理寄存器);通用寄存器(31)狀態(tài)寄存器(6)usrsyssvcabtundirqfiqmonhypR0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R8R8R8R8R8R8R8_fiqR8R8R9R9R9R9R9R9R9_fiqR9R9R10R10R10R10R10R10R10_fiqR10R10R11R11R11R11R11R11R11_fiqR11R11R12R12R12R12R12R12R12_fiqR12R12R13R13R13_svcR13_abtR13_undR13_irqR13_fiqR13_monR13_hypR14R14R14_svcR14_abtR14_undR14_irqR14_fiqR14_monR14_hypR15R15R15R15R15R15R15R15R15CPSRCPSRCPSRCPSRCPSRCPSRCPSRCPSRCPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqSPSR_monSPSR_hypContex-A個(gè)模式下的寄存器31+4個(gè)通用寄存器6+2個(gè)狀態(tài)寄存器處理器的運(yùn)行模式和寄存器的組織結(jié)構(gòu)與處理器的類型相關(guān)。ARM狀態(tài)下寄存器組織Thumb狀態(tài)下寄存器組織ARM與Thumb狀態(tài)下寄存器組織的對應(yīng)關(guān)系寄存器的編程訪問取決于處理器的工作狀態(tài)和運(yùn)行模式。應(yīng)用程序在開始階段初始化該R13,使其指向異常模式專用的堆棧地址。R13在ARM中常用作堆棧指針(習(xí)慣用法),指令中常用SP表示。每一種異常模式都擁有自己的物理R13。示例:系統(tǒng)初始化R13MSR CPSR_c,#0xd3;設(shè)置管理模式LDR SP,StackSvc;初始化管理模式堆?!?dāng)進(jìn)入異常處理程序時(shí),可以將需要的寄存器的值保存在R13所指的堆棧中,當(dāng)退出異常處理程序時(shí),將保存在R13所指堆棧中的寄存器值彈出,這樣保護(hù)了中斷前的現(xiàn)場。ARM處理器內(nèi)部寄存器-R13Lable程序A程序BR14ARM處理器內(nèi)部寄存器-R14R14(LR)寄存器與子程序調(diào)用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A執(zhí)行過程中調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標(biāo)號Lable,執(zhí)行程序B。同時(shí)硬件將“BLLable”指令的下一條指令所在地址存入R14(LR);3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;ARM處理器內(nèi)部寄存器-R14R14寄存器與異常發(fā)生異常發(fā)生時(shí),程序要跳轉(zhuǎn)至異常服務(wù)程序,對返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個(gè)小常量的偏移。R14在ARM被稱為連接寄存器LR,主要如下兩個(gè)作用(1)在每一種處理模式中,各模式對應(yīng)的物理R14被設(shè)置BL指令或BLX指令調(diào)用子程序的返回地址(2)當(dāng)異常發(fā)生時(shí),該異常模式對應(yīng)的R14被設(shè)置成異常模式將要返回的地址。ARM處理器內(nèi)部寄存器-R14R14寄存器注意要點(diǎn)當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會發(fā)生沖突。例如:如果用戶在用戶模式下執(zhí)行程序時(shí)發(fā)生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時(shí),外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。ARM處理器內(nèi)部寄存器-R14R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞R14_irqARM處理器內(nèi)部寄存器-R14R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AaB...XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB...XA地址B地址B4.如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷;5.硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址將被覆蓋,造成錯(cuò)誤;R14_irq被破壞6.在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時(shí),發(fā)生錯(cuò)誤,將不能正確返回;returnreturn解決辦法是確保R14的對應(yīng)版本在發(fā)生中斷嵌套時(shí)不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。R15在ARM被稱為程序計(jì)數(shù)器PC,表示當(dāng)前CPU執(zhí)行的指令地址。向R15中寫入一個(gè)地址值,可以實(shí)現(xiàn)程序的跳轉(zhuǎn)。示例:用PC作為目標(biāo)寄存器實(shí)現(xiàn)程序的無條件跳轉(zhuǎn)MOV PC, address ;address為目標(biāo)地址示例:用PC作為目標(biāo)寄存器實(shí)現(xiàn)程序子程序的返回BL SubroutineMOV PC, LR ;從子程序返回示例:用PC實(shí)現(xiàn)程序異常中斷的返回當(dāng)PC寄存器作為目標(biāo)寄存器且指令中S位被設(shè)置時(shí),指令在執(zhí)行跳轉(zhuǎn)操作的同時(shí),將當(dāng)前處理器模式的SPSR內(nèi)容復(fù)制到CPSR中,實(shí)現(xiàn)某些異常中斷的返回MOVS PC, LR ;從子程序返回ARM處理器內(nèi)部寄存器-R153.ARM微處理器編程模型ARM處理器的工作狀態(tài)ARM體系體系的存儲格式ARM處理器模式ARM寄存器的組織程序狀態(tài)寄存器CPSR當(dāng)前程序狀態(tài)寄存器CPSR(1)313029282726876543210NZCVQDNM(RAZ)IFTM4M3M2M1M0條件標(biāo)識位中斷禁止位控制位條件位:N=1-結(jié)果為負(fù),0-結(jié)果為正或0Z=1-結(jié)果為0,0-結(jié)果不為0C=1-進(jìn)位,0-借位V=1-結(jié)果溢出,0結(jié)果沒溢出Q位:僅ARM5TE/J架構(gòu)支持指示增強(qiáng)型DSP指令是否溢出J位僅ARM5TE/J架構(gòu)支持J=1:處理器處于Jazelle狀態(tài)中斷禁止位:I=1:禁止IRQ.F=1:禁止FIQ.TBit僅ARMxT架構(gòu)支持T=0:處理器處于ARM狀態(tài)T=1:處理器處于Thumb狀態(tài)Mode位(處理器模式位):0b10000 User0b10001 FIQ0b10010 IRQ0b10011 Supervisor0b10111 Abort0b11011 Undefined0b11111 System當(dāng)前程序狀態(tài)寄存器CPSR(4)以下指令會影響CPSR中的條件標(biāo)志位(1)比較指令,如CMP(比較指令)、CMN(基于相反數(shù)的比較指令)、TEQ(相等測試指令)及TST(位測試指令)(2)目標(biāo)寄存器不是R15(程序計(jì)數(shù)器PC)的算數(shù)運(yùn)算指令和邏輯運(yùn)算指令(3)MSR(通用寄存器到狀態(tài)寄存器傳送指令)(4)MRC(協(xié)處理器寄存器到ARM寄存器的數(shù)據(jù)傳送指令)(5)一些LDM指令和位設(shè)置的變體指令可以將SPSR的值復(fù)制為CPSR,用于從異常中斷程序中返回。313029282726876543210NZCVQDNM(RAZ)IFTM4M3M2M1M0條件標(biāo)識位中斷禁止位控制位設(shè)置處理器運(yùn)行模式和工作狀態(tài)控制允許或者禁止FIQ和IRQ保存ALU當(dāng)前操作信息,設(shè)置條件標(biāo)志位,控制條件執(zhí)行當(dāng)前程序狀態(tài)寄存器CPSR功能備份狀態(tài)寄存器,當(dāng)異常發(fā)生時(shí),用于保存CPSR的狀態(tài)

。usr和sys模式下無SPSRSPSR備份程序狀態(tài)寄存器SPSRARM9共5個(gè)寄存器,每個(gè)異常模式下都有一個(gè),用于特定的異常中斷發(fā)生時(shí)保存CPSR的內(nèi)容。用戶和系統(tǒng)模式下沒有SPSR,在這兩種模式下訪問SPSR,會產(chǎn)生不可預(yù)知的結(jié)果。M4~M0處理器模式可訪問的寄存器10000用戶模式PC,R14~R0,CPSR(只讀)10001快速中斷PC,R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq10010外部中斷PC,R14_irq~R13_irq,R12~R0,CPSR,SPSR_irq10011特權(quán)模式PC,R14_svc~R13_svc,R12~R0,CPSR,SPSR_svc10111中止模式PC,R14_abt~R13_abt,R12~R0,CPSR,SPSR_abt11011未定義模式PC,R14_und~R13_und,R12~R0,CPSR,SPSR_und11111系統(tǒng)模式PC,R14~R0,CPSR(讀寫)第六章ARM處理器1.ARM微處理器概述2.基于ARM的嵌入式系統(tǒng)開發(fā)舉例3.ARM處理器編程模型4.ARM處理器的異常處理異常類型處理器模式異常向量復(fù)位(RESET)管理svc0X00000000未定義指令(UDEF)未定義und0X00000004軟件中斷(SWI)管理svc0X00000008指令預(yù)取中止(PABT)中止abt0X0000000C數(shù)據(jù)訪問中止(DABT)中止abt0X00000010保留-0X00000014IRQ中斷外部中斷irq0X00000018FIQ中斷快速中斷fiq0X0000001CARM處理器異常類型異常優(yōu)先級(從高到低):RESET、DABT、FIQ、IRQ、PABT、SWI、UDEFARM處理器異常處理異常向量:是異常程序的入口地址,指異常產(chǎn)生后,處理器PC值被強(qiáng)制賦予該異常所對應(yīng)的存儲器地址,處理器從該地址開始執(zhí)行異常處理程序。在異常被處理前,當(dāng)前的處理器狀態(tài)必須被保存,以便處理程序完成后,最后的程序可以被恢復(fù).異常發(fā)生拷貝CPSR到SPSR_<mode>保存返回地址到LR_<mode>設(shè)置CPSR[7:0]位(ARM態(tài),處理器模式,設(shè)置中斷)設(shè)置PC為相應(yīng)的異常向量異常返回從SPSR_<mode>恢復(fù)CPSR從LR_<mode>恢復(fù)PC程序AIRQ服務(wù)程序系統(tǒng)模式IRQ模式程序寄存器組圖示進(jìn)入異常過程1.程序在系統(tǒng)模式下運(yùn)行用戶程序,假定當(dāng)前處理器狀態(tài)為Thumb狀態(tài)、允許IRQ中斷;2.用戶程序運(yùn)行時(shí)發(fā)生IRQ中斷,硬件完成以下動(dòng)作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位(禁止IRQ中斷)清零T位(進(jìn)入ARM狀態(tài))設(shè)置MOD位,切換處理器模式至IRQ模式將下一條指令的地址存入IRQ模式的LR寄存器將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器將跳轉(zhuǎn)地址存入PC,實(shí)現(xiàn)跳轉(zhuǎn)IRQ0?1...????BackAddrJumpAddrJumpSYS1?0...????“?”表示對該位不關(guān)心異常過程的偽代碼示意SPSR_irq=CPSR ;拷貝CPSR到SPSRCPSR[4:0]=0b10010 ;設(shè)置處理器模式CPSR[5]=0 ;設(shè)置ARM工作狀態(tài)CPSR[7]=1 ;禁止IRQ中斷R14_irq=BackAdd ;設(shè)置返回地址PC=JumpAddr ;將跳轉(zhuǎn)地址或異常向量給PC或(ifhighvertorsconfigredthen PC=0xFFFF0018elsePC=0x00000018)在異常處理結(jié)束后,異常處理程序完成以下動(dòng)作:程序AIRQ服務(wù)程序系統(tǒng)模式IRQ模式程序寄存器組圖示退出異常過程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV將SPSR寄存器的值復(fù)制回CPSR寄存器;將LR寄存的值減去一個(gè)常量后復(fù)制

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論