www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 電源 > 功率器件
[導(dǎo)讀]什么是中斷?在處理器中,所謂中斷,是一個過程,即CPU在正在執(zhí)行程序過程中,遇到外部/內(nèi)部緊急事件需要處理,暫時中止當(dāng)前程序執(zhí)行轉(zhuǎn)而去為事件服務(wù),待服務(wù)完畢,再返回到

什么是中斷?

在處理器中,所謂中斷,是一個過程,即CPU在正在執(zhí)行程序過程中,遇到外部/內(nèi)部緊急事件需要處理,暫時中止當(dāng)前程序執(zhí)行轉(zhuǎn)而去

為事件服務(wù),待服務(wù)完畢,再返回到暫停處(斷點)繼續(xù)執(zhí)行原來的程序。為事件服務(wù)的程序稱之為中斷服務(wù)程序或中斷處理程序。嚴格來說上述過程是針對硬件中斷而言的,用軟件方法也可以引起中斷。硬件原因引起的中斷過程中是不可測的,隨機的,軟件中斷是可以人為控制的

斷點:一個地址,程序在該處中斷,轉(zhuǎn)而取執(zhí)行中斷程序的地址。

中斷源:引起中斷的信號源。

異常優(yōu)先級的概念

同時出現(xiàn)兩個中斷源,就會出現(xiàn)先處理哪個中斷的問題。出現(xiàn)這種問題以后,這里就產(chǎn)生一個中斷優(yōu)先級的概念。

ARM處理器中有7種類型的異常,按照優(yōu)先級從高到低的排列順序如下:

1.復(fù)位異常(reset)

2.數(shù)據(jù)異常(data abort)

3.快速中斷異常(fiq)

4.外部中斷異常(irq)

5.預(yù)取異常(prefetch abort)

6.軟件中斷(swi)

7.未定義指令異常(undef)

中斷:

硬中斷 內(nèi)部中斷(不可),外部中斷(可屏蔽),外部中斷:外部中斷一般是指由計算機外設(shè)發(fā)出的中斷請求,如:鍵盤中斷、打印機中斷、定時器中斷等。外部中斷是可以屏蔽的中斷,也就是說,利用中斷控制器可以屏蔽這些外部設(shè)備的中斷請求。內(nèi)部中斷:內(nèi)部中斷是指因硬件出錯(如突然掉電、奇偶校驗錯等)或運算出錯(除數(shù)為零、運算溢出、單步中斷等)所引起的中斷。內(nèi)部中斷是不可屏蔽的中斷。

軟中斷(不可),軟件中斷其實并不是真正的中斷,它們只是可被調(diào)用執(zhí)行的一般程序

中斷響應(yīng)流程圖

 

 

通用中斷控制器generic interrupt control

 

 

中斷號:每個中斷源都被分配了一個獨一無二的中斷號(0-1019)

中斷掩碼:在匯編語言中進行中斷前,需要對相應(yīng)的中斷狀態(tài)字進行授權(quán)允許或屏蔽相關(guān)中斷的操作。

GIC支持的三種中斷類型

軟件產(chǎn)生的中斷SGI,軟件生成的中斷寄存器(ICDSGIR)。 每個SGI都可以定位多個處理器。 在里面分銷商和有針對性的處理器中,SGI通過其中斷的組合來唯一標(biāo)識編號,ID0-ID15和發(fā)出處理器的處理器源ID(CPUID0-CPUID7)SGI。(SGI號 0-15)

私有的外設(shè)中斷PPI,在特定模式下使用的中斷Interrupt numbers ID16-ID31 are used for interrupts that are private to a CPU interface and are banked in theDistributor。(PPI號 0-15)

共享的外設(shè)中斷SPI,外設(shè)產(chǎn)生的可以發(fā)送給一個或多個核心處理的中斷源。Interrupt numbers ID32-ID1019 are used for SPIs.(SPI號 0-987)

 

 

中斷源

 

 

GIC中斷控制器框圖

 

 

The main blocks of the GIC are:

