日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

Linux閱碼場 ? 來源:一口Linux ? 作者:土豆居士 ? 2022-07-08 09:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

GIC 硬件原理

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

當前GIC 有四個版本,GIC v1~v4, 本文主要介紹GIC v3控制器。

GIC v3中斷類別

GICv3定義了以下中斷類型:

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

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

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

LPI(Locality-specific Peripheral Interrupt):LPI 是 GICv3 中的新特性,它們在很多方面與其他類型的中斷不同。LPI 始終是基于消息的中斷,它們的配置保存在表中而不是寄存器。比如 PCIe 的 MSI/MSI-x 中斷。

中斷類型 硬件中斷號
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)閉每個中斷。Distributor對中斷的控制分成兩個級別。一個是全局中斷的控制(GIC_DIST_CTRL)。一旦關(guān)閉了全局的中斷,那么任何的中斷源產(chǎn)生的中斷事件都不會被傳遞到 CPU interface。另外一個級別是對針對各個中斷源進行控制(GIC_DIST_ENABLE_CLEAR),關(guān)閉某一個中斷源會導(dǎo)致該中斷事件不會分發(fā)到 CPU interface,但不影響其他中斷源產(chǎn)生中斷事件的分發(fā)。

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

優(yōu)先級控制。

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

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

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

啟用和禁用 SGI 和 PPI。

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

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

將每個 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 中斷事件。對于 ARM,CPU interface 和 CPU 之間的中斷信號線是 nIRQCPU 和 nFIQCPU。如果關(guān)閉了中斷,即便是 Distributor 分發(fā)了一個中斷事件到 CPU interface,也不會 assert 指定的 nIRQ 或者 nFIQ 通知 Core。

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

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

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

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

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

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

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

中斷路由

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

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

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

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

... ...

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

中斷狀態(tài)機

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

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

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

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

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

Active and pending:當一個中斷源處于 Active 狀態(tài)的時候,同一中斷源又觸發(fā)了中斷,進入 pending 狀態(tài)。

中斷處理流程

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

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

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

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

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

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

審核編輯:何安

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

    關(guān)注

    135

    文章

    9589

    瀏覽量

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

    關(guān)注

    114

    文章

    17886

    瀏覽量

    195290

