女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM CORE支持中斷嵌套嗎?GIC中斷控制器支持中斷嵌套嗎?

安芯教育科技 ? 來(lái)源:Arm精選 ? 2024-08-07 09:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

以下文章來(lái)源于Arm精選 ,作者baron

說(shuō)明:

在默認(rèn)情況下,本文講述的都是ARMV8-aarch64架構(gòu),gicv3, linux kernel 5.14

思考:你是否想過(guò)這樣的一個(gè)場(chǎng)景:當(dāng)一個(gè)中斷正在處理事務(wù)時(shí),又來(lái)了一個(gè)高優(yōu)先級(jí)中斷把它搶占了?也就是所謂著中斷嵌套。很多人可能都會(huì)說(shuō)“這種場(chǎng)景當(dāng)然存在了”,但現(xiàn)實(shí)中真的存在嗎?不要被網(wǎng)上的博客或書(shū)上的一些章節(jié)所誤導(dǎo),今天我們拋開(kāi)事務(wù)看本質(zhì),從以下方面著手進(jìn)行討論:

ARM CORE支持中斷嵌套嗎

GIC中斷控制器支持中斷嵌套嗎?

Linux Kernel操作系統(tǒng)有沒(méi)有使用中斷嵌套?

在介紹之前,我們先記下幾個(gè)共識(shí)(也就是常識(shí),本文不做重復(fù)介紹的):

FIQ和IRQ具有同樣的優(yōu)先級(jí),F(xiàn)IQ只是一種中斷類型,并非所謂著快速中斷。

1、ARM CORE支持中斷嵌套嗎?

首先來(lái)看ARM CORE支持中斷嵌套嗎?答案 支持! 但是是有一個(gè)前提,在進(jìn)入中斷處理時(shí),PSTATE的I、F、A等比特位是MASK的,軟件中需要主動(dòng)unmask后,那么就可以中斷嵌套了。如下圖所示,正是ARM Core支持中斷嵌套的一個(gè)示例(或者叫模型):

wKgZomayzjCAbruAAALLD5rSKbg755.png

2、GIC中斷控制器支持中斷嵌套嗎?

繼續(xù)看GIC中斷控制器支持中斷嵌套嗎?答案 支持中斷搶占,支持中斷嵌套!。

2.1、先介紹以下優(yōu)先級(jí)和搶占的概念

每個(gè) INTID(中斷號(hào)) 都有一個(gè)優(yōu)先級(jí)(用寄存器GICD_IPRIORITYn 或 GICR_IPRIORITYn 表示),它是一個(gè) 8 位無(wú)符號(hào)值。0x00 是可能的最高優(yōu)先級(jí),0xFF 是可能的最低優(yōu)先級(jí)

每個(gè) PE 在其 CPU interface中都有一個(gè)優(yōu)先級(jí)掩碼寄存器 (ICC_PMR_EL1)。該寄存器設(shè)置將中斷轉(zhuǎn)發(fā)到該 PE 所需的最低優(yōu)先級(jí)。只有優(yōu)先級(jí)高于寄存器值的中斷才會(huì)發(fā)送給 PE

GICv3 架構(gòu)具有 運(yùn)行優(yōu)先級(jí)的概念。當(dāng) PE 響應(yīng)中斷時(shí),它的運(yùn)行優(yōu)先級(jí)變?yōu)樵撝袛嗟膬?yōu)先級(jí)。當(dāng) PE 寫入 EOI 寄存器之一時(shí),運(yùn)行優(yōu)先級(jí)將返回其先前值。如果 PE 尚未處理中斷,則運(yùn)行優(yōu)先級(jí)為空閑優(yōu)先級(jí) (0xFF)。只有優(yōu)先級(jí)高于運(yùn)行優(yōu)先級(jí)的中斷才能搶占當(dāng)前中斷

2.2、Without preemption :即關(guān)閉搶占,disable running priority

