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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

1開發(fā)板原理圖

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

3接口定義

4地址分布二軟件相關:

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

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

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

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

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

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

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

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

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

網(wǎng)絡應用領域(WLAN、VoIP、xDSL等);

消費類電子產(chǎn)品領域(MP3、MP4、機頂盒、游戲控制器、DVD、導航器等);

ARM處理器應用無線通訊領域(85%的無線設備,智能手機、基站、PDA等);數(shù)字信號處理領域。ARM處理器的特點

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

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

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

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

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

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

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

ARM處理器復位后開始執(zhí)行代碼時,是處于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進制表示)0x670x450x230x01數(shù)據(jù)(二進制表示)01100111010001010010001100000001B.大端存儲法地址0x80000x80010x80020x8003數(shù)據(jù)(16進制表示)0x010x230x450x67數(shù)據(jù)(二進制表示)00000001001000110100010101100111存儲器存儲格式大端模式(Big-endian)字數(shù)據(jù)的高字節(jié)存儲在低地址中字數(shù)據(jù)的低字節(jié)則存放在高地址中小端模式(little-endian,缺省)低地址中存放字數(shù)據(jù)的低字節(jié)高地址中存放字數(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)運行操作系統(tǒng)的特權任務與用戶模式類似,但具有可以直接切換到其它模式等特權快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應時進入此模式中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式管理(svc)操作系統(tǒng)保護模式系統(tǒng)復位和軟件中斷響應時進入此模式中止(abt)用于支持虛擬內存和/或存儲器保護在訪問存儲器失敗時進入此模式未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應時進入此模式處理器工作模式(1)ARM處理器有7種工作模式(ARM11,ARM9)特權模式下程序可以訪問所有系統(tǒng)資源,也可以進行處理器模式切換各模式之間的切換,可以通過軟件控制來實現(xiàn),也可以由外部中斷或異常而引起特權模式異常模式異常發(fā)生時,程序就要跳轉到響應地址執(zhí)行,處理器也會處于相應模式CortexA有九種模式處理器工作模式(2)處理器的模式與CPSR313029282726876543210NZCVQDNM(RAZ)IFTM4M3M2M1M0條件標識位中斷禁止位控制位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特權模式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(讀寫)當異常發(fā)生時,在特權模式下,程序可以修改這些位(1)中斷禁止位I、F,當I=1時禁止IRQ中斷、當F=1時禁止FIQ中斷(2)T控制位:用于控制指令執(zhí)行的狀態(tài),T=0表示執(zhí)行ARM指令,T=1時標識執(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個通用寄存器6個狀態(tài)寄存器寄存器R0~R7

(各對應1個物理寄存器);寄存器CPSR(1個物理寄存器)和SPSR(5個寄存器);

寄存器R13(SP)~R14(LR)(各對應6個物理寄存器);

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

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論