一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

armv8-armv9中斷系列詳解-硬件基礎(chǔ)篇

Linux閱碼場(chǎng) ? 來源:Linux閱碼場(chǎng) ? 作者:Linux閱碼場(chǎng) ? 2022-04-27 10:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、序言

1、序言

帶著問題去學(xué)習(xí),關(guān)于異常/中斷的一些思考:

(1)、在如下的一個(gè)大系統(tǒng)種,cpu正在optee os中運(yùn)行,突然來了一個(gè)想給Linux Kernel處理的中斷(如一個(gè)藍(lán)牙中斷),那么此時(shí)的軟硬件流程是怎樣的?

dac43a24-c58a-11ec-bce3-dac502259ad0.png

(2)、在上述的大系統(tǒng)中,你的Linux Kernel、optee os、hypervisor、ATF系統(tǒng)中都有異常向量表,那么當(dāng)一個(gè)中斷到來時(shí),是跳轉(zhuǎn)到哪個(gè)系統(tǒng)中的向量表呢

(3)、什么是中斷嵌套?怎樣可以支持中斷嵌套?什么是中斷搶占?什么是中斷優(yōu)先級(jí)?什么是運(yùn)行中斷優(yōu)先級(jí)?

(4)、什么是FIQ?FIQ和IRQ的關(guān)系是什么?

(5)、當(dāng)來了一個(gè)中斷,是如何跳轉(zhuǎn)到向量表的?中間經(jīng)過了怎樣的路由?

(6)、當(dāng)你調(diào)用了svc/hvc/smc指令后,cpu是如何跳轉(zhuǎn)到你期望的目標(biāo)地址的?

(7)、同步異常有哪些,異步異常有哪些,哪些優(yōu)先級(jí)是一樣的,哪些優(yōu)先級(jí)是不一樣的?

(8)、異常向量表存放在哪里?為什么會(huì)有人說放在0x00000000處?

(9)、什么是interrupt is asserted ?什么是interrupt is taken ?什么是PE Acknowledge this interrupt ?target 、routing又是什么意思?target from和target to呢?

做為一名底層安全工程師、一名一線支持客戶的FAE,工作的內(nèi)容涉及到TF-A、TEE、Linux Kernel、hypervisor、SPM等眾多模塊,cpu(或PE或core或PC)也會(huì)在這眾多模塊之間跳來跳去,由于這些代碼大多數(shù)都是開源的,都是別人寫好的,其實(shí)很多時(shí)候,也無需去看其底層的設(shè)計(jì)原理。但做為一名FAE,會(huì)遇到客戶的靈魂一問,為了給客戶一個(gè)專業(yè)的感覺,不得不去弄懂底層深層次的原理. 另外,有些時(shí)候遇到了性能相關(guān)問題,不懂底層的設(shè)計(jì)原理,也許就無法分析這類問題。

本人不是什么專家,也不是什么的大佬,也就是看了一些arm文檔,加上自己的理解,然后總結(jié)出如下文章,當(dāng)然我在總結(jié)的時(shí)候,一切都以官方資料為準(zhǔn),盡量不瞎說不亂說。。

最后,希望這系列文章,能夠?qū)Υ蠹矣兴鶐椭:煤脤W(xué)習(xí)、天天向上,卷起來同志們。

說明:

本系列所講述的,都是以armv8-aarch64/armv9架構(gòu)位基基礎(chǔ),Linux Kernel 5.10、optee3.16、TF-A 2.5

大多數(shù)內(nèi)容來自arm官方文檔、很小很小部靠猜測(cè),再加上部分自己的理解...

2、學(xué)習(xí)目標(biāo)

daddeca8-c58a-11ec-bce3-dac502259ad0.png

理解整個(gè)中斷的數(shù)據(jù)流,從peripheral到gic到core再到操作系統(tǒng)軟件

了解中斷的產(chǎn)生、中斷的標(biāo)記、中斷的路由、中斷的Master,以及操作系統(tǒng)對(duì)中斷的處理

了解從peripheral產(chǎn)生中斷后,有哪些是硬件自動(dòng)的行為,有哪些是架構(gòu)推薦定義的軟件流程,以及各類操作系統(tǒng)軟件中的處理流程

