日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARM架构——面试了菊厂,中兴,MTK,鼎桥,总结了ARM Cortex-M3中断

發(fā)布時間:2023/12/20 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARM架构——面试了菊厂,中兴,MTK,鼎桥,总结了ARM Cortex-M3中断 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、中斷和異常概述

中斷和異常的作用是指示系統(tǒng)中的某個地方發(fā)生一些事件,需要引起處理器(包括正在執(zhí)行中的程序和任務(wù))的注意.。當中斷和異常發(fā)生時,典型的結(jié)果是迫使處理器將控制從當前正在執(zhí)行的程序或任務(wù)轉(zhuǎn)移到另一個歷程或任務(wù)中去。該例程叫做中斷處理程序,或者異常處理程序。如果是一個任務(wù),則發(fā)生任務(wù)切換。

ARM架構(gòu)的中斷就是異常的一種,它一般由外設(shè)或外部輸入產(chǎn)生,也可軟件觸發(fā)。中斷的異常處理也被稱作中斷服務(wù)程序(ISR)。

二、Cortex-M3處理器中的嵌套向量中斷控制器(NVIC)

本產(chǎn)品選用STM32L1系列單片機其處理器為Cortex-M3,在Cortex-M3處理器中存在一個嵌套向量中斷控制器(NVIC)的中斷控制器,它是可編程的且寄存器經(jīng)過存儲器映射,NVIC支持可編程中斷優(yōu)先級的數(shù)量。NVIC的地址是固定的且NVIC的編程模板與目前Cortex-M系列處理器都是一樣的。

NVIC還支持多個系統(tǒng)異常,包括不可屏蔽中斷(NMI)和處理器內(nèi)部其他異常源。

