成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Cortex M架構(gòu)與Cortex A架構(gòu)中斷系統(tǒng)的區(qū)別

開發(fā) 架構(gòu)
Cortex A架構(gòu),可以細分為Cortex A7,Cortex A8,Cortex A9,Cortex A15等,比如NXP的IMX6系列,TI的AM335X系列等。Cortex M主要用在微控制器領(lǐng)域,Cortex R主要用在對實時性要求比較高的領(lǐng)域,Cortex A主要用在高端應(yīng)用領(lǐng)域。

[[394267]]

Cortex M架構(gòu),典型就是STM32系列,比如STM32F103(Cortex M3)。

Cortex A架構(gòu),可以細分為Cortex A7,Cortex A8,Cortex A9,Cortex A15等,比如NXP的IMX6系列,TI的AM335X系列等。

Cortex M主要用在微控制器領(lǐng)域,Cortex R主要用在對實時性要求比較高的領(lǐng)域,Cortex A主要用在高端應(yīng)用領(lǐng)域。


Cortex M架構(gòu)

在Cortex M架構(gòu)中,比如STM32F103,中斷向量表是寫在啟動文件當(dāng)中,一般為startup_stm32f10x_hd.s或者startup_stm32f10x_md.s中,.s結(jié)尾為匯編文件,這個匯編語言寫的啟動文件的作用,是在板子上電后為C語言代碼的運行做好初始化工作,比如設(shè)置堆棧大小,設(shè)置中斷向量表等,然后再跳轉(zhuǎn)到main函數(shù)去執(zhí)行你的C代碼。文件內(nèi)容如下(部分省略):

設(shè)置棧大小

  1. Stack_Size      EQU     0x00000400 

設(shè)置堆大小

  1. Heap_Size       EQU     0x00000200 

; Vector Table Mapped to Address 0 at Reset后面很多 DCD 的就是STM32的中斷向量表,系統(tǒng)所有可用的中斷都寫在這里,包括外部中斷、定時器中斷、DMA中斷、IIC中斷、串口中斷等。

  1. Stack_Size      EQU     0x00000400 
  2.  
  3.                 AREA    STACK, NOINIT, READWRITE, ALIGN=3 
  4. Stack_Mem       SPACE   Stack_Size 
  5. __initial_sp 
  6.                                                    
  7. ; <h> Heap Configuration 
  8. ;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> 
  9. ; </h> 
  10.  
  11. Heap_Size       EQU     0x00000200 
  12.  
  13.                 AREA    HEAP, NOINIT, READWRITE, ALIGN=3 
  14. __heap_base 
  15. Heap_Mem        SPACE   Heap_Size 
  16. __heap_limit 
  17.  
  18.                 PRESERVE8 
  19.                 THUMB 
  20.  
  21.  
  22. ; Vector Table Mapped to Address 0 at Reset 
  23.                 AREA    RESET, DATA, READONLY 
  24.                 EXPORT  __Vectors 
  25.                 EXPORT  __Vectors_End 
  26.                 EXPORT  __Vectors_Size 
  27.  
  28. __Vectors       DCD     __initial_sp               ; Top of Stack 
  29.                 DCD     Reset_Handler              ; Reset Handler 
  30.                 DCD     NMI_Handler                ; NMI Handler 
  31.                 DCD     HardFault_Handler          ; Hard Fault Handler 
  32.                 DCD     MemManage_Handler          ; MPU Fault Handler 
  33.                 DCD     BusFault_Handler           ; Bus Fault Handler 
  34.                 DCD     UsageFault_Handler         ; Usage Fault Handler 
  35.                 DCD     0                          ; Reserved 
  36.                 DCD     0                          ; Reserved 
  37.                 DCD     0                          ; Reserved 
  38.                 DCD     0                          ; Reserved 
  39.                 DCD     SVC_Handler                ; SVCall Handler 
  40.                 DCD     DebugMon_Handler           ; Debug Monitor Handler 
  41.                 DCD     0                          ; Reserved 
  42.                 DCD     PendSV_Handler             ; PendSV Handler 
  43.                 DCD     SysTick_Handler            ; SysTick Handler 
  44.  
  45.                 ; External Interrupts 
  46.                 DCD     WWDG_IRQHandler            ; Window Watchdog 
  47.                 DCD     PVD_IRQHandler             ; PVD through EXTI Line detect 
  48.                 DCD     TAMPER_IRQHandler          ; Tamper 
  49.                 DCD     RTC_IRQHandler             ; RTC 
  50.                 DCD     FLASH_IRQHandler           ; Flash 
  51.                 DCD     RCC_IRQHandler             ; RCC 
  52.                 DCD     EXTI0_IRQHandler           ; EXTI Line 0 
  53.                 DCD     EXTI1_IRQHandler           ; EXTI Line 1 
  54.                 DCD     EXTI2_IRQHandler           ; EXTI Line 2 
  55.                 DCD     EXTI3_IRQHandler           ; EXTI Line 3 
  56.                 DCD     EXTI4_IRQHandler           ; EXTI Line 4 
  57.                 DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1 
  58.                 DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2 
  59.                 DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3 
  60.                 DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4 
  61.                 DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5 
  62.                 DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6 
  63.                 DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7 
  64.                 DCD     ADC1_2_IRQHandler          ; ADC1 & ADC2 
  65.                 DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX 
  66.                 DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0 
  67.                 DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1 
  68.                 DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE 
  69.                 DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5 
  70.                 DCD     TIM1_BRK_IRQHandler        ; TIM1 Break 
  71.                 DCD     TIM1_UP_IRQHandler         ; TIM1 Update 
  72.                 DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation 
  73.                 DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare 
  74.                 DCD     TIM2_IRQHandler            ; TIM2 
  75.                 DCD     TIM3_IRQHandler            ; TIM3 
  76.                 DCD     TIM4_IRQHandler            ; TIM4 
  77.                 DCD     I2C1_EV_IRQHandler         ; I2C1 Event 
  78.                 DCD     I2C1_ER_IRQHandler         ; I2C1 Error 
  79.                 DCD     I2C2_EV_IRQHandler         ; I2C2 Event 
  80.                 DCD     I2C2_ER_IRQHandler         ; I2C2 Error 
  81.                 DCD     SPI1_IRQHandler            ; SPI1 
  82.                 DCD     SPI2_IRQHandler            ; SPI2 
  83.                 DCD     USART1_IRQHandler          ; USART1 
  84.                 DCD     USART2_IRQHandler          ; USART2 
  85.                 DCD     USART3_IRQHandler          ; USART3 
  86.                 DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10 
  87.                 DCD     RTCAlarm_IRQHandler        ; RTC Alarm through EXTI Line 
  88.                 DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend 
  89.                 DCD     TIM8_BRK_IRQHandler        ; TIM8 Break 
  90.                 DCD     TIM8_UP_IRQHandler         ; TIM8 Update 
  91.                 DCD     TIM8_TRG_COM_IRQHandler    ; TIM8 Trigger and Commutation 
  92.                 DCD     TIM8_CC_IRQHandler         ; TIM8 Capture Compare 
  93.                 DCD     ADC3_IRQHandler            ; ADC3 
  94.                 DCD     FSMC_IRQHandler            ; FSMC 
  95.                 DCD     SDIO_IRQHandler            ; SDIO 
  96.                 DCD     TIM5_IRQHandler            ; TIM5 
  97.                 DCD     SPI3_IRQHandler            ; SPI3 
  98.                 DCD     UART4_IRQHandler           ; UART4 
  99.                 DCD     UART5_IRQHandler           ; UART5 
  100.                 DCD     TIM6_IRQHandler            ; TIM6 
  101.                 DCD     TIM7_IRQHandler            ; TIM7 
  102.                 DCD     DMA2_Channel1_IRQHandler   ; DMA2 Channel1 
  103.                 DCD     DMA2_Channel2_IRQHandler   ; DMA2 Channel2 
  104.                 DCD     DMA2_Channel3_IRQHandler   ; DMA2 Channel3 
  105.                 DCD     DMA2_Channel4_5_IRQHandler ; DMA2 Channel4 & Channel5 
  106. __Vectors_End 
  107.  
  108. __Vectors_Size  EQU  __Vectors_End - __Vectors 
  109.  
  110.                 AREA    |.text|, CODE, READONLY 

