娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

arm GIC介紹之一

發布者:自在自由最新更新時間:2024-11-08 來源: cnblogs關鍵字:arm  GIC 手機看文章 掃描二維碼
隨時隨地手機看文章

GIC是ARM架構中及其重要的部分,本文只在公開ARM對應資料基礎上,以MTK開發板為基礎整理。個人理解之后記錄,鞏固和加深認識,僅此而已,如果有錯誤,歡迎指出。

 

1. GIC的概述

看過SOC架構的同學知道,CPU接受外部的中斷處理請求,并進行處理,其實是一個被動接受的過程,這樣好處是既能

保證主任務的執行效率,又能及時獲知外部的請求,從而處理重要的設備請求操作。

如圖:

 

  

 

GIC的全稱為general interrupt controller,主要作用可以歸結為:

接受硬件中斷信號,并進行簡單處理,通過一定的設置策略,分給對應的CPU進行處理。

這樣的圖比較簡單,可以看下在ARM完整的SOC結構中,其位置是什么樣的:

 

這是ARM比較新的架構圖,其中CORELINK CCI-500是片上互聯總線,也就是AMBA,在這總線上面掛了不同的設備。比如NIC-400設備,這可以理解為network interface設備,在這個設備上使用者可以再連接其它需要的器件。那么cpu,也就是cortex-72(大核)和cortex-53(小核)也是掛在總線上。上接GIC-500,也就是我們說的中斷控制器,這個圖其實是邏輯上的,實際中,GIC-500也是有線連接到CCI-500上,通過CCI-500和cpu連接交互,ARM的Distributor應該是為表示cpu和GIC之間的關系,才將其邏輯圖表示成大家看到的。詳細的可以參考ARM的官方網站介紹。

 

2.硬件中斷的分類和GIC的組成

2.1 GIC_V2的介紹

我們知道了GIC的大致用途,那么它包含了那些部分,如果工作的,有什么特殊的地方呢。

OK,我們一個一個來。先來看下GIC的大致組成結構:


這是經典的GIC V2圖,實際上大家能看到的經典的圖也是這個。

2.1.1中斷源的分類

這里面把硬件中斷源分為了3類:

SPI:這是shared peripheral interrupt , 這是常見的外部設備中斷,也定義為共享中斷,比如按鍵觸發一個中斷,手機觸摸屏觸發的中斷,共享的意思是說

可以多個Cpu或者說Core處理,不限定特定的Cpu。一般定義的硬件中斷號范圍31~1019.

PPI:這里指的是private peripheral interrupt,16~31,私有中斷,為什么這樣說呢,這些中斷一般是發送給特定的Cpu的,比如每個Cpu有自己對應的Physicaltimer,產生的中斷信號就發送給這個特定的cpu進行處理。比如ARM_V8平臺上的:

 

在設備上,cat /proc/interrupts可以看到:


 

SGI:這個中斷有些同學遇到的比較少,software generatedinterrupt,軟件出發產生的中斷,中斷號范圍0~15,也就是最前的16個中斷。如果在X86平臺上做過開發工作的同學可能有影響,其實這就是相當于IPI,簡單的說Cpu_1要給Cpu_2發送特定信息,比如時間同步,全局進程調度信息,就通過軟件中斷方式,目標Cpu接受到這樣的中斷信息,可以獲取到信息是哪個Cpu發送過來的,具體的中斷ID是哪個數字,從而找到對應處理方式進行處理。比如MTK上的:


2.1.2 GIC的組成

這是硬件中斷的分類。

那么GIC控制器完成這樣的中斷信號收集和分發工作,也劃分了幾個功能部分,見上面第2個圖。包含2個部分:

 

Distributor和CPU interface.

Distributor:

The Distributor block performs interruptprioritization anddistribution to the CPU interface
blocks that connect to the processors in the system. The Distributor blockregisters are identified by the GICD_ prefix

The Distributor provides a programminginterface for:
? Globally enabling the forwarding of interrupts to the CPU interfaces.

? Enabling or disabling eachinterrupt.
? Setting the priority level of each interrupt.
? Setting the target processor list of each interrupt.
? Setting each peripheral interrupt to be level-sensitive oredge-triggered.
? Setting each interrupt as either Group 0 or Group 1.

CPU Interface:

Each CPU interface block provides theinterface for a processorthat is connected to the GIC. Each CPUinterfaceprovides

