色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Cortex M架構與Cortex A架構中斷系統的區別詳解

sanyue7758 ? 來源:嵌入式Linux系統開發 ? 作者:嵌入式Linux系統開 ? 2023-03-30 10:07 ? 次閱讀

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

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

Cortex M主要用在微控制器領域,Cortex R主要用在對實時性要求比較高的領域,Cortex A主要用在高端應用領域。

cd877240-ce58-11ed-bfe3-dac502259ad0.png

Cortex M架構

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

設置棧大小

Stack_SizeEQU0x00000400

設置堆大小

Heap_SizeEQU0x00000200

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

Stack_SizeEQU0x00000400

AREASTACK,NOINIT,READWRITE,ALIGN=3
Stack_MemSPACEStack_Size
__initial_sp

;HeapConfiguration
;HeapSize(inBytes)<0x0-0xFFFFFFFF:8>
;

Heap_SizeEQU0x00000200

AREAHEAP,NOINIT,READWRITE,ALIGN=3
__heap_base
Heap_MemSPACEHeap_Size
__heap_limit

PRESERVE8
THUMB


;VectorTableMappedtoAddress0atReset
AREARESET,DATA,READONLY
EXPORT__Vectors
EXPORT__Vectors_End
EXPORT__Vectors_Size

__VectorsDCD__initial_sp;TopofStack
DCDReset_Handler;ResetHandler
DCDNMI_Handler;NMIHandler
DCDHardFault_Handler;HardFaultHandler
DCDMemManage_Handler;MPUFaultHandler
DCDBusFault_Handler;BusFaultHandler
DCDUsageFault_Handler;UsageFaultHandler
DCD0;Reserved
DCD0;Reserved
DCD0;Reserved
DCD0;Reserved
DCDSVC_Handler;SVCallHandler
DCDDebugMon_Handler;DebugMonitorHandler
DCD0;Reserved
DCDPendSV_Handler;PendSVHandler
DCDSysTick_Handler;SysTickHandler

;ExternalInterrupts
DCDWWDG_IRQHandler;WindowWatchdog
DCDPVD_IRQHandler;PVDthroughEXTILinedetect
DCDTAMPER_IRQHandler;Tamper
DCDRTC_IRQHandler;RTC
DCDFLASH_IRQHandler;Flash
DCDRCC_IRQHandler;RCC
DCDEXTI0_IRQHandler;EXTILine0
DCDEXTI1_IRQHandler;EXTILine1
DCDEXTI2_IRQHandler;EXTILine2
DCDEXTI3_IRQHandler;EXTILine3
DCDEXTI4_IRQHandler;EXTILine4
DCDDMA1_Channel1_IRQHandler;DMA1Channel1
DCDDMA1_Channel2_IRQHandler;DMA1Channel2
DCDDMA1_Channel3_IRQHandler;DMA1Channel3
DCDDMA1_Channel4_IRQHandler;DMA1Channel4
DCDDMA1_Channel5_IRQHandler;DMA1Channel5
DCDDMA1_Channel6_IRQHandler;DMA1Channel6
DCDDMA1_Channel7_IRQHandler;DMA1Channel7
DCDADC1_2_IRQHandler;ADC1&ADC2
DCDUSB_HP_CAN1_TX_IRQHandler;USBHighPriorityorCAN1TX
DCDUSB_LP_CAN1_RX0_IRQHandler;USBLowPriorityorCAN1RX0
DCDCAN1_RX1_IRQHandler;CAN1RX1
DCDCAN1_SCE_IRQHandler;CAN1SCE
DCDEXTI9_5_IRQHandler;EXTILine9..5
DCDTIM1_BRK_IRQHandler;TIM1Break
DCDTIM1_UP_IRQHandler;TIM1Update
DCDTIM1_TRG_COM_IRQHandler;TIM1TriggerandCommutation
DCDTIM1_CC_IRQHandler;TIM1CaptureCompare
DCDTIM2_IRQHandler;TIM2
DCDTIM3_IRQHandler;TIM3
DCDTIM4_IRQHandler;TIM4
DCDI2C1_EV_IRQHandler;I2C1Event
DCDI2C1_ER_IRQHandler;I2C1Error
DCDI2C2_EV_IRQHandler;I2C2Event
DCDI2C2_ER_IRQHandler;I2C2Error
DCDSPI1_IRQHandler;SPI1
DCDSPI2_IRQHandler;SPI2
DCDUSART1_IRQHandler;USART1
DCDUSART2_IRQHandler;USART2
DCDUSART3_IRQHandler;USART3
DCDEXTI15_10_IRQHandler;EXTILine15..10
DCDRTCAlarm_IRQHandler;RTCAlarmthroughEXTILine
DCDUSBWakeUp_IRQHandler;USBWakeupfromsuspend
DCDTIM8_BRK_IRQHandler;TIM8Break
DCDTIM8_UP_IRQHandler;TIM8Update
DCDTIM8_TRG_COM_IRQHandler;TIM8TriggerandCommutation
DCDTIM8_CC_IRQHandler;TIM8CaptureCompare
DCDADC3_IRQHandler;ADC3
DCDFSMC_IRQHandler;FSMC
DCDSDIO_IRQHandler;SDIO
DCDTIM5_IRQHandler;TIM5
DCDSPI3_IRQHandler;SPI3
DCDUART4_IRQHandler;UART4
DCDUART5_IRQHandler;UART5
DCDTIM6_IRQHandler;TIM6
DCDTIM7_IRQHandler;TIM7
DCDDMA2_Channel1_IRQHandler;DMA2Channel1
DCDDMA2_Channel2_IRQHandler;DMA2Channel2
DCDDMA2_Channel3_IRQHandler;DMA2Channel3
DCDDMA2_Channel4_5_IRQHandler;DMA2Channel4&Channel5
__Vectors_End