AMBA slave interface AMBA從屬接口

Distributor 分配器

CPU interface CPU接口

Clock and reset 時鐘和重置

Enable and match signals 啟用和匹配信號

GIC主要功能模塊:分配器和CPU接口

分配器接收中斷,并向相應(yīng)的CPU接口提供最高優(yōu)先級的中斷。 一個

優(yōu)先級較低的中斷在成為最高優(yōu)先級時轉(zhuǎn)發(fā)到相應(yīng)的CPU接口

待處理中斷。

GIC支持160個中斷,Total 160 interrupts including Software Generated Interrupts (SGIs[15:0], ID[15:0]), Private Peripheral Interrupts(PPIs[15:0], ID[31:16]) and Shared Peripheral Interrupts (SPIs[127:0], ID[159:32]) are supported. For SPI, you can

service a maximal 32 * 4 = 128 interrupt requests(SPI號)

分配器框架圖

 

 

The Distributor provides a programming interface for:

Enabling the forwarding of interrupts to the CPU interfaces globally.

Enabling or disabling each interrupt.

SetTIng the priority level of each interrupt.

SetTIng the target processor list of each interrupt.

SetTIng each peripheral interrupt to be level-sensiTIve or edge-triggered.

Setting each interrupt as either secure or Non-secure if the GIC implements the Security Extensions.

Sending an SGI to one or more target processors.

啟用全局中斷向CPU接口的轉(zhuǎn)發(fā)。

啟用或禁用每個中斷。

設(shè)置每個中斷的優(yōu)先級。

設(shè)置每個中斷的目標(biāo)處理器列表。

將每個外設(shè)中斷設(shè)置為電平敏感或邊沿觸發(fā)。

如果GIC執(zhí)行安全擴展,則將每個中斷設(shè)置為安全或不安全。

將SGI發(fā)送到一個或多個目標(biāo)處理器。

查看任意中斷的狀態(tài)

提供軟件方式設(shè)置或清除任意中斷的掛起狀態(tài)

中斷使用中斷號進行標(biāo)識,每個接口可以處理多達1020個中斷

Interrupts from sources are identified using ID numbers. Each CPU interface can see up to 1020 interrupts. The

distributor supports up to 1244 interrupts because of banking of SPIs and PPIs.

CPU接口

 

 

Programming interface for:

Enabling the signaling of interrupt requests by the CPU interface.

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.

Determining the highest priority pending interrupt for the processor.

編程接口

通過CPU接口發(fā)出中斷請求的信號。

確認中斷。

指示完成中斷的處理。

為處理器設(shè)置一個中斷優(yōu)先級掩碼。

為處理器定義搶占策略。

確定處理器的最高待處理中斷。

中斷狀態(tài)轉(zhuǎn)換圖

 

 

中斷狀態(tài)

inactive(無效) 中斷沒有發(fā)生

pending(待處理) 中斷發(fā)生,等待核心處理,待處理的中斷都作為通過CPU接口發(fā)送到核心處理的候選者。

active(正在處理) 中斷給了核心,目前正在進行中斷處理

active and pending (處理和待處理)一個中斷源正在被核心處理而GIC又接收到來自同一中斷源的中斷觸發(fā)信號。

轉(zhuǎn)換A1或A2,添加掛起狀態(tài)

對于SGI:

在寫入指定處理器為目標(biāo)的ICDSGIR時發(fā)生轉(zhuǎn)換。

只有在指定SGI的安全配置(適用于CPU接口)對應(yīng)于ICDSGIR.SATT位值。如果GIC執(zhí)行安全擴展和在Secure中寫入ICDSGIR。

對于SPI或PPI,如果出現(xiàn)以下情況,則發(fā)生轉(zhuǎn)換:

外設(shè)發(fā)出中斷信號或

軟件寫入ICDISPR。

轉(zhuǎn)換B1或B2,刪除掛起狀態(tài)

過渡不適用于SGI:

待處理的SGI應(yīng)該通過活動狀態(tài)進行轉(zhuǎn)換或重置以刪除其掛起狀態(tài)。