a programming interface for:
? enabling the signaling of interrupt requests to the processor
? acknowledging an interrupt
? indicating completion of the processing of an interrupt
? setting an interrupt priority mask for the processor
? defining the preemption policy for the processor
? determiningthe highest priority pending interrupt for the processor .

這是其英文解釋,其實總的來說:

Distributor,做為一個中斷路由的設備,主要完成工作:

對整個中斷控制器設備的使能等操作。

對每一個中斷的優先級控制。

對每一個中斷的觸發方式設置。

對沒一個中斷的目標發送CPU進行設置,決定分發到哪個具體的CPU上進行處理。

對中斷的去向,是到G0還是G1,這個是安全域的概念。我們后面補充GIC V3和V4的概念再展開說。

記錄每個中斷的狀態,是否到來,是否處理中,是否處理完,是否在等待發送狀態等等。

那么,CPUInterface主要工作是:

使能和發送一個具體的中斷信號到特定對應的CPU上,

確認具體中斷已經被CPU接受,處理,以及處理完成。

設置cpu能接受的中斷的優先級別。以及對應的基于級別的中斷搶斷等處理。

所以,從第二個圖來說。中斷信號先到Distributor,然后根據設定目標CPU,送到CPU對應的Interface上,在這里仲裁是否優先級足夠高,

是否可以搶斷或者打斷當前的終端處理等,如果可以,那么CPU Interface就發送一個物理的SIGNAL到CPU的IRQ接線上,CPU感知到中斷信號,

從而轉到中斷模式進行處理。

那么途中帶*號的IRQ和FIQ是什么意思呢?

FIQ是Fastinterrupt request,這是ARM上定義的一種中斷處理方式,某些終端需要快速處理完成,在這種情況下,CPU會簡化操作,然后退出中斷。

那么從留向來說,途中是直接到CPU側的,沒有經過Distributor?

是的,我們說過,Distributor可以被使能,等各種操作,那么當其主功能暫時關閉了怎么辦呢,這就又了BYPASS功能,一個已將IRQ直接繞過它,

送到CPU側,在某些情況下這可以作為一個喚醒的信號源去WAKE UP 對應的CPU,或者可以設置成為X86上的NMI,也就是不可屏蔽中斷來處理。

2.2 GIC_V3的介紹

在現在市面上看到的手機或者其它設備產品中,既有老的V2版本的中斷控制器,也有比較新的V3結構的,而且是在不斷向后演進,我們有必要依照新的V3的來說明,畢竟,這是后面的趨勢,比如現在大家現在可以看到GIC_V4的介紹了。

好,我們切入正題,在之前介紹GIC_V2的基礎上我們擴展下。


在上圖中,我們在GIC_V3的基礎上整理出這樣的結構圖,其實主題結構和V2是大致一樣的,但是我們會發現,多了Redistributor這樣的組件,這是為啥呢?另外,我也也看到cpuinterface移到GIC外面了,為啥這樣表示邏輯圖呢?多出來的LPI這個中斷是做什么用的?

2.2.2 GIC中斷

其實,LPI解釋為LPI (Locality-specific Peripheral Interrupt)。

所有的中斷類型可以分為:

SGI:software generated Interrupt

軟件觸發的中斷,這個和之前解釋的一致。

PPI:Private Peripheral Interrupt

私有中斷類型,這個和之前解釋的也是一致。但是PPI直接到Redistributor,繞過, 這是因為增加的Redistributor一個是為LPI需要,特殊的中斷類型,既然PPI是各自CPU都有的,就沒必要再經過之前的Distributor

來分發了,這樣也導致了其中的寄存器等也做了修改。我們后面介紹寄存器時候再說明。

SPI:SharedPeripheral InterruptDistributor

共享外圍硬件中斷,這個也是和GIC_V2解釋一樣的ID32-ID1019。

但是,多了LPI(Locality-specific Peripheral Interrupt)
LPIs are new in GICv3, and they are different to the other types of interruptin a number of ways . In particular, LPIs are always message-based interrupts,and their configuration is held in tables in memory rather than registers.

這是一個基于消息的中斷類型,是ARM為后續的SERVER等產品做的擴展。


在傳統的GIC流程中如上圖,外圍設備的中斷觸發線是引出到GIC上的,這樣可以理解為一個物理的SIGNAL,比如一個高電平信號,邊沿觸發信號。


但是實際上在現在GIC_V3中,中斷可以依照MESSAGEBASED方式來觸發,外圍設備的終端信號先到INTERCONNECT(AMBA總線),然后片上總線再給GIC發送一個消息,這個作為一個IRQ來源,這就是基于消息的中斷的簡單解釋,當然這個需要總線,SOC等做調整適配,在這里我們不展開來說,有興趣的同學可以看看CCI-500等總線如何定義信號燈細節的。