其中“__initial_sp”就是第一條中斷向量,存放的是棧頂指針,接下來是第 2 行復(fù)位中斷復(fù)位函數(shù)Reset_Handler 的入口地址,依次類推,直到最后一個中斷服務(wù)函數(shù)DMA2_Channel4_5_IRQHandler 的入口地址,這樣 STM32F103 的中斷向量表就建好了。

中斷使用方法:

  1. 1、配置中斷向量表(ST提供)。 
  2. 2、配置NVIC(內(nèi)嵌向量中斷控制器)。  
  3. 3、中斷使能。 
  4. 4、中斷服務(wù)函數(shù)。 

先配置好中斷向量表(自動),然后配置一下IO口,配置NVIC來管理中斷,使能中斷,最后編寫中斷服務(wù)函數(shù),中斷服務(wù)函數(shù)里是我們真正想做的事情。

這個思路也適合于Cortex A架構(gòu),只是中斷系統(tǒng)不同,中斷管理器也不同,STM32中的中斷管理器是NVIC,Cortex A架構(gòu)的中斷管理器是GIC控制器。GIC 是 ARM 公司給 Cortex-A/R 內(nèi)核提供的一個中斷控制器。

Cortex A架構(gòu)

下表為Cortex A架構(gòu)中斷向量表,這個表也是寫在.s結(jié)尾的啟動文件當(dāng)中,為C語言代碼的運行提供前期的初始化工作,只有做好了初始化,你的C語言代碼才會運行,啟動文件中做好初始化以后,會跳轉(zhuǎn)到你的main函數(shù)。

可以發(fā)現(xiàn)比STM32的中斷少了很多,只有八個中斷,還有一個未使用。其中我們最常用的中斷是復(fù)位中斷和 IRQ 中斷。