處于活動狀態(tài)的待處理SGI應(yīng)該通過掛起狀態(tài)進行轉(zhuǎn)換,或者進行重置以刪除掛起狀態(tài)。

對于SPI或PPI,如果出現(xiàn)以下情況,則發(fā)生轉(zhuǎn)換:

電平敏感的中斷僅在輸入信號有效時才處于等待狀態(tài),斷言或由于觸發(fā)了一個邊沿觸發(fā)的中斷信號,或者寫入一個中斷,中斷處于待處理狀態(tài)

ICDISPR。該軟件然后寫入相應(yīng)的ICDICPR。

過渡C.

如果中斷被啟用并且具有足夠的優(yōu)先級來向處理器發(fā)送信號,則軟件轉(zhuǎn)換發(fā)生從ICCIAR讀取。

過渡D.

對于SGI,如果關(guān)聯(lián)的SGI被啟用并且分發(fā)器將其轉(zhuǎn)發(fā)到CPU接口,則發(fā)生轉(zhuǎn)換同時處理器讀取ICCIAR以確認先前的SGI實例。是否

這種轉(zhuǎn)變的發(fā)生,取決于ICCIAR的閱讀時間與重新規(guī)定SGI的時間。

對于SPI或PPI:

轉(zhuǎn)換發(fā)生在

中斷使能。

從ICCIAR讀取軟件。該讀取將激活狀態(tài)添加到中斷。

- 中斷信號保持有效,用于電平敏感中斷。這是因為外設(shè)沒有中斷中斷直到處理器服務(wù)中斷。

對于邊沿觸發(fā)中斷,是否發(fā)生此轉(zhuǎn)換取決于讀取的時序ICCIAR相對于檢測到重新中斷的中斷。否則會導(dǎo)致ICCIAR的讀取

過渡C,可能之后是過渡A2。轉(zhuǎn)換E1或E2,刪除活動狀態(tài)

當(dāng)軟件寫入ICCEOIR時發(fā)生轉(zhuǎn)換。

外設(shè)和中斷控制器處理流程

 

 

按鍵狀態(tài)

低電平(按下去狀態(tài))

高電平(彈起來狀態(tài))

下降沿(高電平向低電平跳變的過程)

上升沿(低電平向高電平跳變的過程)

寄存器描述

ICCICR_CPUn 0x0000 CPU interface control register 0x0000_0000 CPU接口控制寄存器(CPU接口內(nèi)中斷送到相應(yīng)CPU)

ICCPMR_CPUn 0x0004 Interrupt priority mask register 0x0000_0000 中斷優(yōu)先級過濾寄存器(255所有中斷都被相應(yīng),0不相應(yīng)任何中斷)

ICDISERm_CPUn 0x0100 Interrupt set-enable register (SGI,PPI) 0x0000_FFFF 中斷使能寄存器(使能相應(yīng)中斷到分配器)

ICDIPTRm_CPUn 0x0800 Processor targets register (SGI[3:0]) 0x0101_0101 中斷目標(biāo)CPU配置寄存器(選擇CPU接口)

ICDDCR 0x0000 Distributor control register 0x0000_0000 分配器控制器(打開分配器)

ICCIAR_CPUn 0x000C Interrupt acknowledge register 0x0000_03FF 中斷響應(yīng)寄存器

ICCEOIR_CPUn 0x0010 End of interrupt register Undefined 中斷處理結(jié)束寄存器(清除CPU內(nèi)部相應(yīng)的中斷號)

ICDICPRm_CPUn 0x0280 Interrupt pending-clear register (SGI,PPI) 0x0000_0000 中斷狀態(tài)清除寄存器(清除相應(yīng)的中斷標(biāo)志位)

按鍵的寄存器配置

EXT_INT41_PEND 0x0F44 External interrupt EXT_INT41 pending register 0x0000_0000(配置按鍵的中斷pending)

EXT_INT41_CON 0x0E04 External interrupt EXT_INT41 configuration register 0x0000_0000(配置按鍵的觸發(fā)方式)