我們這樣來表示下整個圖:


從ITS是Interrupt Translate service,如果我們只看圖右側的部分,X86上經典的PCI總線,經過一系列轉換發送一個中斷到X86的CPU上,從而處理。那么現在我要直接把這部分搬到arm,由于體系架構不同,中斷控制器邏輯和流程都不一樣, X86對應APIC-IO 和Local APIC這樣的終端控制邏輯。

但是我們可以這樣來處理:

  1. 我們增加一個ITS,在這里定義好特定的消息,包含消息從哪里來的,比如PCI-ROOT,具體的設備編號,比如PCIe-endpoint對應的設備,可能是個音頻設備,或者簡單的按鍵,這都不是重點。關鍵是ITS可以根據定義好的配置,來把對PCI發來的中斷消息進行轉換,比如轉換成IRQ_ID:8200終端

  2. 這樣就可以發送到Redistributor上進行分發處理,和一般的IRQ類似,但是不經過Distributor,其中斷也沒有Pending狀態,如果處理不過來丟失了那就丟失了,不會特別的關注。

從現在我們看到的資料來說,還沒有看到LPI的具體應用,但是ARM已經在在很多方面為SERVER的架構做了調整,這也是其中一個,所以在這里會提示下,但不是我們介紹的重點。

 

2.2.2 GIC的組成

我們在上面圖中,給出GIC_V3已經之后對應的邏輯圖,從中可以看到幾個部分:

 

Distributor

The Distributor registers arememory-mapped, and contain global settings that affect all PEs
connected to the interrupt controller. The Distributor provides a programminginterface for:
· Interrupt prioritization and distribution of SPIs.
· Enabling and disabling SPIs.
· Setting the priority level of each SPI.
· Routing information for each SPI.
· Setting each SPI to be level-sensitive or edge-triggered.
· Generating message-based SPIs.
· Controlling the active and pending state of SPIs.
· Controls to determine the programmers’ model that is used in each Securitystate (affinity routing or legacy).

CPU Interface

Each Redistributor is connected to aCPU interface. The CPU interface provides a programming interface for:
· General control and configuration to enable interrupt handling.
· Acknowledging an interrupt.
· Performing a priority drop and deactivation of interrupts.
· Setting an interrupt priority mask for the PE.
· Defining the preemption policy for the PE.
· Determining the highest priority pending interrupt for the PE

Redistribute (V3,V4)

For each connected PE there is aRedistributor. The Redistributors provides a programming interface for:
· Enabling and disabling SGIs and PPIs.
· Setting the priority level of SGIs and PPIs.
· Setting each PPI to be level-sensitive or edge-triggered.
· Assigning each SGI and PPI to an interrupt group.
· Controlling the state of SGIs and PPIs.
· Base address control for the data structures in memory that support theassociated interrupt properties and    pending state for LPIs.
· Power management support for the connected PE.

其實之前對應的Distributor 和CPU Interface也還是一致的,但是Distributor不再處理PPI這樣的中斷,PPI直接送到Redistribute來處理,另外Redistribute也會處理LPI類型中斷,其它邏輯上和我們之前介紹的是相似的,在這里不再重復。

 

2.3 IRQ生命周期

從GIC角度來說,一個中斷可以分為幾個階段,對應不同的狀態:


當GIC上配置的中斷,配置好之后,沒有其對應的中斷到來,或者之前處理的中斷已經完全結束了,這個可以表示為

Deactive狀態或者Inactive,如果中斷信號到來,GIC獲取到了,這個時候要經過一系列的的判斷,然后送給對應的CPU來處理,在CPU確認該中斷并處理之前,狀態是Pending,如果CPU獲取到了該終端確認要處理了,那么久變為Active狀態。這個時候,對應的GIC上終端信號線可能依舊有效,比如高電平觸發的終端信號還沒有被拉低,或者說又來一個同樣的終端,那就是Activeand Pending。

2.4 IRQ Group


在ARM中,新的架構上引入了EX的概念,如果Ex0/1/2/3,以及安全域和非安全域,這個我會在補充個Topic:TRUSTZONE來說明,或者大家也查看資料來理解ARM的工作模式,比如FIQ/IRQ等傳統模式。只是現在ARM淡化了這樣模式,使用Ex,exception level 0/1/2/3,比如我們看到的ANDROID APP就是在Ex0,也就是USER空間,Ex1是我們常見的KERNEL空間。Ex2是對應的Hypervisor,虛擬化對應的空間,那么Ex3就是最好的權限和異常級別,這里可以由各個芯片廠家自己定義來添加對應的如ATF底層功能。

