




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Linux與嵌入式系統主講張璽君/方君麗Email:393378116@TEL算機與通信學院物聯網工程系嵌入式無處不在嵌入式系統(EmbeddedComputingSystem)1.嵌入式系統的定義專用性面向具體應用計算機硬件軟件軟硬件可以剪裁功能、成本、體積、功耗滿足以應用為中心、以計算機技術為基礎、軟件硬件可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統2.嵌入式系統的組成典型的嵌入式系統組成示例硬件平臺的多樣性是嵌入式系統的主要特點之一3.程序移植移植的必要性基于嵌入式處理器的原因基于操作系統原因新舊的操作系統的更替應用軟件不能操作系統平臺要求操作系統和應用軟件的整體移植把應用軟件移植到新的操作系統上處理器淘汰硬件平臺不同3.程序移植JavaC/C++匯編語言編譯器目標文件編譯器目標文件編譯器目標文件鏈接器可重定位器程序定位器可執行文件匯編語言的移植非常困難,甚至等于重新開發C語言的可移植性比較好由于技術的快速發展,在設計嵌入式應用系統是,一種較好的設計思路和習慣是在設計的開始階段就考慮到系統的一致性問題。設計易于移植的嵌入式應用軟件需要遵循層次化和模塊化的軟件設計方法。3.程序移植應用軟件輸入輸出模塊(與硬件無關)uart_drv.c硬件抽象層(與硬件相關)uart_regrw.c嵌入式微控制器硬件基于模塊化層次化的嵌入式系統應用軟件結構示例intuart_init(……);
//初始化UARTintuart_putc(……);//通過UART發送一個字符intuart_puts(……);//通過UART發送一個字節流intuart_getc(……);//通過UART讀取一個字符intuart_gets(……);//通過UAR收取字節流Register_UART_SendRegister_UART_ReceiveRegister_UART_ModeRegister_UART_Controlvoiduart_reg_write(…);//寫寄存器voiduart_reg_read(…);//讀寄存器定義虛擬UART端口寄存器和訪問代碼intuart_putc(……){//把待發送字符寫到發送寄存器,調用voiduart_reg_write);//發送完成,函數返回}如果更換了微處理器,一直的時候只需要修改uart_regrw.c中的讀寫函數4.硬件抽象層(HAL)和板級支持包BSP應用程序嵌入式中間件嵌入式操作系統硬件抽象層(HAL)和板級支持包BSP嵌入式硬件板級初始化串口驅動LCD驅動鍵盤驅動Flash驅動以太網驅動其他驅動4.硬件抽象層(HAL)和板級支持包BSP嵌入式處理平臺多樣性解決硬件差異性增強可移植性硬件抽象層HAL/板級支持包BSP介于硬件和軟件之間為軟件提供硬件特性,為硬件進行驅動是嵌入式系統很重要的軟件組成部分處理系統啟動、硬件初始化以及中斷與異常,完成進入嵌入式操作系統的運行。硬件相關性BSP作為軟硬件間的接口,必須為操作系統提供操作和控制硬件的方法。而嵌入式系統的硬件環境具有應用相關性。操作系統相關性不同的操作系統具有各自的軟件層次結構。因此,不同的操作系統具有特定的硬件接口形式。4.硬件抽象層(HAL)和板級支持包BSP硬件檢測初始化系統設備裝入操作系統調度操作系統向硬件發出的指令BIOS操作系統啟動以前的硬件和軟件初始化操作BSP/HAL
對于開發板提供商來說,BSP就是開發板的生產商提供的一個資料和資源包。通常包括:一硬件相關:
1開發板原理圖
2開發板元件列表
3接口定義
4地址分布二軟件相關:
1某些操作系統的bootloader及源代碼
2某些操作系統裁剪好的映像文件(如linux系列可能有源碼,如WinCE可能有CEC文件)三服務相關
1售后的技術支持(根據價格,差異很大)
4.硬件抽象層(HAL)和板級支持包BSP硬件抽象層的開發方法移植當前的硬件抽象層通常是根據硬件設備,尋找其驅動然后進行移植;開發如果沒有可用的驅動,將被迫重新編寫設備驅動,但不利于軟件重用,會造成重復勞動4.硬件抽象層(HAL)和板級支持包BSP示例:TIZ-Stack協議棧Z‐Stack在項目中的目錄結構hal_assert.c是斷言文件,用于調試,hal_drivers.c是驅動文件,抽象出與硬件無關的驅動函數,包含有與硬件相關的配置和驅動及操作函數。Include目錄下主要包含各個硬件模塊的頭文件,
Target目錄下的文件是跟硬件平臺相關的示例:TIZ-Stack協議棧Z-Stack的main函數在ZMain.c中,總體上來說,它一共做了兩件工作,一個是系統初始化,即由啟動代碼來初始化硬件系統和軟件構架需要的各個模塊,另外一個就是開始執行操作系統實體系統初始化流程圖擴展:Zigbee、藍牙、Wifi、RFID、GIS、TCP/IP……擴展:Andriod開發、信息家電、消費電子、工業物聯網、網絡通信設備、航空航天設備、現代武器……5.嵌入式開發學習路線C語言Linux基礎應用程序開發(系統編程、網絡編程)系統移植驅動開發ARM編程模型指令系統存儲結構I/O模塊C++、Java…………第六章ARM處理器1.ARM微處理器概述2.基于ARM的嵌入式系統開發舉例3.ARM微處理器編程模型4.ARM處理器的異常處理ARM的三個含義微處理器技術公司ARM-AdvancedRISCMachinesRISC
——ReducedInstructionSetComputer20%:常用80%:不常用CISC體系結構指令數量整個程序代碼20%:不常用80%:常用指令構成RISC體系結構結構優化1979年,美國加州大學伯克利分校固定長度簡單指令大量使用寄存器加載存儲指令批量傳輸條件執行單周期指令中使用邏輯處理和移位處理RISC體系結構RISC結構非常適合于嵌入式處理器ARM公司是全球領先的16/32位嵌入式RISC(ReducedInstructionSetComputer)微處理器解決方案的供應商,向全球各大電子公司提供高性能、低功耗和低成本的RISC微處理器、外設和系統芯片技術授權。ARM還為開發完整系統提供綜合技術支持。
ARM公司成功的原因歸功于其三位一體的核心競爭力。首先是其領先業界的產品和技術;其次是其獨辟蹊徑、最先締造的知識產權授權商業模式;最后是其龐大、穩固的產業聯盟。ARM公司簡介ARM處理器應用
到目前為止,ARM微處理器及其技術的應用已經深入到嵌入式的各個領域:
工業控制領域;(嵌入式控制、汽車控制等)成像和安全產品領域(數碼相機、數碼攝像機、打印機等、SIM卡、智能卡、金融設備、軌道交通等);
網絡應用領域(WLAN、VoIP、xDSL等);
消費類電子產品領域(MP3、MP4、機頂盒、游戲控制器、DVD、導航器等);
ARM處理器應用無線通訊領域(85%的無線設備,智能手機、基站、PDA等);數字信號處理領域。ARM處理器的特點
ARM32位具體來講,ARM處理器的特點主要包括以下幾個方面:小體積、低功耗、低成本、高性能;精簡指令系統結構RISC(大量通用寄存器、尋址方式靈活簡單、簡化指令譯碼、執行速度快效率高);支持Thumb(16位)/ARM32位雙指令集,兼容性強
經過多年的發展,ARM處理器已經形成一個龐大的家族。ARM公司目前支持主要系列的處理器產品如下:
ARM7系列處理器;ARM11系列處理器;ARM9E系列處理器;
ARM10E系列處理器;ARM處理器系列概述ARM9系列處理器;Cortex系列處理器;SecurCore系列處理器;ARM7系列低功耗32位內核3級流水線、馮洛伊曼結構執行ARMv4指令集合適對成本和功耗要求高的消費類產品個人音頻設備接入及無線設備噴墨打印機數碼照相機PDAARM7TDMI應用最廣泛ARM處理器系列概述ARM9系列如S3C2410,S3C24405級流水線,哈佛結構執行ARMv4T指令集合適對成本和功耗要求高的消費類產品手持設備(視頻電話、PDA)數字消費產品(機頂盒、游戲控制器、視頻播放器)成像設備(數碼相機、數字攝像機)汽車(通信和信息系統)ARM處理器系列概述ARM11系列8級流水線,分離的Load-store和算數流水線高性能的存儲系統設計、影像處理性能強大的ARMv6指令集結構,ARMJazelle技術提高嵌入式Java代碼的執行效率,ARMDSP擴展,提供片上安全ARMTrustZone技術,ARMThumb-2技術適應更高的代碼密度和指令及效率MPCore綜合多處理器技術提高了處理器性能,大大節約了成本,與現有的EDA工具完全兼容例如:S3C6410X是基于ARM1176JZF-S核的用于手持、移動等終端設備的通用處理器。ARM處理器系列概述Cortex系列基于ARMv7架構優化(1)Cortex-A主要用于復雜的操作系統和大型應用場合,如高端手機、金融事務處理機等;(2)Cortex-R主要用于實時應用場合,如大型發電機控制器、機械手臂等;(3)Cortex-M主要用戶傳統的低成本、低功耗、極速中斷反應及高處理效率的自動控制場合,如醫用器械、電子玩具、無線網絡等;ARM處理器系列概述SecurCore系列專為安全需要而設計,提供了完善的32位RISC的安全解決方案,除了具有ARM體系結構低成本、低功耗、高性能等的特點,在支持安全解決方案的優勢,如防止外部掃描探測、抵御攻擊等,適合場合(1)智能卡(2)SIM(3)金融業(4)付費電視(5)軌道交通ARM處理器系列概述內核功能處理速度存儲器尋址能力片內外圍電路如何選擇嵌入式處理器需求示例處理器簡單的處理工作或控制實時性等數碼手表、空調、電冰箱等微控制器功能復雜,需要嵌入式操作系統電信交換機、路由器、網關、過程控制16或32位微處理器涉及信號處理和復雜數學計算音視頻和圖像信號處理、分析和編碼設備DSP面向圖形、響應速度快桌面計算機、工業計算機等64位處理器如何選擇嵌入式處理器參數成本夠用處理器速度MIPS/MHz尋址能力總線寬度片上存儲器I/O接口功耗價格操作系統支持開發工具價格行業應用廠商等TexasInstrumentFreescaleAtmelAMDSamsung……ARM微處理器S3C2440手冊&原理圖Feature基本功能特點Overview內部功能基本模塊PinDescription管腳功能Register寄存器設置ARM微處理器S3C2440手冊&原理圖第六章ARM處理器1.ARM微處理器概述2.基于ARM的嵌入式系統開發舉例3.ARM微處理器編程模型4.ARM處理器的異常處理案例分析——PDA功能設計基本信息管理:
通訊錄、記事本、日程表、便箋……特定行業應用軟件股票分析、警用PDA系統、物流系統、工業組態手持終端……常用應用軟件社交軟件、游戲、輸入設備……硬件設計
硬件配置原理方框圖設計電路原理圖設計PCB圖與制版軟件設計操作系統驅動程序網絡部分應用軟件案例分析——PDA硬件設計
硬件配置原理方框圖設計電路原理圖設計PCB圖與制版S3C2410UART紅外SD卡LCD接口觸摸屏音頻輸入音頻輸出振蕩器、復位、供電、調試、通信模塊等NANDFLashSDRAM藍牙案例分析——PDA軟件設計操作系統驅動程序網絡部分應用軟件應用軟件部分(基本管理、特定應用、社交娛樂等)應用編程接口API系統軟件(OS、GUI、電源管理、文件系統)網絡部分(TCP/IP協議棧、Telnet)等LCDUART音頻其他驅動S3C2410嵌入式硬件處理平臺案例分析——水表智能抄表系統設計目的傳統機械式的自來水表需要人工操作、工作量大、易出錯、便利性不強智能水表:水表中嵌入處理器,自動讀取水表數據,傳輸至抄表手機,抄表手機進行數據處理、繳費單帶你,并將數據傳送到公司數據庫中案例分析——水表智能抄表系統工作原理系統包含兩部分:公司數據庫部分和抄表員的抄表手機用戶的機械水表改裝成電子水表后,連接在樓宇匯集器中匯集器定時采集用戶水表數據并存儲在存儲器中抄表員使用抄表手機與匯集器進行通信,一次讀取多個用戶的用水數據到達公司后,抄表手機與公司極端及進行連接,把抄表數據導入公司數據庫案例分析——水表智能抄表系統第六章ARM處理器1.ARM微處理器概述2.基于ARM的嵌入式系統開發舉例3.ARM處理器編程模型4.ARM處理器的異常處理3.ARM微處理器編程模型ARM處理器的工作狀態ARM體系的存儲格式ARM處理器模式ARM寄存器的組織程序狀態寄存器CPSR第六章ARM處理器ARM采用的是32位架構(ARMv7)ARM處理器支持以下數據類型:字節Byte: 8bits半字Halfword:16bits(2byte)字Word: 32bits(4byte)雙字Doubleword:64位(ARMv8架構中)注意:ARMv8寄存器或操作數是64位寬,但指令長度仍為32位。ARMcore提供:ARM指令集(32-bit)Thumb指令集(T變種)(16-bit)Thumb-2指令集(16位和32位兼容)注意:
ARM處理器復位后開始執行代碼時,是處于ARM狀態,ARM和Thumb狀態通過BX指令切換數據和指令類型3.ARM微處理器編程模型ARM處理器的工作狀態ARM體系體系的存儲格式ARM處理器模式ARM寄存器的組織程序狀態寄存器CPSR存儲器存儲格式A.小端存儲法(0x01234567)地址0x80000x80010x80020x8003數據(16進制表示)0x670x450x230x01數據(二進制表示)01100111010001010010001100000001B.大端存儲法地址0x80000x80010x80020x8003數據(16進制表示)0x010x230x450x67數據(二進制表示)00000001001000110100010101100111存儲器存儲格式大端模式(Big-endian)字數據的高字節存儲在低地址中字數據的低字節則存放在高地址中小端模式(little-endian,缺省)低地址中存放字數據的低字節高地址中存放字數據的高字節3124
2316
158
70字地址11109887654432100低地址高地址3124
2316
158
70字地址89101184567401230低地址高地址3.ARM微處理器編程模型ARM處理器的工作狀態ARM體系體系的存儲格式ARM處理器模式ARM寄存器的組織程序狀態寄存器CPSR處理器模式說明備注用戶(usr)正常用戶程序執行模式不能直接切換到其它模式系統(sys)運行操作系統的特權任務與用戶模式類似,但具有可以直接切換到其它模式等特權快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式管理(svc)操作系統保護模式系統復位和軟件中斷響應時進入此模式中止(abt)用于支持虛擬內存和/或存儲器保護在訪問存儲器失敗時進入此模式未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式處理器工作模式(1)ARM處理器有7種工作模式(ARM11,ARM9)特權模式下程序可以訪問所有系統資源,也可以進行處理器模式切換各模式之間的切換,可以通過軟件控制來實現,也可以由外部中斷或異常而引起特權模式異常模式異常發生時,程序就要跳轉到響應地址執行,處理器也會處于相應模式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系統模式PC,R14~R0,CPSR(讀寫)當異常發生時,在特權模式下,程序可以修改這些位(1)中斷禁止位I、F,當I=1時禁止IRQ中斷、當F=1時禁止FIQ中斷(2)T控制位:用于控制指令執行的狀態,T=0表示執行ARM指令,T=1時標識執行Thumb指令;(3)M控制位:控制處理器模式,具體含義如表所示MSRCPSR_c,#0xd3處理器模式與寄存器用戶模式系統模式管理模式中止模式未定義模式外部中斷模式快速中斷模式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處理器的工作狀態ARM體系體系的存儲格式ARM處理器模式ARM寄存器的組織程序狀態寄存器CPSR用戶模式系統模式管理模式中止模式未定義模式外部中斷模式快速中斷模式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個狀態寄存器寄存器R0~R7
(各對應1個物理寄存器);寄存器CPSR(1個物理寄存器)和SPSR(5個寄存器);
寄存器R13(SP)~R14(LR)(各對應6個物理寄存器);
寄存器R15-程序計數器PC(1個物理寄存器);
ARM寄存器寄存器R8~R12(各對應2個物理寄存器);通用寄存器(31)狀態寄存器(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個狀態寄存器處理器的運行模式和寄存器的組織結構與處理器的類型相關。ARM狀態下寄存器組織Thumb狀態下寄存器組織ARM與Thumb狀態下寄存器組織的對應關系寄存器的編程訪問取決于處理器的工作狀態和運行模式。應用程序在開始階段初始化該R13,使其指向異常模式專用的堆棧地址。R13在ARM中常用作堆棧指針(習慣用法),指令中常用SP表示。每一種異常模式都擁有自己的物理R13。示例:系統初始化R13MSR CPSR_c,#0xd3;設置管理模式LDR SP,StackSvc;初始化管理模式堆棧……當進入異常處理程序時,可以將需要的寄存器的值保存在R13所指的堆棧中,當退出異常處理程序時,將保存在R13所指堆棧中的寄存器值彈出,這樣保護了中斷前的現場。ARM處理器內部寄存器-R13Lable程序A程序BR14ARM處理器內部寄存器-R14R14(LR)寄存器與子程序調用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A執行過程中調用程序B;操作流程2.程序跳轉至標號Lable,執行程序B。同時硬件將“BLLable”指令的下一條指令所在地址存入R14(LR);3.程序B執行最后,將R14寄存器的內容放入PC,返回程序A;ARM處理器內部寄存器-R14R14寄存器與異常發生異常發生時,程序要跳轉至異常服務程序,對返回地址的處理與子程序調用類似,都是由硬件完成的。區別在于有些異常有一個小常量的偏移。R14在ARM被稱為連接寄存器LR,主要如下兩個作用(1)在每一種處理模式中,各模式對應的物理R14被設置BL指令或BLX指令調用子程序的返回地址(2)當異常發生時,該異常模式對應的R14被設置成異常模式將要返回的地址。ARM處理器內部寄存器-R14R14寄存器注意要點當發生異常嵌套時,這些異常之間可能會發生沖突。例如:如果用戶在用戶模式下執行程序時發生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發生了嵌套的IRQ中斷時,外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。ARM處理器內部寄存器-R14R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.執行用戶模式下的程序;2.發生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務程序A執行完畢,將R14_irq寄存器的內容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞R14_irqARM處理器內部寄存器-R14R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AaB...XA地址A地址A1.執行用戶模式下的程序;2.發生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務程序A執行完畢,將R14_irq寄存器的內容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB...XA地址B地址B4.如果在IRQ處理程序中打開IRQ中斷,并且再次發生IRQ中斷;5.硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址將被覆蓋,造成錯誤;R14_irq被破壞6.在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時,發生錯誤,將不能正確返回;returnreturn解決辦法是確保R14的對應版本在發生中斷嵌套時不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。R15在ARM被稱為程序計數器PC,表示當前CPU執行的指令地址。向R15中寫入一個地址值,可以實現程序的跳轉。示例:用PC作為目標寄存器實現程序的無條件跳轉MOV PC, address ;address為目標地址示例:用PC作為目標寄存器實現程序子程序的返回BL SubroutineMOV PC, LR ;從子程序返回示例:用PC實現程序異常中斷的返回當PC寄存器作為目標寄存器且指令中S位被設置時,指令在執行跳轉操作的同時,將當前處理器模式的SPSR內容復制到CPSR中,實現某些異常中斷的返回MOVS PC, LR ;從子程序返回ARM處理器內部寄存器-R153.ARM微處理器編程模型ARM處理器的工作狀態ARM體系體系的存儲格式ARM處理器模式ARM寄存器的組織程序狀態寄存器CPSR當前程序狀態寄存器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狀態中斷禁止位:I=1:禁止IRQ.F=1:禁止FIQ.TBit僅ARMxT架構支持T=0:處理器處于ARM狀態T=1:處理器處于Thumb狀態Mode位(處理器模式位):0b10000 User0b10001 FIQ0b10010 IRQ0b10011 Supervisor0b10111 Abort0b11011 Undefined0b11111 System當前程序狀態寄存器CPSR(4)以下指令會影響CPSR中的條件標志位(1)比較指令,如CMP(比較指令)、CMN(基于相反數的比較指令)、TEQ(相等測試指令)及TST(位測試指令)(2)目標寄存器不是R15(程序計數器PC)的算數運算指令和邏輯運算指令(3)MSR(通用寄存器到狀態寄存器傳送指令)(4)MRC(協處理器寄存器到ARM寄存器的數據傳送指令)(5)一些LDM指令和位設置的變體指令可以將SPSR的值復制為CPSR,用于從異常中斷程序中返回。313029282726876543210NZCVQDNM(RAZ)IFTM4M3M2M1M0條件標識位中斷禁止位控制位設置處理器運行模式和工作狀態控制允許或者禁止FIQ和IRQ保存ALU當前操作信息,設置條件標志位,控制條件執行當前程序狀態寄存器CPSR功能備份狀態寄存器,當異常發生時,用于保存CPSR的狀態
。usr和sys模式下無SPSRSPSR備份程序狀態寄存器SPSRARM9共5個寄存器,每個異常模式下都有一個,用于特定的異常中斷發生時保存CPSR的內容。用戶和系統模式下沒有SPSR,在這兩種模式下訪問SPSR,會產生不可預知的結果。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系統模式PC,R14~R0,CPSR(讀寫)第六章ARM處理器1.ARM微處理器概述2.基于ARM的嵌入式系統開發舉例3.ARM處理器編程模型4.ARM處理器的異常處理異常類型處理器模式異常向量復位(RESET)管理svc0X00000000未定義指令(UDEF)未定義und0X00000004軟件中斷(SWI)管理svc0X00000008指令預取中止(PABT)中止abt0X0000000C數據訪問中止(DABT)中止abt0X00000010保留-0X00000014IRQ中斷外部中斷irq0X00000018FIQ中斷快速中斷fiq0X0000001CARM處理器異常類型異常優先級(從高到低):RESET、DABT、FIQ、IRQ、PABT、SWI、UDEFARM處理器異常處理異常向量:是異常程序的入口地址,指異常產生后,處理器PC值被強制賦予該異常所對應的存儲器地址,處理器從該地址開始執行異常處理程序。在異常被處理前,當前的處理器狀態必須被保存,以便處理程序完成后,最后的程序可以被恢復.異常發生拷貝CPSR到SPSR_<mode>保存返回地址到LR_<mode>設置CPSR[7:0]位(ARM態,處理器模式,設置中斷)設置PC為相應的異常向量異常返回從SPSR_<mode>恢復CPSR從LR_<mode>恢復PC程序AIRQ服務程序系統模式IRQ模式程序寄存器組圖示進入異常過程1.程序在系統模式下運行用戶程序,假定當前處理器狀態為Thumb狀態、允許IRQ中斷;2.用戶程序運行時發生IRQ中斷,硬件完成以下動作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位(禁止IRQ中斷)清零T位(進入ARM狀態)設置MOD位,切換處理器模式至IRQ模式將下一條指令的地址存入IRQ模式的LR寄存器將CPSR寄存器內容存入IRQ模式的SPSR寄存器將跳轉地址存入PC,實現跳轉IRQ0?1...????BackAddrJumpAddrJumpSYS1?0...????“?”表示對該位不關心異常過程的偽代碼示意SPSR_irq=CPSR ;拷貝CPSR到SPSRCPSR[4:0]=0b10010 ;設置處理器模式CPSR[5]=0 ;設置ARM工作狀態CPSR[7]=1 ;禁止IRQ中斷R14_irq=BackAdd ;設置返回地址PC=JumpAddr ;將跳轉地址或異常向量給PC或(ifhighvertorsconfigredthen PC=0xFFFF0018elsePC=0x00000018)在異常處理結束后,異常處理程序完成以下動作:程序AIRQ服務程序系統模式IRQ模式程序寄存器組圖示退出異常過程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV將SPSR寄存器的值復制回CPSR寄存器;將LR寄存的值減去一個常量后復制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園施工工地管理制度
- 校園綠化保護管理制度
- 校園足球競賽管理制度
- 校外托管宿舍管理制度
- 單細胞測序技術-第1篇-洞察及研究
- 綠色低碳轉型-第1篇-洞察及研究
- 非均相光催化劑設計-洞察及研究
- 企業網絡建設與安全保障服務合同
- 農業種養殖產品展示表
- 飲料食品行業市場占有率統計表
- 支付令申請書模板:工程款支付令
- 養殖場消防知識講座
- 醫院感染風險評估表(適用于病房、換藥室、治療室、注射室)
- GA 2093-2023公安機關警務輔助人員工作證內卡技術規范
- 兩辦意見八硬措施煤礦安全生產條例宣貫學習課件
- 危化品運輸車輛的GPS監控與追蹤系統
- 地下礦山常見安全隱患的排查和處置
- 招標程序和《必須招標的工程項目規定》解讀-必須招標的項目課件
- (完整版)QQ三國副職及日常物品成本計算表v1.0
- 電極的界面雙電層性質課件
- 竣工驗收階段的質量控制
評論
0/150
提交評論