欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

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

Linux閱碼場(chǎng) ? 來源:一口Linux ? 作者:土豆居士 ? 2022-07-08 09:34 ? 次閱讀

GIC 硬件原理

GIC,Generic Interrupt Controller。是ARM公司提供的一個(gè)通用的中斷控制器。主要作用為:接受硬件中斷信號(hào),并經(jīng)過一定處理后,分發(fā)給對(duì)應(yīng)的CPU進(jìn)行處理。

當(dāng)前GIC 有四個(gè)版本,GIC v1~v4, 本文主要介紹GIC v3控制器。

GIC v3中斷類別

GICv3定義了以下中斷類型:

SGI(Software Generated Interrupt):軟件觸發(fā)的中斷。軟件可以通過寫 GICD_SGIR 寄存器來觸發(fā)一個(gè)中斷事件,一般用于核間通信,內(nèi)核中的 IPI:inter-processor interrupts 就是基于 SGI。

PPI(Private Peripheral Interrupt):私有外設(shè)中斷。這是每個(gè)核心私有的中斷。PPI會(huì)送達(dá)到指定的CPU上,應(yīng)用場(chǎng)景有CPU本地時(shí)鐘

SPI(Shared Peripheral Interrupt):公用的外部設(shè)備中斷,也定義為共享中斷。中斷產(chǎn)生后,可以分發(fā)到某一個(gè)CPU上。比如按鍵觸發(fā)一個(gè)中斷,手機(jī)觸摸屏觸發(fā)的中斷。

LPI(Locality-specific Peripheral Interrupt):LPI 是 GICv3 中的新特性,它們?cè)诤芏喾矫媾c其他類型的中斷不同。LPI 始終是基于消息的中斷,它們的配置保存在表中而不是寄存器。比如 PCIe 的 MSI/MSI-x 中斷。

中斷類型 硬件中斷號(hào)
SGI 0-15
PPI 16-31
SPI 32-1019
reserved ......
LPI 8192-MAX

GIC v3 組成

eaaccc62-fe51-11ec-ba43-dac502259ad0.png

GICv3 控制器由以下三部分組成:

Distributor:SPI 中斷的管理,將中斷發(fā)送給 Redistributor

打開或關(guān)閉每個(gè)中斷。Distributor對(duì)中斷的控制分成兩個(gè)級(jí)別。一個(gè)是全局中斷的控制(GIC_DIST_CTRL)。一旦關(guān)閉了全局的中斷,那么任何的中斷源產(chǎn)生的中斷事件都不會(huì)被傳遞到 CPU interface。另外一個(gè)級(jí)別是對(duì)針對(duì)各個(gè)中斷源進(jìn)行控制(GIC_DIST_ENABLE_CLEAR),關(guān)閉某一個(gè)中斷源會(huì)導(dǎo)致該中斷事件不會(huì)分發(fā)到 CPU interface,但不影響其他中斷源產(chǎn)生中斷事件的分發(fā)。

控制將當(dāng)前優(yōu)先級(jí)最高的中斷事件分發(fā)到一個(gè)或者一組 CPU interface。當(dāng)一個(gè)中斷事件分發(fā)到多個(gè) CPU interface 的時(shí)候,GIC 的內(nèi)部邏輯應(yīng)該保證只 assert 一個(gè)CPU。

優(yōu)先級(jí)控制。

interrupt屬性設(shè)定。設(shè)置每個(gè)外設(shè)中斷的觸發(fā)方式:電平觸發(fā)、邊緣觸發(fā);

interrupt group的設(shè)定。設(shè)置每個(gè)中斷的 Group,其中 Group0 用于安全中斷,支持 FIQ 和 IRQ,Group1 用于非安全中斷,只支持 IRQ;

Redistributor:SGI,PPI,LPI 中斷的管理,將中斷發(fā)送給 CPU interface

啟用和禁用 SGI 和 PPI。

設(shè)置 SGI 和 PPI 的優(yōu)先級(jí)。