另外還在CPU上劃分了SECURE 和NON-SECURE空間,這需要ARM對應的控制寄存器等來進行權限控制。

所以,IRQ的發到一個CPU上,還需要知道送到哪個Ex去處理,是送到KERNEL(Ex1)?還是安全域里面,這也在GIC里面進行配置,然后一個IRQ到來了才會往對應的寄存器里面發送。

OK,這概念比較抽象,我們在后面詳細介紹GIC主要的寄存器和功能時候,會介紹,如果能理解對應的寄存器和作用,那么GIC的組成和功能也就明白了。


關鍵字:arm  GIC 引用地址:arm GIC介紹之一

上一篇:ARM40-A5應用——fbset與液晶屏參數的適配
下一篇:arm GIC介紹之四

推薦閱讀最新更新時間:2025-03-28 21:00

ARM微處理器的七種運行模式
ARM微處理器的七種運行模式: 用戶模式(usr):正常的程序執行狀態 快速中斷模式(fiq):用于處理快速中斷,對高速數據傳輸或通道處理。 中斷模式(irq):對一般情況下的中斷進行處理。 管理模式(svc):操作系統使用的保護模式,處理軟件中斷swi reset。 系統模式(sys):運行具有特權的操作系統任務 數據訪問終止模式(abt):數據或指令預取終止時進入該模式,可用于處理存儲器故障、實現虛擬存儲器和存儲器保護。 未定義指令終止模式(und):未定義的指令執行時進入該模式,處理未定義的指令陷阱,當未定義的指令執行時進入該模式,可用于支持硬件協處理器的軟件仿真。 特別說明 運行模式可以通過軟件來進行
[單片機]
盤點 CES 2025 上基于 Arm 架構的 AI 創新和技術亮點
近期在美國拉斯維加斯舉行的 CES 2025 再次彰顯了其作為展示最新科技創新的重要平臺。 今年展會上所呈現的眾多前沿產品和新的發布將推動各個行業的變革與發展。 無論是自動駕駛領域的顯著進展、消費類電子技術市場的尖端科技,還是新的合作伙伴關系,Arm 亮相 CES 2025 凸顯了其致力于在人工智能 (AI) 時代驅動技術創新的堅定決心。 Arm 與阿斯頓·馬丁沙特阿美 F1 車隊達成具有里程碑意義的合作關系 Arm 在 CES 2025 上宣布與阿斯頓·馬丁沙特阿美一級方程式賽車?車隊建立具有里程碑意義的多年合作伙伴關系,Arm 成為車隊的“官方 AI 計算平臺合作伙伴”。Arm 的計算平臺將在 F1 領域推動 AI
[嵌入式]
盤點 CES 2025 上基于 <font color='red'>Arm</font> 架構的 AI 創新和技術亮點
高通在全球三大洲投訴ARM壟斷
北京時間3月26日,據彭博社報道,高通公司已在全球范圍內針對芯片設計公司ARM發起了一場反壟斷行動。目前,這兩家長期合作伙伴正在計算設備半導體市場爭奪優勢。 據知情人士透露,高通在與全球三大洲監管機構舉行的私下會議以及提交的機密文件中,指控其最大供應商ARM存在反競爭行為。 知情人士稱,高通已向歐盟委員會、美國聯邦貿易委員會和韓國公平貿易委員會提交投訴,指控ARM在運營開放生態網絡超過20年后,通過限制對其技術的訪問來損害市場競爭。 高通是全球最大手機芯片制造商。該公司認為,ARM通過開放授權模式使業界對其技術形成高度依賴,同時也促成了芯片產業的蓬勃發展。但是,這一充滿活力的市場如今正受到威脅,因為ARM正通過限制技術訪問來推動自
[半導體設計/制造]
學習ARM開發(20)
有了前面的Tick中斷,那么基本的任務切換條件已經是“萬事俱備,只欠東風”了。不過,這個“東風”也是很難搞得懂的,只有不斷地通過實踐才會找到合適的方法。現在我就需要去找這個東風了,就是解決不同的任務切換的問題。從簡單到復雜,這是任何事物的認識過程,也是行之有效的方法。絕對不要一上來就搞一個很復雜的,因為人的理解能力還是有限的。最簡單的任務切換,就是我需要實現的:只需要實現兩個任務不斷地來回切換,就已經說明可行了。那我先把這兩個任務設置為最簡單的,因此,就把任務的棧定下來,因為每個任務的棧是肯定不同的,所以我選擇了固定地設置棧地址。比如第一個任務的棧地址是0x0c700000,第二個任務的棧地址是0x0c700200。接著就需要把任
[單片機]
Arm Tech Symposia 年度技術大會即將啟幕,報名通道現已開啟
享譽業界的Arm? Tech Symposia 年度技術大會將于 2024年 11 月 19 日在上海浦東麗思卡爾頓酒店拉開帷幕,并于 11 月 21 日移師深圳灣萬麗酒店。 作為 Arm 一年一度最重要的技術盛會,本屆Arm Tech Symposia以“讓我們攜手重塑未來”為主題,將匯聚多位全球頂尖的技術領袖、生態伙伴和開發者,共同展示和探討AI時代下基于 Arm 技術的最新創新成果和未來發展趨勢。 在人工智能的浪潮中,生成式AI、邊緣AI、大語言模型、Chiplets、AI 基礎設施、智能駕駛等前沿科技正不斷突破,引領著應用場景創新。本次年度技術大會將聚焦這些激動人心的領域, 呈現六大精彩看點,敬請期待 : 1.4
[網絡通信]
Nordic Semiconductor 與 Arm 擴展合作關系
簽署最新低功耗處理器設計、軟件平臺和安全 IP 許可協議 Nordic簽署 Arm Total Access 授權許可協議,確保其現有和未來的多協議、Wi-Fi、蜂窩物聯網和DECT NR+ 產品具備業界領先的處理器和安全技術 挪威奧斯陸 – 2024年2月20日 – Nordic Semiconductor宣布與世界領先的半導體設計和軟件平臺企業Arm簽署一項多年期Arm Total Access (ATA)授權許可協議 。ATA 保證為Nordic當前和未來的產品 (包括多協議、Wi-Fi、蜂窩物聯網和 DECT NR+ 解決方案) 提供廣泛的Arm? IP、工具、支持和培訓。 兩家企業的合作始于 2012
[物聯網]
Nordic Semiconductor 與 <font color='red'>Arm</font> 擴展合作關系
Windows下基于ADS+J-Link 的ARM開發環境搭建
在一般ARM編程教學和實驗環境里,一般采用 ADS加+并口轉Jtag板+H-Jtag的開發環境。但是這種方法最大缺點是需要機器上有一個并口。現在無論PC還是筆記本都很難有并口,因此采用USB接口調試器就大行其道。其中Segger的JLink是比較有名和方便的調試器。 ADS 1.2 ,可以如下鏈接下載 http://esoft.mcu123.com/MCU123_temp_0080309@/ARM/ads1.2.rar 硬件可以參考這個 http://s.click.taobao.com/t_1?i=qz0qHj7qltKQRQ%3D%3D&p=mm_11796696_0_0&n=11 一.
[單片機]
arm920t中S3C2440、S3C2450和S3C6410的區別
  三星目前推出了S3C6400和S3C6410,都是基于ARM架構的,而且硬件管腳兼容,應該說大致的功能基本相同,比較明顯的區別就是S3C6410帶有2D/3D硬件加速   S3C2440其實是一個很不錯的CPU,價格便宜、內部資源多、最主要的是國內很多人使用,相關的資料比較多。ARM920T內核, 400M主頻,支持NAND FLASH、NORFLASH、SDRAM、支持STN/TFT LCD、4通道DMA、3通道UART、2通道SPI、IIC總線、IIS/AC97音頻控制器、SD/MMC控制器、2通道USB HOST 1通道USB DEVICE、4通道PWM、8通道A/D轉換、觸摸屏控制器、RTC、CMOS攝像頭、多功能
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 夏邑县| 靖宇县| 黎川县| 全州县| 剑川县| 辽阳县| 应城市| 鄂尔多斯市| 九龙县| 余江县| 措美县| 永年县| 祁阳县| 鞍山市| 邛崃市| 十堰市| 香河县| 曲阳县| 闵行区| 泰和县| 云阳县| 克东县| 开阳县| 南汇区| 云梦县| 渭源县| 西峡县| 广南县| 天津市| 永清县| 德江县| 甘泉县| 晋江市| 佳木斯市| 老河口市| 墨竹工卡县| 永寿县| 隆德县| 合作市| 万山特区| 东乡县|