本系列文章主要講述圖中的3和4,主要包含以下文章:01-armv8/armv9中斷系列詳解-序言 02-armv8/armv9中斷系列詳解-硬件基礎(chǔ)篇 03-armv8/armv9中斷系列詳解-中斷示例展示(不含虛擬化部分) 04-armv8/armv9中斷系列詳解-中斷示例展示(虛擬化部分) 05-armv8/armv9中斷系列詳解-optee運(yùn)行時(shí)來了一個(gè)REE(linux)中斷–代碼導(dǎo)讀 06-armv8/armv9中斷系列詳解-軟件篇-Linux kernel中斷相關(guān)軟件導(dǎo)讀

二、硬件基礎(chǔ)篇

1 中斷的定義

有人說,中斷就包含IRQ和FIQ,其實(shí)這是不準(zhǔn)確的,準(zhǔn)確的說法應(yīng)該是:產(chǎn)生到aarch64的異步異常(包括IRQ, FIQ, SError) 可看作中斷。官方文檔原話 :IntheArmv8-A architecture,asynchronous exceptions that are taken toAArch64state are also knownasinterrupts.

2 FIQ和IRQ

有人說FIQ是快速中斷, FIQ比IRQ具有較高的優(yōu)先級(jí),而且他還能提出ARM官方文檔來證明他說的正確性:

daf2ecac-c58a-11ec-bce3-dac502259ad0.png

其實(shí),這也是錯(cuò)誤的!

正確的說法是FIQ和IRQ具有同樣的優(yōu)先級(jí)(默認(rèn)的情況下,我們只討論armv8-aarch64和armv9)

db23c98a-c58a-11ec-bce3-dac502259ad0.png

3 中斷術(shù)語(yǔ)的介紹

db3a38e6-c58a-11ec-bce3-dac502259ad0.png

SPIs(Share Periphral Interrupts)中斷進(jìn)來之后,由inactive狀態(tài)變成pending,此時(shí)中斷標(biāo)記為IRQ/FIQ,這是也就是中斷assert了,然后該中斷會(huì)根據(jù)HCR/SCR等的配置進(jìn)行路由(路由到哪個(gè)Exception Level等),這個(gè)過程也就target,也可以叫做routing。路由之后,在部分場(chǎng)景下還會(huì)再檢查PSTATE的MASK位,接下來就是PE acknowledge了,此時(shí)也就是中斷被taken了。PE acknowledge后,cpu interface會(huì)將該中斷置為Active.

4 gic中斷控制器的介紹

(注意:本文重點(diǎn)介紹armv8/armv9異常中斷,不會(huì)展開介紹gic,這里只是帶一下簡(jiǎn)單概念)gic中斷控制器有眾多版本,gicv2/gicv3/gicv4是gic的架構(gòu),gic500/gic600是具體的gic IP。而在armv8/armv9中,基本都是使用的gicv3/gicv4。如下圖所示,每一個(gè)core都定義了,它說使用的gic架構(gòu)。

db5fe546-c58a-11ec-bce3-dac502259ad0.png

gic中斷控制器與core連接的硬件框圖

db84458a-c58a-11ec-bce3-dac502259ad0.png

5 Core中的中斷控制器接口的介紹

在gicv2中,gic中斷控制器將中斷信號(hào)(irq,fiq,serror)直接以signal的方式發(fā)送給core。而在gicv3中,gic的組件發(fā)生變化,將gic的cpu internface接口做到了core中,在這種情況下,gic將中斷信號(hào)通過AXI Stream發(fā)送給core(cluster),然后cpu interface再繼續(xù)發(fā)送irq/fiq/serror信息。

db96bf62-c58a-11ec-bce3-dac502259ad0.png

6 同步異常和異步異常的概念

6.1、同步異常和異步異常的定義

具備以下3個(gè)行為的稱之為同步異常:? The exception is generated as a result of direct execution or attempted execution of an instruction.? The return address presented to the exception handler is guaranteed to indicate the instruction that caused the exception.? The exception is precise

其實(shí)就是說:

異常是由執(zhí)行或嘗試執(zhí)行指令產(chǎn)生的

產(chǎn)生異常的那個(gè)位置是確定的,即每次執(zhí)行到“那個(gè)指令處”就會(huì)產(chǎn)生

異常是precise的

具備以下3個(gè)行為的稱之為異步異常::? The exception is not generated as a result of direct execution or attempted execution of the instruction stream.? The return address presented to the exception handler is not guaranteed to indicate the instruction that caused the exception.? The exception is imprecise.

其實(shí)就是說:

異常不是由執(zhí)行或嘗試執(zhí)行指令產(chǎn)生的

產(chǎn)生異常的那個(gè)位置不是確定的,即不知道執(zhí)行到哪里,就產(chǎn)生了異常

異常是imprecise的

那么precise 和 imprecise 又是什么意思呢??

dbac28c0-c58a-11ec-bce3-dac502259ad0.png

比較繞、比較難懂,咱們換一個(gè)說法:按照預(yù)期產(chǎn)生的異常稱之precise,反之imprecise

6.2、系統(tǒng)中有哪些異步異常?

其實(shí)主要就是:irq, fiq, SError

Physical interrupts Are signals sent to the PE from outside the PE. They are:

SError. System Error.

IRQ.

FIQ.

Virtual interrupts Are interrupts that software executing at EL2 can enable and make pending. A virtual interrupt is taken from EL0 or EL1 to EL1. Virtual interrupts have names that correspond to the physical interrupts:

vSError.

vIRQ.

vFIQ

6.3、系統(tǒng)中有哪些同步異常?

嘗試執(zhí)行UNDEFINED指令產(chǎn)生的任何異常,包括:(1)、嘗試在不適當(dāng)?shù)漠惓<?jí)別執(zhí)行指令。(2)、當(dāng)指令被禁用時(shí)嘗試執(zhí)行指令。(3)、嘗試執(zhí)行尚未分配的指令位模式。

非法執(zhí)行狀態(tài)異常。這些是由嘗試執(zhí)行指令引起的PSTATE.IL為 1,(詳細(xì)可參考D1-2486 頁(yè)上的AArch64 狀態(tài)的非法返回事件)

使用未對(duì)齊的 SP 導(dǎo)致的異常。

嘗試使用未對(duì)齊的 PC 執(zhí)行指令導(dǎo)致的異常。

由異常生成指令SVC、HVC或SMC引起的異常。

嘗試執(zhí)行系統(tǒng)寄存器定義為被捕獲到更高的異常級(jí)別。(詳細(xì)可參考可配置的指令使能和禁止,在D1-2510 頁(yè))

由內(nèi)存地址轉(zhuǎn)換系統(tǒng)生成的指令中止與嘗試相關(guān)聯(lián)從產(chǎn)生故障的內(nèi)存區(qū)域執(zhí)行指令。

內(nèi)存地址轉(zhuǎn)換系統(tǒng)生成的數(shù)據(jù)中止與嘗試讀取或?qū)懭氘a(chǎn)生故障的內(nèi)存。

由地址未對(duì)齊引起的數(shù)據(jù)中止。

如果實(shí)施FEAT_MTE2,則由標(biāo)記檢查故障引起的數(shù)據(jù)中止。。

所有調(diào)試異常:(1)、Breakpoint Instruction exceptions. (2)、Breakpoint exceptions. (3)、Watchpoint exceptions. (4)、Vector Catch exceptions. (5)、Software Step exceptions.

在支持捕獲浮點(diǎn)異常的實(shí)現(xiàn)中,由捕獲的IEEE 浮點(diǎn)異常引起的異常

在某些實(shí)現(xiàn)中,外部中止。外部中止是失敗的內(nèi)存訪問,包括訪問地址轉(zhuǎn)換期間發(fā)生的內(nèi)存系統(tǒng)的那些部分。

7 軟件對(duì)中斷的處理流程

正常情況下,當(dāng)一個(gè)中斷(異常)進(jìn)來之后,PE(cpu)跳轉(zhuǎn)到中斷向量表,在中斷向量表中會(huì)再次調(diào)用C語(yǔ)言函數(shù),完成中斷的處理,流程圖如下所示:

dbca6da8-c58a-11ec-bce3-dac502259ad0.png

ARM Core支持中斷搶占,當(dāng)一個(gè)中斷正常處理的時(shí)候,可能又觸發(fā)了一個(gè)高優(yōu)先級(jí)的中斷,示例如下所示:

dbe4c2fc-c58a-11ec-bce3-dac502259ad0.png

思考你所用的操作系統(tǒng)就真的支持中斷嵌套嗎?如果想支持中斷嵌套,需要滿足哪些條件呢?后文會(huì)有詳細(xì)介紹。

8 向量表基地址寄存器的介紹

armv8定義了VBAREL1、VBAREL2、VBAR_EL3三個(gè)基地址寄存器

dbf95e7e-c58a-11ec-bce3-dac502259ad0.png

dc0b186c-c58a-11ec-bce3-dac502259ad0.png

思考:1、VBAREL1、VBAREL2、VBAREL3寫入的基地址,是物理地址還是虛擬地址?2、基地址不再放0x00000000的位置嗎?3、異常向量表中,沒有reset offset了?4、異常向量表中的每一個(gè)offset為啥是0x80(128)地址空間?以前是多少?5、VBARELx中,為啥末尾11個(gè)bit是reserved?

9 中斷向量表的介紹

dc240d22-c58a-11ec-bce3-dac502259ad0.png

我們可以看出,實(shí)際上有四組表,每組表有四個(gè)offset,分別對(duì)應(yīng)sync,IRQ,F(xiàn)IQ和serror。

如果發(fā)生異常后并沒有exception level切換,并且發(fā)生異常之前使用的棧指針是SP_EL0,那么使用第一組異常向量表。

如果發(fā)生異常后并沒有exception level切換,并且發(fā)生異常之前使用的棧指針是SP_EL1/2/3,那么使用第二組異常向量表。

如果發(fā)生異常導(dǎo)致了exception level切換,并且發(fā)生異常之前的exception level運(yùn)行在AARCH64模式,那么使用第三組異常向量表。

如果發(fā)生異常導(dǎo)致了exception level切換,并且發(fā)生異常之前的exception level運(yùn)行在AARCH32模式,那么使用第四組異常向量表。

另外我們還可以看到的一點(diǎn)是,每一個(gè)異常入口不再僅僅占用4bytes的空間,而是占用0x80 bytes空間,也就是說,每一個(gè)異常入口可以放置多條指令,而不僅僅是一條跳轉(zhuǎn)指令

注意,到了armv9上,增加了 FEAT_DoubleFault之后,異常向量表稍微變化了一丁點(diǎn)變化,如圖中的標(biāo)注所示:

dc374dd8-c58a-11ec-bce3-dac502259ad0.png

也就是說,當(dāng) FEAT_DoubleFault開啟之后,且 SCR_EL3.EASE比特設(shè)置為1, 那么此時(shí)target到EL3的 Synchronous External abort將會(huì)跳轉(zhuǎn)到Serror offset。

dc5ebd32-c58a-11ec-bce3-dac502259ad0.png

在中斷產(chǎn)生之后,PC(或PE 或 Core 或 cpu)將跳轉(zhuǎn)到VBAR + 中斷offset處。事實(shí)上在armv8-aarch64或armv9體系中,有3個(gè)VBARELx寄存器,另外對(duì)于VBAREL1雖然只有一個(gè),但是在不同Security狀態(tài)的操作系統(tǒng)中,有著不同的cpu context,即也是可以看做成兩份。如果是要考慮虛擬化,那么VBAREL2可能也會(huì)有兩份,VBAREL1可能會(huì)有多份。

dc82e6a8-c58a-11ec-bce3-dac502259ad0.png

如下,是在不考慮EL2/虛擬化的時(shí)候,畫的一張向量表總截圖,即當(dāng)一個(gè)中斷來時(shí),硬件會(huì)自動(dòng)選擇哪一個(gè)VBAR_ELx寄存器,硬件會(huì)自動(dòng)選擇哪一組向量表,硬件會(huì)自動(dòng)選擇哪一個(gè)offset