在Without preemption的情況下,高優(yōu)先級(jí)的中斷無(wú)法搶占正在active的中斷,只能等active的中斷執(zhí)行完了、返回了,高優(yōu)先級(jí)的中斷才能發(fā)生"搶占"(這里還說(shuō)搶占,合適嗎?此種情況應(yīng)屬于搶占pendding中斷)。如下圖所示,便是一個(gè)示例:

高優(yōu)先級(jí)的中斷 無(wú)法搶占active的中斷

等待active的中斷執(zhí)行完畢返回了,高優(yōu)先級(jí)的中斷才能發(fā)生搶占(也就是搶占pendding中斷)

wKgZomayzjmADbzDAAGd-Q8LuU8039.png

雖然你關(guān)閉了搶占,但優(yōu)先級(jí)仍然存在,仍然會(huì)發(fā)生作用

搶占正在pendding中斷的示例, 這種情況下,一個(gè)高優(yōu)先級(jí)的中斷可以搶占一個(gè)低優(yōu)先級(jí)的pendding中斷,并非搶占正在執(zhí)行的中斷,搶占后高優(yōu)先級(jí)的中斷變成pendding。而我們大多數(shù)人所說(shuō)的中斷嵌套是指,一個(gè)中斷正在執(zhí)行時(shí),被另外一個(gè)中斷給搶占了。

當(dāng) CPU interface上的一個(gè)低優(yōu)先級(jí)中斷處于pendding狀態(tài)時(shí),更高優(yōu)先級(jí)的中斷也可能會(huì)變?yōu)閜endding狀態(tài)。Redistributor 可以為新的更高優(yōu)先級(jí)中斷發(fā)送 Set 命令。此 Set 命令將取代之前的 Set 命令,導(dǎo)致 CPU interface為較低優(yōu)先級(jí)的中斷發(fā)出 Release。下圖顯示了此類場(chǎng)景的示例。該示例假設(shè) INTID Y 的優(yōu)先級(jí)高于 INTID X。

wKgZomayzk-ASBQQAAGkwZRNNrw364.png

2.3、With preemption

接下來(lái)就看 搶占正在active中斷的示例,描述的其實(shí)就是:一個(gè)中斷正在執(zhí)行,然后另一個(gè)更高優(yōu)先級(jí)的中斷打斷了它, 這也就是正是我們所說(shuō)的中斷嵌套。

在考慮搶占時(shí),運(yùn)行優(yōu)先級(jí)的概念很重要。當(dāng)一個(gè)高優(yōu)先級(jí)中斷被發(fā)送給一個(gè)已經(jīng)在處理一個(gè)低優(yōu)先級(jí)中斷的 PE 時(shí),就會(huì)發(fā)生搶占。 搶占為軟件帶來(lái)了一些額外的復(fù)雜性,但它可以防止低優(yōu)先級(jí)中斷阻塞更高優(yōu)先級(jí)中斷的處理。

wKgaomayzlGAcBGBAAHuyycud7o572.png

2.4、那么對(duì)于一個(gè)gicv3的IP,優(yōu)先級(jí)肯定是有的,它到底是Without preemption 還是With preemption呢?如何配置的呢?

請(qǐng)查略ICC_BPRn_EL1寄存器,該寄存器定義優(yōu)先級(jí)值字段分成兩部分的點(diǎn),即組優(yōu)先級(jí)字段和子優(yōu)先級(jí)字段。組優(yōu)先級(jí)字段確定組 1 中斷搶占。 換句白話來(lái)解釋就是,中斷優(yōu)先級(jí)被分成了兩部分,如下圖所示,ICC_BPRn_EL1寄存器的BIT[2:0]定義了下圖中的N的值

wKgZomayzmWAL-DwAAC8dcnYUlU192.png

對(duì)于搶占,僅考慮Group優(yōu)先級(jí)位。Subpriority優(yōu)先級(jí)位被忽略. 然后舉一個(gè)例子:

INTID A has priority 0x10

INTID B has priority 0x20