__Vectors_SizeEQU__Vectors_End-__Vectors

AREA|.text|,CODE,READONLY

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

中斷使用方法:

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

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

這個思路也適合于Cortex A架構,只是中斷系統不同,中斷管理器也不同,STM32中的中斷管理器是NVIC,Cortex A架構的中斷管理器是GIC控制器。GIC 是 ARM 公司給 Cortex-A/R 內核提供的一個中斷控制器。

Cortex A架構

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

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

cdbabc86-ce58-11ed-bfe3-dac502259ad0.png

實際上Cortex A架構是不可能只有這么少的中斷,Cortex-A 內核 CPU 的所有外部中斷都屬于IQR 中斷,當任意一個外部中斷發生的時候都會觸發 IRQ 中斷。

在 IRQ 中斷服務函數里面就可以讀取指定的寄存器來判斷發生的具體是什么中斷,進而根據具體的中斷做出相應的處理,如下圖:

ce1f7612-ce58-11ed-bfe3-dac502259ad0.png

中斷解釋:

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

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

3、軟中斷(Software Interrupt,SWI),由 SWI 指令引起的中斷,Linux 的系統調用會用 SWI指令來引起軟中斷,通過軟中斷來陷入到內核空間。

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

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

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

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

存放地址

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

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



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7566

    瀏覽量

    151614
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9107

    瀏覽量

    367970
  • STM32
    +關注

    關注

    2270

    文章

    10906

    瀏覽量

    356560
  • 中斷系統
    +關注

    關注

    1

    文章

    96

    瀏覽量

    61031
  • STM32F103
    +關注

    關注

    33

    文章

    477

    瀏覽量

    63703