dc9a271e-c58a-11ec-bce3-dac502259ad0.png

10 中斷進(jìn)入和中斷退出時(shí)的硬件自動(dòng)行為

10.1 當(dāng)異常進(jìn)來之后ARM CORE的硬件自動(dòng)的行為(Exception entry)

[for common]

PE(即當(dāng)前PSTATE)狀態(tài)保存在目標(biāo)異常級(jí)別的SPSR_ELx中

返回地址保存在目標(biāo)異常級(jí)別的ELR_ELx中

所有PSTATE .{D, A, I, F} 都設(shè)置為 1。---即關(guān)閉了所有中斷

所選的堆棧指針寄存器是目標(biāo)異常級(jí)別的專用堆棧指針寄存器---即使用sp_elx

執(zhí)行移動(dòng)到目標(biāo)異常級(jí)別,并從異常向量定義的地址開始---即跳轉(zhuǎn)到VBAR_ELx

[for 同步異常]

如果異常是同步異?;?SError 中斷,則描述原因的信息, 異常保存在目標(biāo)異常級(jí)別的ESR_ELx中。

如果指令中止異常、數(shù)據(jù)中止異常、PC 對(duì)齊錯(cuò)誤異?;騑atchpoint異常,且目標(biāo)異常是aarch64, 錯(cuò)誤的虛擬地址保存在FAR_ELx 中。(Instruction Abort exception, Data Abort exception, PC alignment fault exception, or a Watchpoint exception )

如果指令中止異常,或數(shù)據(jù)中止異常被帶到 EL2 并且故障是與第 2 階段轉(zhuǎn)換,故障 IPA 保存在HPFAR_EL2 中

[for Serror]

對(duì)于物理 SError 中斷異常,在以下任一情況下,物理 SError 的掛起狀態(tài)將被清除 SError 中斷是邊沿觸發(fā)的。FEAT_DoubleFault已實(shí)現(xiàn) 如果Reliability, Availability, and Serviceability Extension被實(shí)施,并且在采取 SError 時(shí)中斷,記錄在ESR_ELx 中的綜合癥指示除IMPLEMENTATION之外的 SError定義或未分類的 SError 中斷綜合癥

對(duì)于虛擬 SError 中斷異常,虛擬 SError 的掛起狀態(tài),HCR_EL2.VSE位清零

[for FEAT]

PSTATE .SSBS 設(shè)置為SCTLR_ELx .DSSBS的值

如果FEAT_UAO實(shí)現(xiàn),PSTATE .UAO被設(shè)置為0

如果FEAT_MTE實(shí)現(xiàn),PSTATE .TCO設(shè)置為1

如果實(shí)現(xiàn)了FEATBTI,從 AArch64 到 AArch64 的異步異常,PSTATE .BTYPE 被復(fù)制到SPSRELx .BTYPE,然后設(shè)置為 0

如果實(shí)現(xiàn)了FEATBTI,在將某些類型的同步異常從 AArch64 轉(zhuǎn)移到 AArch64 時(shí),PSTATE .BTYPE 復(fù)制到SPSRELx .BTYPE 然后設(shè)置為 0 這些類型的同步異常是:軟件步驟異常。PC 對(duì)齊錯(cuò)誤異常。指令中止異常。斷點(diǎn)異?;虻刂菲ヅ湎蛄坎东@異常。非法執(zhí)行狀態(tài)異常。軟件斷點(diǎn)異常。分支目標(biāo)異常。

如果FEATIESB被實(shí)現(xiàn),當(dāng)有效數(shù)值的的SCTLRELx .IESB位在目標(biāo)異常level為1,PE插入錯(cuò)誤同步事件

10.2 當(dāng)異常退出時(shí)ARM CORE的硬件自動(dòng)的行為(Exception return)

(On executing an Exception return instruction at ELx)

PC從ELR_ELx恢復(fù)

PSTATE從SPSR_ELx恢復(fù)

11中斷的標(biāo)記