EXT_INT41_MASK 0x0F04 External interrupt EXT_INT41 mask register 0x0000_00FF(按鍵使能中斷)

按鍵的觸發(fā)方式

 

 

具體寄存器

ICDSER根據(jù)中斷號選擇對應(yīng)的專門管理所有中斷使能寄存器使能中斷

 

 

ICDPTRm_CPUn,中斷號為57-32=25,選ICDIPTR14

 

 

根據(jù)GIC Interrupt Table查出EINT[9]中斷號為57,SP1號為57-32=25,根據(jù)下圖,八位控制CPU的接口,這里我們的CPU只有四核,每個寄存器控制四個中斷的CPU接口選擇,SPI號為25,在SPI[27:24],這里我們的CPU接口為0,八位的值為0x00000001(選擇哪個接口哪個接口置1),所以這里配置為ICDIPTR.ICDIPTR14= 0X1 《《 8

 

 

 

 

具體事例代碼

/*

* main.c

*

* Created on: 2017-12-4

* Author: Administrator

*/

#include“exynos_4412.h”

voiddo_irq()

{

unsignedint irq_num;//獲取中斷號

irq_num = CPU0.ICCIAR& 0X3FF;

switch(irq_num)

{

case57:

printf(“i‘m key2 interrupter! interrupter id is %dn”,irq_num);

GPF3.DAT= 0x1 《《 4;

EXT_INT41_PEND = 0X1 《《 1;//中斷重啟

ICDICPR.ICDICPR1= 0X1 《《 25;//清理相應(yīng)的中斷標(biāo)志位

break;

case58:

printf(“i’m key3 interrupter! interrupter id is %dn”,irq_num);

GPF3.DAT= 0x1 《《 5;

EXT_INT41_PEND = 0x1 《《 2; // 清除相應(yīng)中斷源

ICDICPR.ICDICPR1= 1 《《 26;

break;

default:

printf(“interrupter not existn”);

break;

}

CPU0.ICCEOIR= (CPU0.ICCEOIR& ~(0x3ff)) | irq_num;//清理相應(yīng)的中斷號

}

voidmydelay_ms(inttime) {

inti, j;

while(time--) {

for(i = 0; i 《 5; i++)

for(j = 0; j 《 514; j++)

;

}

}

voidperipheral_init()

{

GPF3.CON= GPF3.CON& (~(0xf 《《 16)) | 0x1 《《 16;//燈

GPF3.CON= GPF3.CON& (~(0xf 《《 20)) | 0x1 《《 20;

GPX1.CON= GPX1.CON& (~(0xf 《《 4)) | 0xF 《《 4;//引腳位外部中斷

GPX1.CON= GPX1.CON& (~(0xf 《《 8)) | 0xF 《《 8;//引腳位外部中斷

EXT_INT41_CON = EXT_INT41_CON & (~(0X3 《《 4)) | (0X2 《《 4);//下降沿觸發(fā)

EXT_INT41_CON = EXT_INT41_CON & (~(0X3 《《 8)) | (0X2 《《 8);//下降沿觸發(fā)

EXT_INT41_MASK = EXT_INT41_MASK & (~(0X1 《《 1)); //使能中斷

EXT_INT41_MASK = EXT_INT41_MASK & (~(0X1 《《 2)); //使能中斷

}

voidgic_init()

{

ICDDCR =1;//使能分配器

CPU0.ICCICR= 0X1;//使能CPU接口

CPU0.ICCPMR= 0XFF;//優(yōu)先級最低,所有中斷都會響應(yīng)

ICDISER.ICDISER1= (0X1 《《 25) | (0x1 《《 26);

ICDIPTR.ICDIPTR14= (0X1 《《 8) | (0x1 《《 16); //中斷送到相應(yīng)CPU

}

intmain()

{

peripheral_init();

gic_init();

while(1)

{

printf(“working!n”);

GPF3.DAT= ~(0x3 《《 4);

mydelay_ms(800);

}

};

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