原文標題:Cortex M架構與Cortex A架構中斷系統的區別

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【圖書分享】《ARM Cortex-M3應用開發實例詳解

    3系列,通過大量工程案例,系統深入地介紹了ARM Cortex-M3基礎應用與綜合開發的流程、方法和技巧。全書共計17章,第1、2章簡要介紹了Cortex-M3架構及指令
    發表于 03-13 11:06

    arm架構cortex架構

    大體上分為三種類別:● Cortex-A—面向性能密集型系統的應用處理器內核● Cortex-R—面向實時應用的高性能內核● Cortex-M—面向各類嵌入式應用的微控制器內核
    發表于 07-27 07:02

    Cortex-M處理器采用的架構是什么

    一、選擇題 1.Cortex-M處理器采用的架構是(D)(A)v4T(B)v5TE(C)v6 (D)v72.NVIC可用來表示優先權等級的位數可配置為是(D)(A)2(B)4 (C)6
    發表于 08-05 06:35

    cortex-m3/cortex-m4/cortex-a8的區別是什么?

    cortex-m3/cortex-m4/cortex-a8的區別是什么?
    發表于 10-22 06:54

    cortex-m下各種微架構區別是什么?

    cortex-m單片機在arm產品中的位置是哪里?cortex-m 單片機的類別有哪些?cortex-m下各種微架構區別是什么?
    發表于 11-04 06:00

    ARM Cortex M架構的基本初始化過程是怎樣的?

    ARM Cortex M架構的基本初始化過程是怎樣的?
    發表于 11-30 08:03

    Cortex-A8與STM32有哪些區別

    3與Cortex-M4架構MCU(單片機)最為著稱。2.Cortex-A8ARM Cortex?-A8處理器基于 ARMv7 體系結構,處理
    發表于 01-25 08:28

    介紹Cortex-ACortex-M的TrustZone之間的差異

    設計思想上是一樣的,CPU都有兩個安全狀態,并且系統上的資源劃分為安全資源和非安全資源,在非安全狀態下只能訪問非安全資源,在安全狀態下能否訪問所有的資源。但是M系列和A系列架構本身就存
    發表于 07-13 14:45

    深入解析ARM Cortex-A12架構

    深入解析ARM Cortex-A12架構
    發表于 01-14 12:31 ?21次下載

    ARM新銳Cortex_A7核心架構解析

    ARM新銳Cortex_A7核心架構解析
    發表于 09-28 10:10 ?11次下載
    ARM新銳<b class='flag-5'>Cortex_A</b>7核心<b class='flag-5'>架構</b>解析

    關于ARM cortex-A5架構的介紹

    關于飛思卡爾授權應用ARM cortex-A5架構的消息
    的頭像 發表于 06-26 10:31 ?7533次閱讀

    Cortex-A8與STM32的區別

    3與Cortex-M4架構MCU(單片機)最為著稱。2.Cortex-A8ARM Cortex?-A8處理器基于 ARMv7 體系結構,處理
    發表于 12-01 12:06 ?1次下載
    <b class='flag-5'>Cortex-A</b>8與STM32的<b class='flag-5'>區別</b>

    基于Cortex M0微型操作系統架構及API

    電子發燒友網站提供《基于Cortex M0微型操作系統架構及API.pdf》資料免費下載
    發表于 09-22 09:36 ?4次下載
    基于<b class='flag-5'>Cortex</b> <b class='flag-5'>M</b>0微型操作<b class='flag-5'>系統</b><b class='flag-5'>架構</b>及API

    案例分享!IMX8 Cortex-A53與Cortex-M4多核通信開發詳解

    MX8 Cortex-A53與Cortex-M4多核通信開發詳解
    的頭像 發表于 09-10 11:18 ?3409次閱讀
    案例分享!IMX8 <b class='flag-5'>Cortex-A</b>53與<b class='flag-5'>Cortex-M</b>4多核通信開發<b class='flag-5'>詳解</b>

    Cortex-M 內核中斷/異常系統中斷優先級/嵌套 詳解

    Cortex-M 內核中斷/異常系統中斷優先級/嵌套 詳解
    的頭像 發表于 09-27 15:29 ?2309次閱讀
    <b class='flag-5'>Cortex-M</b> 內核<b class='flag-5'>中斷</b>/異常<b class='flag-5'>系統</b>、<b class='flag-5'>中斷</b>優先級/嵌套 <b class='flag-5'>詳解</b>
    主站蜘蛛池模板: 奇米网一区二区三区在线观看| 菠萝菠萝蜜高清观看在线| 柠檬福利精品视频导航| 亚洲精品无码不卡| 国产精品手机在线视频| 日韩黄色免费| 冈本视频黄页正版| 日本久久精品免视看国产成人| 98久久人妻少妇激情啪啪| 两个人的视频日本在线观看完整| 伊人久久综合网站| 久青草国产在线视频| 影音先锋色小姐| 美女岔开腿露出粉嫩花苞| 97精品免费视频| 欧美 国产 日产 韩国 在线| 99视频这里只有精品| 日韩AV片无码一区二区三区不卡| YELLOW日本动漫高清免费| 全黄H全肉细节文短篇| 大肥婆丰满大肥奶bbw肥| 色网址在线观看| 国产精品亚洲电影久久成人影院 | 亚洲精品久久久久中文字幕二区| 国产美女一区二区| 亚洲大爷操| 久久精品国产清白在天天线| 制服的微热| 欧美成人无码视频午夜福利| 成人天堂婷婷青青视频在线观看| 色欲AV蜜臀AV在线观看麻豆| 国产美女裸身网站免费观看视频| 亚洲精品蜜夜内射| 久久合| 97在线视频免费人妻| 日韩1区1区产品乱码芒果榴莲| 国产高清超清在线播放| 亚洲免费综合色视频| 美女胸禁止18以下看| 赤兔CHINESE最新男18GUY | 精品午夜国产福利观看|