在gicv3中斷控制器中,對(duì)中斷進(jìn)行了分組:Group0、Secure Group1、Non-secure Group1。當(dāng)一個(gè)中斷進(jìn)來的時(shí)候,cpu interface會(huì)根據(jù)中斷的分組類型和當(dāng)前PE的security狀態(tài)來決定是標(biāo)記為IRQ還是FIQ

dcb14c28-c58a-11ec-bce3-dac502259ad0.png

12 中斷的路由

我們知道系統(tǒng)中有三個(gè)基地址VBAREL1、VBAREL3、VBAREL1(secure),那么到底是使用哪一個(gè)呢?由Routing when both EL3 and EL2 are implemented 表來決定,中斷routing到了EL1則使用VBAREL1,routing到了EL3則使用VBAREL3,routing到了secure EL1則使用VBAREL1(secure)

dcc653c0-c58a-11ec-bce3-dac502259ad0.png

為了更直觀的理解,總結(jié)成了下面的一個(gè)流程圖:

dceb1a7a-c58a-11ec-bce3-dac502259ad0.png

13 中斷的MASK(屏蔽)

在PSTATE中,A/I/F比特分別可以對(duì)SError、IRQ、FIQ進(jìn)行MASK

SError :PSTATE.A

IRQ :PSTATE.I

FIQ :PSTATE.F

但是在有些場(chǎng)景下,MASK將會(huì)失效,如在一些中斷被強(qiáng)制target到EL3的配置下,中斷的taken就不在關(guān)心PSTATE的mask位了。

以下表格做出了詳細(xì)的說明:

dcff32e4-c58a-11ec-bce3-dac502259ad0.png

其中:

A 表示 中斷的taken 將忽略 PSTATE的MASK位

B 表示 中斷的taken 不會(huì)忽略 PSTATE的MASK位,如果MASK了,就不會(huì)taken了。

C 表示 中斷不會(huì)被

A/B是 描述serror且和FEAT_DoubleFault相關(guān)的,暫不介紹

14 中斷路由(信號(hào)流)的總結(jié)

當(dāng)peripheral產(chǎn)生一個(gè)中斷后,PE是如何跳轉(zhuǎn)到某個(gè)系統(tǒng)中的向量表的?如下框圖展示了這一切:當(dāng)一個(gè)中斷到來后,中斷信號(hào)交給gic,gic會(huì)進(jìn)行中斷的識(shí)別、優(yōu)先級(jí)、affinity路由等,然后通過AXI stream將信號(hào)交給core(cpu internface),cpu interface負(fù)責(zé)標(biāo)記中斷是irq還是fiq,這就是中斷斷言了(assert了),然后就是中斷的路由規(guī)則,target到相應(yīng)的EL級(jí)別,然后再檢查Mask標(biāo)記位,然后該中斷就被taken了(即PE acknowledge了),接下來PE還會(huì)根據(jù)EL是否發(fā)生改變、SPELx使用的哪一個(gè)等信息來決定是跳轉(zhuǎn)到哪一組向量表 最后PE跳轉(zhuǎn)到相應(yīng)的VBARELx + xxx offset了。

dd1df044-c58a-11ec-bce3-dac502259ad0.png

審核編輯 :李倩

聲明:本文內(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)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11077

    瀏覽量

    217029
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11509

    瀏覽量

    213748
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7147

    瀏覽量

    125572