INTID C has priority 0x21

如上有三個(gè)中斷,A可以搶占B,但B不可以搶占C,因?yàn)锽和C的Group priority是一樣的

wKgZomayzm6ABEArAAIWnxcHE7I271.png

3、 Linux Kernel操作系統(tǒng)有沒(méi)有使用中斷嵌套?

繼續(xù)看Linux Kernel操作系統(tǒng)有沒(méi)有使用中斷嵌套?答案 沒(méi)有使用!

首先查看ICC_BPRn_EL1寄存器的配置:

wKgZomayznaAXXzPAAFt5-w3KI0935.png

寫入的是0,也就是意味著,N=0, 即下圖的第一行,也就是說(shuō)搶占是開(kāi)啟的。

wKgaomayzn-AEXrJAAFUHaS9ja4581.png

繼續(xù)看,針對(duì)每一個(gè) INTID(中斷號(hào)) 的priority的配置,如下所示,在gic初始化階段,給每一個(gè) INTID(中斷號(hào)) 都配置成了一樣的優(yōu)先級(jí),值位0XA5。也就是所有中斷的優(yōu)先級(jí)都是一樣的。

wKgaomayzoaAJTVmAADavH0WhP4232.png

事實(shí)上,在gicv3代碼中,提供了一個(gè)接口,可以單獨(dú)針對(duì)某一中斷設(shè)置優(yōu)先級(jí)。

查略該函數(shù)用途,僅僅是為NMI中斷設(shè)置的(注:Linux Kernel中armv8體系目前還沒(méi)有該中斷,ARMV9新增了一類NMI中斷),其值為0Xa5 & 0x7f = 0x25,該值小于0XA0,所有該優(yōu)先級(jí)大于其它中斷的優(yōu)先級(jí)。

wKgZomayzo-AcmJRAAIUF0-r28k353.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9349

    瀏覽量

    377393
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    17098

    瀏覽量

    184201
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11509

    瀏覽量

    213724
  • 中斷嵌套
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    7019

原文標(biāo)題:ARM體系中是否支持中斷嵌套