嵌套向量中斷控制器(NVIC)特性:

  • 最多240個中斷輸入(1~15為系統(tǒng)異常,中斷實際中在6~100之間,達到較小硅片面積,降低功耗),不可屏蔽中斷(NMI)輸入和系統(tǒng)異常。每個中斷(NMI除外)都可以被單獨的使能或禁止。
  • 中斷和系統(tǒng)異常具有可編程優(yōu)先級。
  • 嵌套中斷/異常按照優(yōu)先級先后處理。
  • 向量中斷/異常,處理器自動取出無需軟件確認。
  • 向量表可重定位在存儲器多個區(qū)域(默認0x0)。
  • 低中斷等待。具有零等待狀態(tài)存儲系統(tǒng),中斷等待僅為12個周期。
  • 中斷和異常可用軟件觸發(fā)。
  • 具有屏蔽中斷和異常功能(NMI除外),也可將屏蔽為某個優(yōu)先級之下。
  • 多個優(yōu)化用于降低不同異常上下文切換時的中斷處理開銷。
  • 詳細系統(tǒng)異常如下表:

    中斷類型如下表:

    ?上面兩個表詳細闡述了異常/中斷的編號、類型、優(yōu)先級狀態(tài)和具體的作用。

    上圖可知NVIC可以處理多個中斷請求(IRQ)和一個不可屏蔽中斷(NMI)請求,IRQ可由片上外設(shè)或外部中斷輸入通過I/O端口產(chǎn)生,NMI可由看門狗和掉電檢測。處理器自身也是一個中斷和異常源,比如處理器內(nèi)部SysTick(系統(tǒng)節(jié)拍)定時器周期性產(chǎn)生中斷或者系統(tǒng)錯誤事件狀態(tài)。注:在Cortex-M3和Cortex-M4中斷等待只有12個周期。

    NVIC可以處理多種類型的中斷源:

    • 脈沖中斷請求。中斷請求至少持續(xù)一個時鐘周期,NVIC會在收到該中斷時,掛起狀態(tài)保持到中斷得到處理。
    • 電平觸發(fā)中斷請求。中斷得到處理前需要將中斷源請求保持為高。

    注:NVIC輸入信號為高電平有效,實際外部中斷輸入設(shè)計會有所不同,片上系統(tǒng)邏輯會轉(zhuǎn)換為有效高電平信號。

    異常/中斷入口:Cortex-M處理器會痛存儲器的向量表中自動定位異常處理入口。

    異常/中斷搶占:每個異常都有優(yōu)先級,當異常產(chǎn)生是MVIC會將輸入異常優(yōu)先級與當前運行任務(wù)優(yōu)先級相比較,若新異常優(yōu)先級較高,當前任務(wù)暫停,相關(guān)寄存器保存在棧空間,處理器開始處理新異常,當處理完成后,異常返回終止操作,處理器自動從棧恢復寄存器內(nèi)容,并執(zhí)行之前暫停任務(wù)。

    中斷屏蔽:NVIC有許多中斷屏蔽寄存器。例如PRIMASK寄存器禁止除HardFault和NMI外所有異常;BASEPRI寄存器屏蔽低于特定優(yōu)先級的異常或中斷。

    根據(jù)上圖分析實際中異常/中斷類型,NMI外設(shè)一般是看門狗或者掉電檢測,IRQ外設(shè)一般是芯片自帶ADC,DAC,比較器等,IRQ的I/O端口一般是外部芯片或者外圍硬件電路產(chǎn)生的信號,SysTick(系統(tǒng)節(jié)拍)定時器產(chǎn)生中斷用于有OS的芯片進行任務(wù)調(diào)度。

    外設(shè)或I/O端口產(chǎn)生中斷需要處理器處理服務(wù)流程如下:

  • 處理器確認外設(shè)中斷請求
  • 進行優(yōu)先級比較
  • 處理器暫停當前執(zhí)行任務(wù)
  • 執(zhí)行外設(shè)中斷服務(wù)程序(ISR),可用軟件清除中斷請求。
  • 處理完成后繼續(xù)執(zhí)行暫停任務(wù)
  • 面經(jīng):

    1.異常與中斷之間的關(guān)系。

    2.記住三個優(yōu)先級最高的異常:復位(最高),NMI(第二)和硬件錯誤(第三)。

    3.外設(shè)或I/O端口產(chǎn)生中斷后,處理器接收到的處理流程。

    4.中斷源的信號類型:電平觸發(fā)(高電平還是低電平?),脈沖觸發(fā)(觸發(fā)中斷需要多少時間?),

    ?三、優(yōu)先級

    在使用中斷之前一般進行以下操作:

  • 設(shè)置中斷優(yōu)先級(可以不設(shè)置,采用默認)
  • 使能外設(shè)或I/O端口的觸發(fā)中斷開關(guān)
  • 使能NVIC中斷
  • Cortex-M3優(yōu)先級配置寄存器為8位寬具有3個固定最高優(yōu)先級(詳見異常列表:復位,NMI,硬件錯誤)和256個可編程優(yōu)先級(最多有128個搶占等級),但是實際可編程優(yōu)先級數(shù)量遠遠低于256個,優(yōu)先級越多會增加NVIC復雜度而且會增加功耗(增加邏輯門數(shù))。優(yōu)先級寄存器一般是高位有效(MSB),這樣方便芯片間移植應(yīng)用程序。

    搶占等級劃分:

    優(yōu)先級配置寄存器有8位寬為什么只有128個搶占等級?如下表所示:

    優(yōu)先級配置寄存器分為:搶占優(yōu)先級和子優(yōu)先級,從表中可以看出搶占優(yōu)先級域最大只有7位,所以只有128個搶占優(yōu)先級。因此在處理器判斷如何執(zhí)行中斷時先判斷搶占優(yōu)先級,如果搶占優(yōu)先級相同再判斷子優(yōu)先級。?

    面經(jīng):

    1.中斷初始化流程

    2.可編程優(yōu)先級個數(shù)?為什么這么多個?

    3.搶占優(yōu)先級(組優(yōu)先級)與子優(yōu)先級關(guān)系?搶占等級多少個?為什么搶占優(yōu)先級有這么多個?

    4.搶占優(yōu)先級與子優(yōu)先級哪個優(yōu)先級更高?

    四、向量表重定位

    默認向量表地址從0開始。向量地址則為異常編號乘以4,向量表如下所示:

    在CMSIS庫中給SCB->VTOR賦予新地址進行重定位。

    注:向量表基地址必須為下一個大小為2的整數(shù)次方

    面經(jīng):

    1.知道有向量表這個概念

    2.向量表能否重定位?怎么定位?基地址有什么要求?

    ?五、HAL庫中斷開發(fā)示例

    設(shè)置中斷流程三部曲:

  • 設(shè)置搶占優(yōu)先級
  • 設(shè)置子優(yōu)先級
  • 使能中斷
  • HAL庫代碼示例:

    /*初始化端口操作這里不贅述*/

    /*第一個參數(shù):設(shè)置中斷號,需要查詢IO端口或者外設(shè)的中斷號,

    第二個參數(shù):搶占優(yōu)先級

    第三個參數(shù):子優(yōu)先級*/

    HAL_NVIC_SetPriority( EXTI0_IRQn, 6, 0 );

    /*使能該中斷號*/

    HAL_NVIC_EnableIRQ( EXTI0_IRQn );

    注:HAL庫將設(shè)置搶占優(yōu)先級和子優(yōu)先級封裝為一個接口,代碼就縮減為兩行代碼。

    ?

    總結(jié)

    以上是生活随笔為你收集整理的ARM架构——面试了菊厂,中兴,MTK,鼎桥,总结了ARM Cortex-M3中断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。