原文標(biāo)題:armv8-armv9中斷系列詳解-硬件基礎(chǔ)篇

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

    平臺(tái)中斷控制器(Platform Level Interrupt Controller,PLIC)是國(guó)科安芯AS32系列MCU芯片的中斷控制器,主要對(duì)中斷源進(jìn)行采樣,優(yōu)先級(jí)仲裁和分發(fā)。
    的頭像 發(fā)表于 05-23 17:10 ?201次閱讀
    AS32X601驅(qū)動(dòng)<b class='flag-5'>系列</b>教程 PLIC_<b class='flag-5'>中斷</b>應(yīng)用<b class='flag-5'>詳解</b>

    第十章 W55MH32中斷應(yīng)用概覽

    本章講述了W55MH32中斷應(yīng)用,涵蓋異常類型、NVIC介紹、優(yōu)先級(jí)定義與分組,闡述中斷編程三要點(diǎn)(使能中斷、配置 NVIC、編寫服務(wù)函數(shù)),并強(qiáng)調(diào)優(yōu)先級(jí)分組設(shè)置注意事項(xiàng)。
    的頭像 發(fā)表于 05-22 17:07 ?1024次閱讀
    第十章 W55MH32<b class='flag-5'>中斷</b>應(yīng)用概覽

    STM32中斷如此簡(jiǎn)單(可下載)

    下面我們先來了解一些基本概念:中斷中斷是什么?舉個(gè)例子來說,當(dāng)我們正在工作時(shí),突然電話響了,這時(shí)你會(huì)把手里的工作先停下來,然后去接電話,當(dāng)接完電話后,電話里的人安排你馬上做一件事,這時(shí)你需要立刻去
    發(fā)表于 03-24 14:27 ?1次下載

    Arm 推出 Armv9 邊緣 AI 計(jì)算平臺(tái),以超高能效與先進(jìn) AI 能力賦能物聯(lián)網(wǎng)革新

    電子發(fā)燒友網(wǎng)報(bào)道(文/黃晶晶)當(dāng)下,快速發(fā)展的 AI 正不斷賦予邊緣設(shè)備越來越先進(jìn)的智能性,使邊緣設(shè)備勝任越來越重要的任務(wù)。為應(yīng)對(duì)邊緣側(cè)持續(xù)增長(zhǎng)的 AI 需求,Arm 近日發(fā)布以全新基于 Armv9
    的頭像 發(fā)表于 03-06 11:43 ?1313次閱讀
    Arm 推出 <b class='flag-5'>Armv9</b> 邊緣 AI 計(jì)算平臺(tái),以超高能效與先進(jìn) AI 能力賦能物聯(lián)網(wǎng)革新

    搶先試用此芯Armv9 AI PC開發(fā)套件瑞莎“星睿O6”

    、邊緣、機(jī)器人等不同場(chǎng)景的“星睿O6”開發(fā)套件 。 該套件于2024年12月發(fā)布,異構(gòu)集成Armv9 CPU核心、Arm Immortalis GPU及安謀科技“周易”NPU等自研業(yè)務(wù)產(chǎn)品,具備強(qiáng)大的多媒體處理能力,并支持靈活的接口與擴(kuò)展。其中搭載的“周易”NPU算力可達(dá)30TOPS,目前已成功適配多款
    的頭像 發(fā)表于 03-06 08:09 ?667次閱讀
    搶先試用此芯<b class='flag-5'>Armv9</b> AI PC開發(fā)套件瑞莎“星睿O6”

    Arm發(fā)布基于Armv9架構(gòu)的Cortex-A320處理器

    邊緣 AI 需要更卓越的計(jì)算性能、更強(qiáng)大的安全性,以及更出色的軟件靈活性。隨著軟件愈發(fā)復(fù)雜化,Armv9 架構(gòu)應(yīng)運(yùn)而生,以提供先進(jìn)的機(jī)器學(xué)習(xí) (ML) 和 AI 功能,并具備增強(qiáng)的安全特性。該架構(gòu)現(xiàn)已在 Cortex-A3xx 的超高能效系列實(shí)現(xiàn),為新一代邊緣 AI 應(yīng)用
    的頭像 發(fā)表于 02-27 17:10 ?790次閱讀

    Arm推出全球首個(gè)Armv9邊緣AI計(jì)算平臺(tái)

    全球首個(gè) Armv9 邊緣 AI 計(jì)算平臺(tái)以 Cortex-A320 CPU 和 Ethos-U85 NPU 為核心,專為物聯(lián)網(wǎng)應(yīng)用優(yōu)化,支持運(yùn)行超 10 億參數(shù)的端側(cè) AI 模型,已獲得包括亞馬遜云科技 (AWS)、西門子和瑞薩電子等在內(nèi)的多家行業(yè)領(lǐng)先企業(yè)的支持。
    的頭像 發(fā)表于 02-27 17:08 ?885次閱讀

    單片機(jī)中斷技術(shù)詳解

    在現(xiàn)代電子設(shè)備,單片機(jī)作為控制核心發(fā)揮著舉足輕重的作用。而在其高效運(yùn)作的背后,中斷機(jī)制是推動(dòng)單片機(jī)實(shí)現(xiàn)實(shí)時(shí)響應(yīng)與高效執(zhí)行的關(guān)鍵因素。本文將深入探討單片機(jī)中斷概念、
    的頭像 發(fā)表于 02-02 15:57 ?966次閱讀

    讓ADS7864的BUSY腳接DSP的外部中斷INT0,DSP通過中斷來讀取采樣數(shù)據(jù),要不要先關(guān)INT0中斷呢?

    我讓ADS7864的BUSY腳接DSP的外部中斷INT0,DSP通過中斷來讀取采樣數(shù)據(jù)。請(qǐng)問在中斷服務(wù)程序,要不要先關(guān)INT0中斷呢?如
    發(fā)表于 01-13 06:11

    基于Armv9架構(gòu)的MediaTek天璣8400移動(dòng)芯片問世

    如今,基于 Armv9 CPU 技術(shù)構(gòu)建的人工智能 (AI) 旗艦智能手機(jī)立于技術(shù)前沿,為 AI 創(chuàng)新提供了前所未有的機(jī)遇。為了應(yīng)對(duì)持續(xù)增長(zhǎng)的 AI 工作負(fù)載的計(jì)算強(qiáng)度及復(fù)雜度,Armv9.2 CPU 集群帶來了更強(qiáng)性能、更高效率,以及更多功能,為新一代 AI 奠定了扎實(shí)
    的頭像 發(fā)表于 12-24 14:18 ?777次閱讀

    一文詳解Arm架構(gòu)Armv9.6-A的最新功能

    Arm CPU 是當(dāng)今人工智能 (AI) 賦能軟件的關(guān)鍵,它可解釋、處理和執(zhí)行指令。Arm 指令集架構(gòu) (ISA) 作為硬件和軟件的接口,指示處理器做什么和怎么做。Arm ISA 持續(xù)演進(jìn)以滿足現(xiàn)代
    的頭像 發(fā)表于 12-17 10:22 ?3468次閱讀
    一文<b class='flag-5'>詳解</b>Arm架構(gòu)<b class='flag-5'>Armv</b>9.6-A<b class='flag-5'>中</b>的最新功能

    TLV320AI3101在錄音播放出來的聲音頻譜上可以明顯看出有和失真破音,怎么解決?

    你好,我們現(xiàn)在錄音播放出來的聲音頻譜上可以明顯看出有和失真破音的問題。在比較嘈雜的環(huán)境 錄音。 相關(guān)硬件接口如圖,問題出在寄存器配置嗎?這方面是菜鳥,請(qǐng)高手知道
    發(fā)表于 11-04 06:36

    Armv9 CPUSVE2的實(shí)際用例

    隨著每一代新產(chǎn)品的推出,Arm CPU 都會(huì)實(shí)現(xiàn)代際性能提升,并引入架構(gòu)改進(jìn),以滿足不斷演進(jìn)的計(jì)算工作負(fù)載的需求。本文將重點(diǎn)介紹三個(gè)用例,以展示 Armv9 CPU 的架構(gòu)特性在實(shí)際場(chǎng)景中產(chǎn)
    的頭像 發(fā)表于 10-21 09:54 ?1077次閱讀
    <b class='flag-5'>Armv9</b> CPU<b class='flag-5'>中</b>SVE2的實(shí)際用例

    連塊應(yīng)用于飛控測(cè)試環(huán)境斷線測(cè)試箱

    連塊概述Overviewofdisconnectedblocks連塊是一種用于電路中斷連接的連接器,廣泛應(yīng)用于電子測(cè)試設(shè)備和通信系統(tǒng)。它能夠在特定條件下,通過手動(dòng)插拔精準(zhǔn)地
    的頭像 發(fā)表于 10-09 08:06 ?754次閱讀
    <b class='flag-5'>斷</b>連塊應(yīng)用于飛控測(cè)試環(huán)境斷線測(cè)試箱

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

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