實際上Cortex A架構(gòu)是不可能只有這么少的中斷,Cortex-A 內(nèi)核 CPU 的所有外部中斷都屬于IQR 中斷,當(dāng)任意一個外部中斷發(fā)生的時候都會觸發(fā) IRQ 中斷。在 IRQ 中斷服務(wù)函數(shù)里面就可以讀取指定的寄存器來判斷發(fā)生的具體是什么中斷,進而根據(jù)具體的中斷做出相應(yīng)的處理,如下圖:

中斷解釋:

1、復(fù)位中斷(Rest),CPU 復(fù)位以后就會進入復(fù)位中斷,我們可以在復(fù)位中斷服務(wù)函數(shù)里面做一些初始化工作,比如初始化 SP 指針、DDR 等等。

2、未定義指令中斷(Undefined Instruction),如果指令不能識別的話就會產(chǎn)生此中斷。

3、軟中斷(Software Interrupt,SWI),由 SWI 指令引起的中斷,Linux 的系統(tǒng)調(diào)用會用 SWI指令來引起軟中斷,通過軟中斷來陷入到內(nèi)核空間。

4、指令預(yù)取中止中斷(Prefetch Abort),預(yù)取指令的出錯的時候會產(chǎn)生此中斷。

5、數(shù)據(jù)訪問中止中斷(Data Abort),訪問數(shù)據(jù)出錯的時候會產(chǎn)生此中斷。

6、IRQ 中斷(IRQ Interrupt),外部中斷,芯片內(nèi)部的外設(shè)中斷都會引起此中斷的發(fā)生。

7、FIQ 中斷(FIQ Interrupt),快速中斷,如果需要快速處理中斷的話就可以使用此中。

存放地址

中斷向量表都是鏈接到代碼的最前面,比如一般 ARM 處理器都是從地址 0X0000 0000 開始執(zhí)行指令的,那么中斷向量表就是從0X0000 0000 開始存放的。

在STM32中,一般代碼是下載到 0X0800 0000開始的存儲區(qū)域中。因此中斷向量表是存放到 0X0800 0000 地址處的,而不是 0X00000000。這種是通過中斷向量表偏移實現(xiàn)的。

 

責(zé)任編輯:姜華 來源: 嵌入式Linux系統(tǒng)開發(fā)
相關(guān)推薦

2024-11-27 08:14:43

2013-08-30 13:27:04

μTraceCortex-M一體化

2021-01-26 06:15:42

Cortex-A9 R嵌入式系統(tǒng)啟動代碼

2020-12-17 13:54:49

網(wǎng)絡(luò)安全

2021-01-06 05:42:42

Cortex-A9 R嵌入式系統(tǒng) RTC

2015-02-04 19:13:48

ARMCortex-A 72

2020-12-30 15:17:25

Cortex-A9UARTprintf函數(shù)

2018-03-02 10:19:51

超融合架構(gòu)傳統(tǒng)IT架構(gòu)

2013-09-09 10:09:38

蘋果Android

2021-01-19 19:32:01

Cortex-A9 R嵌入式系統(tǒng)i2c 外設(shè)

2020-12-22 11:54:42

C語言Cortex-A9LED匯編

2009-05-22 08:22:09

iPhone蘋果移動OS

2021-11-23 23:39:19

微服務(wù)開發(fā)架構(gòu)

2021-03-15 14:54:47

編譯器工具代碼

2023-02-22 09:53:55

架構(gòu)芯片

2020-10-19 06:52:19

CortexARMv8arm

2021-01-08 12:06:59

WDT定時裝置

2022-07-01 13:42:11

項目管理企業(yè)架構(gòu)IT

2021-01-16 11:40:28

ARM嵌入式開發(fā)ADC應(yīng)用

2014-11-26 14:40:48

PHP云架構(gòu)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人一级片在线观看 | 亚洲精品乱码久久久久久蜜桃91 | 91色视频在线 | 国产成人午夜精品影院游乐网 | 国产亚洲精品综合一区 | 免费在线一区二区三区 | 欧美a区| 中国毛片免费 | 欧美日韩国产高清视频 | 精品国产免费一区二区三区演员表 | 91看片在线 | 国产sm主人调教女m视频 | 97久久精品午夜一区二区 | 99精品视频在线 | 亚洲精品乱码久久久久久黑人 | 天堂一区二区三区 | 日韩免费视频 | 福利视频一区二区三区 | 高清免费av | 日韩一区二区三区视频 | 久久精品97 | 久热国产在线 | 成人在线h | 日韩亚洲一区二区 | 成人av色 | 91视视频在线观看入口直接观看 | 亚洲国产精品99久久久久久久久 | 亚洲一区二区精品 | 午夜久久久久久久久久一区二区 | 九九久久精品视频 | 中文字幕精品一区二区三区精品 | 久久精品成人一区 | av片免费 | 欧美高清一级片 | 日韩一区中文字幕 | 国产精品久久一区 | 欧美精品91爱爱 | 看亚洲a级一级毛片 | 久久爱综合 | 日韩欧美国产一区二区 | 久久久久国产精品午夜一区 |