將每個(gè) PPI 設(shè)置為電平觸發(fā)或邊緣觸發(fā)。

將每個(gè) SGI 和 PPI 分配給中斷組。

控制 SGI 和 PPI 的狀態(tài)。

內(nèi)存中數(shù)據(jù)結(jié)構(gòu)的基址控制,支持 LPI 的相關(guān)中斷屬性和掛起狀態(tài)。

電源管理支持。

CPU interface:傳輸中斷給 Core

打開或關(guān)閉 CPU interface 向連接的 CPU assert 中斷事件。對(duì)于 ARM,CPU interface 和 CPU 之間的中斷信號(hào)線是 nIRQCPU 和 nFIQCPU。如果關(guān)閉了中斷,即便是 Distributor 分發(fā)了一個(gè)中斷事件到 CPU interface,也不會(huì) assert 指定的 nIRQ 或者 nFIQ 通知 Core。

中斷的確認(rèn)。Core 會(huì)向 CPU interface 應(yīng)答中斷(應(yīng)答當(dāng)前優(yōu)先級(jí)最高的那個(gè)中斷),中斷一旦被應(yīng)答,Distributor 就會(huì)把該中斷的狀態(tài)從 pending 修改成 active 或者 pending and active(這是和該中斷源的信號(hào)有關(guān),例如如果是電平中斷并且保持了該 asserted 電平,那么就是 pending and active)。ack 了中斷之后,CPU interface 就會(huì) deassert nIRQCPU 和 nFIQCPU 信號(hào)線。

中斷處理完畢的通知。當(dāng) interrupt handler 處理完了一個(gè)中斷的時(shí)候,會(huì)向?qū)?CPU interface 的寄存器通知 GIC CPU 已經(jīng)處理完該中斷。做這個(gè)動(dòng)作一方面是通知 Distributor 將中斷狀態(tài)修改為 deactive,另外一方面,CPU interface 會(huì) priority drop,從而允許其他的 pending 的中斷向 CPU 提交。

為 CPU 設(shè)置中斷優(yōu)先級(jí)掩碼。通過 priority mask,可以 mask 掉一些優(yōu)先級(jí)比較低的中斷,這些中斷不會(huì)通知到 CPU。

設(shè)置 CPU 的中斷搶占(preemption)策略。

在多個(gè)中斷事件同時(shí)到來的時(shí)候,選擇一個(gè)優(yōu)先級(jí)最高的通知 CPU。

GICv3 控制器內(nèi)部模塊和各中斷類型的關(guān)系如下圖所示:

eac047e2-fe51-11ec-ba43-dac502259ad0.png

中斷路由

GICv3 使用 hierarchy 來標(biāo)識(shí)一個(gè)具體的 core, 如下圖是一個(gè)四層的結(jié)構(gòu)(aarch64):

eacdb508-fe51-11ec-ba43-dac502259ad0.png

... 的形式組成一個(gè) PE 的路由。每一個(gè) core 的 affnity 值可以通過 MPDIR_EL1 寄存器獲取, 每一個(gè) affinity 占用8bit。配置對(duì)應(yīng) core 的 MPIDR 值,可以將中斷路由到該 core 上。

各個(gè) affinity 的定義是根據(jù) SOC 自己的定義,比如:

... ...

中斷親和性的設(shè)置的通用函數(shù)為 irq_set_affinity,后面會(huì)做詳細(xì)介紹。

中斷狀態(tài)機(jī)

中斷處理的狀態(tài)機(jī)如下圖:

eadd6674-fe51-11ec-ba43-dac502259ad0.png

Inactive:無中斷狀態(tài),即沒有 Pending 也沒有 Active。

Pending:硬件或軟件觸發(fā)了中斷,該中斷事件已經(jīng)通過硬件信號(hào)通知到 GIC,等待 GIC 分配的那個(gè) CPU 進(jìn)行處理,在電平觸發(fā)模式下,產(chǎn)生中斷的同時(shí)保持 Pending 狀態(tài)。