文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌套向量中斷控制器NVIC

    8 嵌套向量中斷控制器NVIC
    發(fā)表于 04-28 09:23

    ARM中斷控制器

    系統(tǒng))、hypervisor模式(虛擬化)。 中斷控制器的CPU interface 每一個(gè)cpu核都對(duì)應(yīng)一個(gè)GIC的cpu interface,cpu interface支持的可編程接口如下: 1
    發(fā)表于 08-29 08:39

    NVIC嵌套向量中斷控制器

    文章目錄前言一、NVIC 嵌套向量中斷控制器二、EXIT 外部中斷控制器三 、外部中斷實(shí)驗(yàn)1)初始化用來(lái)產(chǎn)生中斷的GPIO2)初始化EXTI
    發(fā)表于 08-16 08:32

    STM32的NVIC嵌套向量中斷控制器與EXIT外部中斷控制器介紹

    NVIC是什么?NVIC嵌套向量中斷控制器有何功能?EXIT外部中斷控制器是什么?有何功能?
    發(fā)表于 11-16 09:37

    NVIC嵌套向量中斷控制器介紹

    一、NVIC 介紹NVIC 英文全稱是 Nested Vectored Interrupt Controller,中文意思就是嵌套向量中斷控制器,它屬于 M3 內(nèi)核的一個(gè)外設(shè),控制著芯片的中斷
    發(fā)表于 12-07 07:51

    簡(jiǎn)要介紹配置嵌套向量中斷控制器

    配置嵌套向量中斷控制器static void NVIC_Configuration(void)//OK{NVIC_InitTypeDef NVIC_InitStructure; /* 嵌套向量
    發(fā)表于 02-22 08:14

    ARM CoreLink GIC-500通用中斷控制器技術(shù)參考手冊(cè)

    GIC-500是一個(gè)構(gòu)建時(shí)可配置的中斷控制器,最多支持128個(gè)內(nèi)核。GIC-500僅支持實(shí)現(xiàn)ARMv8架構(gòu)的內(nèi)核,以及具有標(biāo)準(zhǔn)
    發(fā)表于 08-02 14:02

    華芯微特MCU的嵌套向量中斷控制器與外部中斷/事件控制器的使用方法

    01. 嵌套向量中斷控制器(NVIC) NVIC的全稱是Nested vectoredinterrupt controller,即嵌套向量中斷控制器。 Cortex-M0和Cortex
    的頭像 發(fā)表于 06-04 12:08 ?4095次閱讀
    華芯微特MCU的<b class='flag-5'>嵌套</b>向量<b class='flag-5'>中斷控制器</b>與外部<b class='flag-5'>中斷</b>/事件<b class='flag-5'>控制器</b>的使用方法

    MCU中斷嵌套總結(jié)--51,STM32,DSP,ARM

    MCU中斷嵌套總結(jié)--51,STM32,DSP,ARM一、51單片機(jī)1、默認(rèn)中斷優(yōu)先級(jí)(邏輯優(yōu)先級(jí))為:2、IP寄存設(shè)置了某一位(物理優(yōu)先
    發(fā)表于 11-05 20:35 ?7次下載
    MCU<b class='flag-5'>中斷</b><b class='flag-5'>嵌套</b>總結(jié)--51,STM32,DSP,<b class='flag-5'>ARM</b>

    中斷控制器的驅(qū)動(dòng)解析(上)

    這里主要分析 linux kernel 中 GIC v3 中斷控制器的代碼(drivers/irqchip/irq-gic-v3.c)。設(shè)備樹(shù)先來(lái)看下一個(gè)中斷控制器的設(shè)備樹(shù)信息:
    發(fā)表于 12-04 16:36 ?10次下載
    <b class='flag-5'>中斷控制器</b>的驅(qū)動(dòng)解析(上)

    扒開(kāi) ARM 中斷控制器的底褲

    GIC 硬件原理GIC,Generic Interrupt Controller。是ARM公司提供的一個(gè)通用的中斷控制器。主要作用為:接受硬件中斷
    發(fā)表于 12-04 17:36 ?6次下載
    扒開(kāi) <b class='flag-5'>ARM</b> <b class='flag-5'>中斷控制器</b>的底褲

    細(xì)說(shuō)STM32的中斷控制器(NVIC)那些事

    ?1、什么是NVIC?來(lái)自《CM3技術(shù)參考手冊(cè)》的官方資料回答:即嵌套向量中斷控制器(Nested Vectored Interrupt Controller)。說(shuō)白了NVIC的功能就是中斷優(yōu)先級(jí)
    發(fā)表于 01-14 15:54 ?6次下載
    細(xì)說(shuō)STM32的<b class='flag-5'>中斷控制器</b>(NVIC)那些事

    ARM通用中斷控制器規(guī)范手冊(cè)

    本規(guī)范描述了ARM通用中斷控制器GIC)體系結(jié)構(gòu)。在本文檔中,對(duì)GICGIC的引用是指實(shí)現(xiàn)此GIC
    發(fā)表于 06-02 11:03 ?1次下載

    關(guān)于ARM中斷控制器的介紹

    GIC 硬件原理 GIC,Generic Interrupt Controller。是ARM公司提供的一個(gè)通用的中斷控制器。主要作用為:接受硬件中斷
    的頭像 發(fā)表于 07-08 09:34 ?2719次閱讀

    LPC800前生今世 第三章-嵌套式向量中斷控制器

    嵌套式向量中斷控制器 NVIC: Nested Vectored Interrupt Controller 中斷是所有的 M CU 都必須具備的功能,由于非常重要的地位, ARM 公司
    的頭像 發(fā)表于 09-21 11:55 ?1254次閱讀
    LPC800前生今世 第三章-<b class='flag-5'>嵌套</b>式向量<b class='flag-5'>中斷控制器</b>