原文標題:扒開 ARM 中斷控制器的底褲

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    深入解析LPC3180:高性能ARM控制器的卓越之選

    深入解析LPC3180:高性能ARM控制器的卓越之選 在嵌入式系統(tǒng)設(shè)計領(lǐng)域,一款高性能、低功耗的微控制器往往是工程師們的理想之選。NXP的LPC3180 16/32位ARM
    的頭像 發(fā)表于 04-09 09:30 ?159次閱讀

    AT91RM9200:高性能ARM920T微控制器的深度解析

    AT91RM9200:高性能ARM920T微控制器的深度解析 在電子設(shè)計領(lǐng)域,選擇一款合適的微控制器對于項目的成功至關(guān)重要。AT91RM9200這款基于ARM920T的微
    的頭像 發(fā)表于 04-06 13:05 ?680次閱讀

    深度解析Atmel SAM7S系列ARM控制器:從特性到應(yīng)用

    深度解析Atmel SAM7S系列ARM控制器:從特性到應(yīng)用 在嵌入式系統(tǒng)設(shè)計領(lǐng)域,微控制器是核心組成部分,而Atmel的SAM7S系列ARM
    的頭像 發(fā)表于 04-06 11:05 ?765次閱讀

    Atmel SAM7S系列ARM控制器深度解析

    Atmel SAM7S系列ARM控制器深度解析 一、引言 在嵌入式系統(tǒng)的設(shè)計領(lǐng)域,微控制器的選擇至關(guān)重要。Atmel的SAM7S系列ARM控制器
    的頭像 發(fā)表于 04-06 11:05 ?313次閱讀

    探秘 ZA9L1:高性能安全 32 位 ARM控制器

    探秘 ZA9L1:高性能安全 32 位 ARM控制器 在電子設(shè)備日新月異的今天,高性能且安全的微控制器成為了眾多應(yīng)用領(lǐng)域的核心需求。今天,我們就來深入了解一下 Maxim 推出的 Zatara
    的頭像 發(fā)表于 04-04 15:15 ?612次閱讀

    深入解析SAM7SE512/256/32:強大的ARM控制器

    深入解析SAM7SE512/256/32:強大的ARM控制器 在嵌入式系統(tǒng)開發(fā)領(lǐng)域,一款性能卓越、功能豐富的微控制器往往能為項目帶來極大的便利和優(yōu)勢。Atmel的SAM7SE512/256
    的頭像 發(fā)表于 03-30 12:05 ?325次閱讀

    Intersil 82C59A:高性能CMOS優(yōu)先中斷控制器的全方位解析

    Intersil 82C59A:高性能CMOS優(yōu)先中斷控制器的全方位解析 在電子設(shè)計領(lǐng)域,中斷控制器是微計算機系統(tǒng)中不可或缺的關(guān)鍵組件,它能夠高效處理外部設(shè)備的中斷請求,提升系統(tǒng)的響應(yīng)速度和處理能力
    的頭像 發(fā)表于 03-15 17:25 ?1033次閱讀

    CW32F030中斷解析

    中斷 1 概述 ARM? Cortex?-M0+ 內(nèi)核的嵌套向量中斷控制器 (NVIC),用于管理中斷和異常。NVIC 和處理內(nèi)核緊密相連
    發(fā)表于 01-12 08:41

    RISC-V怎么實現(xiàn)核間中斷?核心本地中斷控制器(CLINT)深度解析

    全稱為Core Local Interruptor(核心本地中斷控制器),是 RISC-V 特權(quán)架構(gòu)規(guī)范(Privileged Architecture Specification)中明確定義的內(nèi)建
    的頭像 發(fā)表于 12-13 14:06 ?2691次閱讀
    RISC-V怎么實現(xiàn)核間<b class='flag-5'>中斷</b>?核心本地<b class='flag-5'>中斷控制器</b>(CLINT)深度解析

    CW32學(xué)習(xí)筆記,通用異步收發(fā)中斷接收

    的“中斷”功能。放在單片機上,進行中斷操作需要以下幾個條件和步驟:擁有中斷源、中斷控制器正常工作、觸發(fā)中斷、保護現(xiàn)場、響應(yīng)
    發(fā)表于 12-12 07:45

    易靈思Sapphire SoC中RISC-V平臺級中斷控制器深度解析

    隨著 RISC -V處理在 FPGA 領(lǐng)域的廣泛應(yīng)用,易靈思 FPGA 的 Sapphire RISC-V 內(nèi)核憑借軟硬核的靈活支持,為開發(fā)者提供多樣選擇。本文深入探討 Sapphire SoC 中 RISC - V 平臺級中斷控制器(PLIC),解析其架構(gòu)與操作機制
    的頭像 發(fā)表于 11-08 09:35 ?8069次閱讀
    易靈思Sapphire SoC中RISC-V平臺級<b class='flag-5'>中斷控制器</b>深度解析

    PY32F030系列32位ARM Cortex-M0+微控制器介紹

    在嵌入式開發(fā)領(lǐng)域,一款性能適配、成本可控且功耗優(yōu)異的 MCU,往往是項目成功的關(guān)鍵。今天要為大家隆重介紹的PY32F030 系列 32 位 ARM Cortex-M0 + 微控制器,正是這樣一款能
    的頭像 發(fā)表于 10-15 16:43 ?1454次閱讀

    瑞薩RA系列MCU的中斷過程介紹

    中斷來臨的時候會最先經(jīng)過IRQ寄存,IRQ寄存檢測到中斷的時候,會向中央處理嵌套向量中斷控制器NVIC發(fā)送
    的頭像 發(fā)表于 09-23 09:45 ?1551次閱讀
    瑞薩RA系列MCU的<b class='flag-5'>中斷</b>過程<b class='flag-5'>介紹</b>

    第六章 外部中斷

    本章介紹W55MH32的IO口作為外部中斷輸入的使用。先闡述了NVIC(嵌套向量中斷控制器) 的結(jié)構(gòu)、寄存、優(yōu)先級及相關(guān)函數(shù),再說明EXTI(外部
    的頭像 發(fā)表于 05-26 16:27 ?1702次閱讀
    第六章 外部<b class='flag-5'>中斷</b>

    AS32X601驅(qū)動系列教程 PLIC_中斷應(yīng)用詳解

    平臺中斷控制器(Platform Level Interrupt Controller,PLIC)是國科安芯AS32系列MCU芯片的中斷控制器,主要對中斷源進行采樣,優(yōu)先級仲裁和分發(fā)。各外設(shè)
    的頭像 發(fā)表于 05-23 17:10 ?836次閱讀
    AS32X601驅(qū)動系列教程 PLIC_<b class='flag-5'>中斷</b>應(yīng)用詳解
    云阳县| 安徽省| 莱州市| 和顺县| 柘城县| 黄平县| 格尔木市| 齐齐哈尔市| 和平区| 长垣县| 图们市| 娄底市| 化隆| 吴桥县| 营口市| 承德县| 石城县| 南木林县| 抚远县| 浮山县| 泌阳县| 沙坪坝区| 米脂县| 盐津县| 环江| 昌江| 石城县| 沧源| 珲春市| 博爱县| 上林县| 三门峡市| 馆陶县| 墨竹工卡县| 玉环县| 邛崃市| 德令哈市| 德昌县| 八宿县| 彭山县| 观塘区|