PowerPC中斷系統簡介(一)

2021-08-15 20:37:34 字數 2995 閱讀 2830

powerpc

處理器的中斷系統由兩部分組成,一是核心的中斷及異常的處理;二是中斷控制器。以

p2020

處理器為例,包括

e500

核心中斷及異常處理系統和

openpic

中斷控制器。在

e500

核心中,包含兩種可以暫時中止處理器執行當前指令的事件、中斷和異常。其中,異常是由

e500

核心產生的,如出現非法指令,訪問儲存器時出現

tlb miss

等情況;而中斷通過處理器核心的外部引腳,如

int,

cint

和mcp

訊號有效時產生的事件。

中斷向量是指中斷或者異常程式的入口位址。基於

603e

核心的powerpc

處理器,中斷向量為乙個固定的實體地址。在這些處理器進入中斷和異常處理程式時,

mmu將會被自動關閉,因此

603e

核心可以使用固定的實體地址作為中斷向量。而

e500

核心在進入中斷和異常處理程式時,不能關閉

mmu,因此不能使用實體地址作為中斷向量,而應使用

ivpr

和ivor

暫存器儲存相應的中斷向量。

在e500

核心中,使用

ivpr

和ivorx

暫存器共同確定中斷或者異常程式的入口位址。其中,

ivpr

暫存器提供中斷程式入口位址的第

0~15

位,ivorx

提供中斷程式入口位址的第

16~27

位,而中斷程式的入口位址的第

28~31位為

0。ivorx

與異常的對應關係如圖1

.1所示:

.1e500

核心中斷向量表

e500

核心的外部中斷由三部分組成,分別為

machine check

異常、critical interrupt

異常和external input

異常。在

e500

核心中,

machine check

異常採用邊沿觸發

(edge-triggered)

,而critical interrupt

異常和external input

異常使用電平觸發(

level-triggered)。在

pic中,

p2020

處理器設定了一些暫存器位,將中斷對映為電平或者邊沿觸發,但這些中斷觸發條件需要以電平的形式傳遞給

e500

核心。e500

核心在進入中斷和中斷返回時都

要進行程式上下文的切換。頻繁的中斷將會極大影響處理器的效率。在

e500

核心中,乙個完整的中斷處理流程如下:

1.e500

核心捕捉到硬體中斷訊號

cint

、int

或者mcp。2.

e500

核心在捕捉到硬體中斷訊號後,需要做一些必要的準備,之後才可以進入外部中斷處理程式。這些準備帶來了一些外部中斷處理的延時,這些延時不可避免。首先

e500

核心清除在指令完成佇列

cq中的所有指令,除了以下三種指令:1)在

cq0中的對保護區域

(guarded)

的讀操作指令。

2)對禁止

cache

記憶體區域操作的指令。

3)stwcx.

指令。這些指令執行完畢後,

e500

核心才可以進入中斷模式。在清除

cq後,

e500

中斷處理模組從相應的中斷向量處預取指令到

iq中。這些中斷的預處理過程,其主要目的是為中斷處理程式準備乙個「乾淨」的空間,保證中斷處理程式與被中斷程式之間不相互干擾。由此可見,

e500

核心進入中斷處理程式之前,隱式地進行了指令同步操作。

3.e500

核心將中斷程式的返回位址儲存在

srr0

中;將程式的

msr暫存器儲存在

srr1

中。對於一些特殊的異常,如

dsi、

isi和

tlb miss

等,e500

核心還會自動保留

e500

核心的其他一些暫存器。

4.e500

核心將msr

暫存器的ce、

me、de位保留,其他位全部清零。因此

e500

核心在進行外部中斷處理程式時,仍然可以被

critical

中斷,machine check

中斷和除錯中斷程式重入,但是不能被外部中斷立即重入。在

linux powerpc

中,外部中斷處理程式會選擇合適時機使能

msr暫存器的

ee位,以支援外部中斷的重人。

5.msr

中的pr、ee

、is和ds

位將被清除,因此

e500

核心在超級使用者模式中,執行中斷處理程式時,對程式空間和資料空間的訪問都要在位址空間

0上進行。

6.e500

核心將根據

ivpr

,ivor4

暫存器確定中斷向量,進行中斷程式的執行。

7.在中斷處理程式執行完畢後,使用

rfi指令進行中斷返回。

rfi指令將從

srr1

暫存器中恢復

msr暫存器的值,並從

srr0

暫存器中獲得程式返回位址。

rfi指令在進行程式正文切換之前還會進行指令和資料的同步,還給被中斷的程式乙個「乾淨」的空間,之後

e500

核心進行中斷返回。

linux中斷系列之中斷簡介 一

第六章 第一節 中斷簡介 核心主要職責 管理系統中存在的各種裝置,一般以一下兩種方式管理 1 輪詢 核心一定週期訪問裝置,查詢裝置狀態並進行處理,裝置請求不能及時處理,大量消耗cpu資源。2 中斷 裝置在需要時通知核心,核心收到裝置的請求後在做出相應處理,即產生一種電訊號,通過中斷控制器發給cpu,...

powerpc 007 系統時鐘配置

這並不是乙個重複的小結課題!從這一次小結開始,打算切換乙個新的工程。少用彙編,多用c語言,畢竟c語言在工程實踐中應用更加廣泛。同時,切換乙個st的ide,因為我發現這裡面擁有類似arm的sdk驅動 生成方式。sdk的驅動 生成並不是很新鮮的東西,但是st的spc5studio是免費的,這就在學習上值...

(一)Linux系統簡介

linux嚴格來講是作業系統的核心,即kernel。核心直接操作計算機硬體,如記憶體管理 程序管理等等。那我們我們平時說的linux系統是什麼呢?linux系統 linux kernel gnu工具和庫 說到這裡,得講講linux是怎麼來的。在比爾蓋茨還在學高中數理化的時候,市面上一般都用unix作...