Active:CPU 已經(jīng)應(yīng)答(acknowledge)了該中斷請(qǐng)求,并且正在處理中。

Active and pending:當(dāng)一個(gè)中斷源處于 Active 狀態(tài)的時(shí)候,同一中斷源又觸發(fā)了中斷,進(jìn)入 pending 狀態(tài)。

中斷處理流程

https://dragonki先暫時(shí)略過.blog.這里的詳細(xì)net/article/de相關(guān)內(nèi)容在/1058后面詳細(xì)分

外設(shè)發(fā)起中斷,發(fā)送給 Distributor

Distributor 將該中斷,分發(fā)給合適的 Redistributor

Redistributor 將中斷信息,發(fā)送給 CPU interface

CPU interface 產(chǎn)生合適的中斷異常給處理器

處理器接收該異常,并且軟件處理該中斷

審核編輯:何安

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

    關(guān)注

    134

    文章

    9179

    瀏覽量

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

    關(guān)注

    112

    文章

    16464

    瀏覽量

    179602

原文標(biāo)題:扒開 ARM 中斷控制器的底褲

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    串口中斷是內(nèi)部中斷還是外部中斷,串口中斷是怎么觸發(fā)的

    串口中斷通常被視為外部中斷。雖然串口控制器(如USART、UART等)可能集成在微控制器或處理的內(nèi)部,但從
    的頭像 發(fā)表于 01-29 15:03 ?185次閱讀

    電機(jī)控制器原理是什么?類型有哪些?

    電機(jī)控制器是用于控制電機(jī)運(yùn)行的設(shè)備,其主要功能是將電能轉(zhuǎn)換為機(jī)械能,同時(shí)根據(jù)需要調(diào)節(jié)電機(jī)的速度、轉(zhuǎn)矩和方向。電機(jī)控制器的原理主要基于電力電子技術(shù)、自動(dòng)控制理論和電機(jī)理論。以下是
    的頭像 發(fā)表于 10-21 13:48 ?556次閱讀

    ARM處理的異常中斷響應(yīng)過程

    ARM處理的異常中斷響應(yīng)是嵌入式系統(tǒng)設(shè)計(jì)中一個(gè)至關(guān)重要的環(huán)節(jié),它確保了系統(tǒng)在面對(duì)內(nèi)部或外部事件時(shí)能夠穩(wěn)定、可靠地運(yùn)行。
    的頭像 發(fā)表于 09-10 11:18 ?1163次閱讀

    Arm Cortex-R82AE賦能高性能區(qū)域控制器設(shè)計(jì)

    在之前的一篇推文中我曾談到過,汽車行業(yè)的近期發(fā)展趨勢(shì)正在推動(dòng)對(duì)汽車架構(gòu)中區(qū)域控制器和域控制器的需求。而基于 Armv8-R 的 Arm Cortex-R52 和 Cortex-R52+ 核心正是滿足
    的頭像 發(fā)表于 09-02 10:23 ?619次閱讀

    stm32怎樣觸發(fā)軟件中斷

    了解STM32中斷系統(tǒng) STM32微控制器具有豐富的中斷系統(tǒng),包括NVIC(嵌套向量中斷控制器)和SYSTICK定時(shí)。NVIC可以處理多達(dá)
    的頭像 發(fā)表于 09-02 09:32 ?1072次閱讀

    【「ARM MCU嵌入式開發(fā) | 基于國產(chǎn)GD32F10x芯片」閱讀體驗(yàn)】+閱讀中斷

    可以通過設(shè)置相應(yīng)的中斷屏蔽位,禁止CPU響應(yīng)某個(gè)中斷,從而實(shí)現(xiàn)中斷屏蔽。中斷屏蔽的目的是保證在執(zhí)行一些關(guān)鍵程序時(shí)不響應(yīng)中斷,以免造成延時(shí)而引
    發(fā)表于 09-01 23:59

    【「ARM MCU嵌入式開發(fā) | 基于國產(chǎn)GD32F10x芯片」閱讀體驗(yàn)】+書籍整體概況

    案例為按鍵控制LED亮滅;第四章介紹中斷和事件,中斷包含嵌套向量中斷控制器NVIC,EXTI外部中斷
    發(fā)表于 08-25 22:48

    ARMxy ARM工業(yè)控制器支持深度學(xué)習(xí)應(yīng)用于物體檢測(cè)

    在當(dāng)今快速發(fā)展的工業(yè)自動(dòng)化領(lǐng)域,ARMxy ARM工業(yè)控制器以其卓越的性能和可靠性,成為了眾多企業(yè)的理想選擇。它是一款可靈活配置 IO?口的工業(yè)級(jí)ARM控制器,基于瑞芯微RK 3568
    的頭像 發(fā)表于 08-16 14:06 ?397次閱讀
    ARMxy <b class='flag-5'>ARM</b>工業(yè)<b class='flag-5'>控制器</b>支持深度學(xué)習(xí)應(yīng)用于物體檢測(cè)

    電機(jī)控制器硬件的功能介紹

    電機(jī)控制器能夠精準(zhǔn)控制電動(dòng)汽車電機(jī),同時(shí)確保系統(tǒng)的安全穩(wěn)定運(yùn)行。電機(jī)控制器硬件的協(xié)同工作彰顯了電機(jī)控制器在現(xiàn)代電動(dòng)汽車動(dòng)力系統(tǒng)中的核心地位。下面我們就來
    的頭像 發(fā)表于 08-13 16:09 ?772次閱讀

    【GD32 MCU 入門教程】GD32 MCU 常見外設(shè)介紹(3)NVIC 介紹

    NVIC(Nested vectored interrupt controller,嵌套向量中斷控制器)是Cortex-M處理的一部分,它是可編程的,且寄存位于存儲(chǔ)映射的系統(tǒng)
    的頭像 發(fā)表于 08-12 10:02 ?644次閱讀
    【GD32 MCU 入門教程】GD32 MCU 常見外設(shè)<b class='flag-5'>介紹</b>(3)NVIC <b class='flag-5'>介紹</b>

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

    在默認(rèn)情況下,本文講述的都是ARMV8-aarch64架構(gòu),gicv3, linux kernel 5.14
    的頭像 發(fā)表于 08-07 09:29 ?856次閱讀
    <b class='flag-5'>ARM</b> CORE支持<b class='flag-5'>中斷</b>嵌套嗎?GIC<b class='flag-5'>中斷控制器</b>支持<b class='flag-5'>中斷</b>嵌套嗎?

    壓力控制器的原理和功能介紹

    壓力控制器是一種用于測(cè)量和控制壓力的儀器,廣泛應(yīng)用于工業(yè)、科研、醫(yī)療等領(lǐng)域。本文將詳細(xì)介紹壓力控制器的原理、功能以及應(yīng)用。 一、壓力控制器
    的頭像 發(fā)表于 06-19 10:52 ?1925次閱讀

    移動(dòng)機(jī)械控制器 車載智能控制器 CAN總線控制器

    控制器機(jī)械
    長沙碩博電子科技股份有限公司
    發(fā)布于 :2024年06月13日 17:02:51

    32位基于ARM控制器GD32E50x固件庫使用指南

    電子發(fā)燒友網(wǎng)站提供《32位基于ARM控制器GD32E50x固件庫使用指南.pdf》資料免費(fèi)下載
    發(fā)表于 05-16 18:12 ?10次下載

    ScaleFlux即將推出集成Arm Cortex-R82處理的企業(yè)SSD控制器

    ScaleFlux宣布,將在其即將推出的企業(yè)級(jí)固態(tài)硬盤(SSD)控制器系列中整合Arm? Cortex?-R82處理
    的頭像 發(fā)表于 03-22 11:25 ?1056次閱讀