欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

你對(duì)中斷究竟有多了解?

Dp1040 ? 來源:技術(shù)讓夢想更偉大 ? 2023-06-16 16:41 ? 次閱讀

如果要你講一下中斷,你會(huì)怎么去描述一個(gè)中斷的觸發(fā)流程呢?

最基礎(chǔ)的可能就是:保護(hù)現(xiàn)場 - 中斷處理 - 恢復(fù)現(xiàn)場...

那保護(hù)現(xiàn)場做了什么事情?中斷處理需要注意什么事情?恢復(fù)現(xiàn)場又做了什么事情?

相對(duì)應(yīng)的,關(guān)于中斷,還有很多這樣的問題:

觸發(fā)中斷的因素有哪些?

各中斷源如何向CPU提出中斷請(qǐng)求?

CPU如何區(qū)分是哪個(gè)中斷觸發(fā)的請(qǐng)求?

當(dāng)多個(gè)中斷源同時(shí)提出中斷請(qǐng)求時(shí),中斷系統(tǒng)如何確定優(yōu)先響應(yīng)哪個(gè)中斷請(qǐng)求?

CPU在什么條件、什么時(shí)候、以什么方式來響應(yīng)中斷?

CPU響應(yīng)中斷后,如何保護(hù)現(xiàn)場?

CPU響應(yīng)中斷后,如何停止源程序的執(zhí)行而轉(zhuǎn)入中斷服務(wù)程序的入口地址?

CPU響應(yīng)中斷結(jié)束后,如何恢復(fù)現(xiàn)場?如何返回到源程序的間斷處?

在中斷處理的過程中又出現(xiàn)了新的中斷請(qǐng)求,CPU該如何處理?

設(shè)計(jì)中斷系統(tǒng)時(shí),需要考慮哪些主要問題?

本文希望就以上的問題,對(duì)中斷觸發(fā)和響應(yīng)流程進(jìn)行一個(gè)詳細(xì)的描述。力求可以通過一篇文章將中斷講明白!

首先,我先簡單的描述一個(gè)中斷的觸發(fā)流程:

我們通過某些操作(例如按下按鍵),產(chǎn)生了電信號(hào)(電平觸發(fā) / 邊沿觸發(fā));

這些電平信號(hào),通過硬件上的中斷引腳,被傳遞到了中斷控制器;

如果該中斷沒有被關(guān)閉/屏蔽,中斷控制器會(huì)向CPU發(fā)送中斷請(qǐng)求;

CPU收到中斷請(qǐng)求后,判斷是否響應(yīng)該中斷;

(保護(hù)現(xiàn)場)如果一切條件滿足,響應(yīng)中斷,將當(dāng)前正在運(yùn)行的程序上下文保存到寄存器/堆棧中;

(中斷處理)CPU尋找中斷服務(wù)程序的入口地址,跳轉(zhuǎn)到中斷服務(wù)程序運(yùn)行;

(恢復(fù)現(xiàn)場)中斷處理結(jié)束后,CPU會(huì)將之前保存在堆棧中的斷點(diǎn)和寄存器重新恢復(fù);

CPU繼續(xù)運(yùn)行之前被打斷的程序。

在上述例子中,相關(guān)的問題如下:

產(chǎn)生中斷的方式有哪些?

答:主動(dòng)觸發(fā)、軟件觸發(fā)、硬件觸發(fā)。

主動(dòng)觸發(fā)(程序中通過函數(shù)接口,通知CPU進(jìn)行中斷處理)

內(nèi)部中斷(數(shù)據(jù)溢出、非法地址訪問、未識(shí)別的操作碼...)

外部中斷(輸入/輸出設(shè)備、硬件設(shè)備故障...)

CPU如何區(qū)分是哪個(gè)中斷源觸發(fā)的請(qǐng)求?

答:中斷引腳+中斷號(hào)。

每一個(gè)能夠發(fā)出中斷請(qǐng)求的硬件設(shè)備控制器都有一條名為“IRQ”的輸出線。

所有的IRQ輸出線都與一個(gè)名為可編程中斷控制器的硬件電路輸入引腳相連。

中斷控制器會(huì)監(jiān)視IRQ線上的信號(hào)。

如果IRQ線上出現(xiàn)信號(hào),中斷控制器會(huì)將其轉(zhuǎn)化成對(duì)應(yīng)的中斷號(hào),通知CPU處理。

CPU根據(jù)中斷號(hào),在中斷向量表中找到對(duì)應(yīng)的中斷處理程序

外部設(shè)備進(jìn)行I/O操作時(shí),會(huì)隨機(jī)產(chǎn)生中斷請(qǐng)求信號(hào)。這個(gè)信號(hào)中會(huì)有特定的標(biāo)志,使計(jì)算機(jī)能夠判斷是哪個(gè)設(shè)備提出中斷請(qǐng)求,這個(gè)信號(hào)就叫做中斷號(hào)。

中斷號(hào)一般是由中斷控制器提供的,中斷控制器支持一系列的中斷源,并提供對(duì)應(yīng)的中斷號(hào)。中斷引腳也是由中斷控制器上引出來的。

即中斷控制器將中斷引腳和中斷號(hào)關(guān)聯(lián)起來,CPU又將中斷號(hào)和中斷處理程序關(guān)聯(lián)起來,

最終實(shí)現(xiàn)了通過中斷引腳上的信號(hào),觸發(fā)CPU去執(zhí)行中斷處理程序。

當(dāng)多個(gè)中斷源同時(shí)提出中斷請(qǐng)求時(shí),中斷系統(tǒng)(中斷控制器)如何確定優(yōu)先響應(yīng)哪個(gè)中斷請(qǐng)求?

答:中斷優(yōu)先級(jí)+中斷屏蔽

為使系統(tǒng)能及時(shí)響應(yīng)并處理發(fā)生的所有中斷,系統(tǒng)根據(jù)引起中斷事件的重要性和緊迫程度,硬件將中斷源分為若干個(gè)級(jí)別,稱作中斷優(yōu)先級(jí)。

在實(shí)際系統(tǒng)中,常常遇到多個(gè)中斷源同時(shí)請(qǐng)求中斷的情況,這時(shí)CPU必須確定首先為哪一個(gè)中斷源服務(wù),以及服務(wù)的次序。

解決的方法是中斷優(yōu)先排隊(duì),即根據(jù)中斷源請(qǐng)求的輕重緩急,排好中斷處理的優(yōu)先次序即優(yōu)先級(jí)( Priority ),又稱優(yōu)先權(quán),先響應(yīng)優(yōu)先級(jí)最高的中斷請(qǐng)求。

另外,當(dāng)CPU正在處理某一中斷時(shí),要能響應(yīng)另一個(gè)優(yōu)先級(jí)更高的中斷請(qǐng)求,而屏蔽掉同級(jí)或較低級(jí)的中斷請(qǐng)求,形成中斷嵌套。

CPU在什么時(shí)候、什么條件、以什么方式來響應(yīng)中斷?

答:可以從產(chǎn)生中斷、接收中斷、執(zhí)行中斷角度去描述。

中斷控制器對(duì)應(yīng)的中斷引腳上收到信號(hào)(產(chǎn)生中斷),中斷未被屏蔽、中斷優(yōu)先級(jí)最高(接收中斷),CPU當(dāng)前處于可以切換上下文的狀態(tài)(執(zhí)行中斷)。

CPU響應(yīng)中斷條件:

有中斷源發(fā)出的中斷請(qǐng)求;

中斷總允許位EA=1,即CPU開中斷;

申請(qǐng)中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽;

無同級(jí)或更高級(jí)中斷正在被服務(wù);

當(dāng)前的指令周期已經(jīng)結(jié)束。

(保護(hù)現(xiàn)場)CPU響應(yīng)中斷后,在開始執(zhí)行中斷服務(wù)程序之前,需要做哪些操作?如何保護(hù)現(xiàn)場?如何保存原程序斷點(diǎn)?

答:簡單來說就是,寄存器、堆棧、壓棧。

保護(hù)現(xiàn)場就是當(dāng)出現(xiàn)中斷時(shí),把CPU的狀態(tài),也就是當(dāng)前程序地址保存在寄存器中,隨后轉(zhuǎn)向執(zhí)行其他任務(wù),當(dāng)任務(wù)完成,從寄存器中取出地址繼續(xù)執(zhí)行。保護(hù)現(xiàn)場其實(shí)就是保存中斷前一時(shí)刻的狀態(tài)不被破壞。

CPU保護(hù)現(xiàn)場做如下動(dòng)作:

將標(biāo)志寄存器內(nèi)容壓入堆棧,以保護(hù)中斷時(shí)的狀態(tài);

將IF和TF標(biāo)志清0,目的是防止在中斷響應(yīng)的同時(shí)又來別的中斷,而將TF清0是為了防止CPU以單步方式執(zhí)行中斷處理子程序。這時(shí)要特別提醒,因?yàn)镃PU在中斷響應(yīng)時(shí)自動(dòng)關(guān)閉了IF標(biāo)志,因此用戶如要進(jìn)行中斷嵌套時(shí),必須在自己的中斷處理子程序中用開中斷指令來重新設(shè)置IF;

保護(hù)斷點(diǎn),斷點(diǎn)指的是在響應(yīng)中斷時(shí),主程序當(dāng)前指令下面的一條指令的地址。因此保護(hù)斷點(diǎn)的動(dòng)作就是將當(dāng)前的IP和CS的內(nèi)容入棧,保護(hù)斷點(diǎn)是為了以后正確地返回主程序;

Ps:保護(hù)現(xiàn)場應(yīng)該包括保護(hù)程序斷點(diǎn)和保護(hù)CPU內(nèi)部各寄存器內(nèi)容的現(xiàn)場倆個(gè)方面

Ps:主程序和中斷服務(wù)子程序都要使用CPU內(nèi)部寄存器等資源,為使中斷處理程序不破壞主程序中寄存器的內(nèi)容,應(yīng)先將斷點(diǎn)處各寄存器的內(nèi)容壓入堆棧保護(hù)起來,再進(jìn)入的中斷。

(執(zhí)行中斷)CPU響應(yīng)中斷后,如何轉(zhuǎn)入中斷服務(wù)程序運(yùn)行?

答:中斷向量表。

CPU響應(yīng)中斷做如下動(dòng)作:

根據(jù)中斷號(hào)(由中斷控制器傳遞),在中斷向量表中找出相應(yīng)的中斷服務(wù)程序的入口地址,跳轉(zhuǎn)至中斷服務(wù)子程序執(zhí)行。

Ps:驅(qū)動(dòng)在申請(qǐng)注冊中斷時(shí),會(huì)將中斷服務(wù)程序和中斷號(hào)進(jìn)行綁定。

Ps:中斷號(hào)是由中斷控制器提供的,中斷控制器將對(duì)應(yīng)的中斷號(hào)和中斷引腳進(jìn)行綁定。

(恢復(fù)現(xiàn)象)CPU響應(yīng)中斷結(jié)束后,在開始執(zhí)行中斷服務(wù)程序之后,需要做哪些操作?如何恢復(fù)現(xiàn)場?如何返回到原程序的斷點(diǎn)處?

答:簡單來說就是,寄存器、堆棧、出棧。

恢復(fù)現(xiàn)場就是指將各寄存器和指針恢復(fù)到中斷前的狀態(tài)。

當(dāng)中斷處理完畢后,CPU將原程序保存在堆棧中的各個(gè)寄存器的內(nèi)容彈出,即恢復(fù)原程序斷點(diǎn)處寄存器的原值。

CPU保護(hù)現(xiàn)場做如下動(dòng)作:

恢復(fù)斷點(diǎn),斷點(diǎn)指的是在響應(yīng)中斷時(shí),原程序當(dāng)前指令下面的一條指令的地址。因此恢復(fù)斷點(diǎn)的動(dòng)作就是將先前的指針和寄存器的內(nèi)容出棧,即恢復(fù)原程序斷點(diǎn)處寄存器的原值;

將IF和TF標(biāo)志置1,允許接收新的中斷;

審核編輯:湯梓紅

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

    關(guān)注

    68

    文章

    10911

    瀏覽量

    213152
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    900

    瀏覽量

    41796
  • 中斷系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    96

    瀏覽量

    61079
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3798

    瀏覽量

    81464

原文標(biāo)題:你對(duì)中斷究竟有多了解?試著把中斷的觸發(fā)流程整理了一遍...

文章出處:【微信號(hào):玩點(diǎn)嵌入式,微信公眾號(hào):玩點(diǎn)嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    都說IC設(shè)計(jì)高薪行業(yè),薪水究竟有多高?大家來曬曬

    IC設(shè)計(jì)高薪行業(yè),薪水究竟有多?大家來曬曬
    發(fā)表于 12-19 16:16

    分布式RAM和Block RAM之間究竟有什么區(qū)別?

    您好!分布式RAM和Block RAM之間究竟有什么區(qū)別?兩者都只是芯片內(nèi)存,對(duì)吧?但我不知道兩者之間的區(qū)別。和..下一個(gè)問題.. isaboutMUX ..根據(jù)7系列概述,7系列FPGA支持全范圍
    發(fā)表于 07-19 06:37

    物聯(lián)網(wǎng)生物識(shí)別技術(shù)究竟有何意義?

    說到物聯(lián)網(wǎng)生物識(shí)別技術(shù)大家感覺脫離我們的日常生活,本文帶大家近距離了解物聯(lián)網(wǎng)生物識(shí)別技術(shù)究竟有何意義?各位工程師讀完此文心里就清楚多了
    發(fā)表于 10-21 09:57

    液晶PC與液晶電視究竟有什么區(qū)別?

    為什么要選擇液晶?液晶PC與液晶電視究竟有什么區(qū)別?如何選擇液晶PC與液晶電視?
    發(fā)表于 06-07 06:13

    請(qǐng)問一下RFID與NFC究竟有什么關(guān)系?

    RFID與NFC究竟有什么關(guān)系?
    發(fā)表于 06-15 07:06

    面向列的HBase存儲(chǔ)結(jié)構(gòu)究竟有什么樣的不同之處呢?

    HBase是什么?HBase的存儲(chǔ)結(jié)構(gòu)究竟是怎樣的呢?面向列的HBase存儲(chǔ)結(jié)構(gòu)究竟有什么樣的不同之處呢?
    發(fā)表于 06-16 06:52

    請(qǐng)問一下芯片制造究竟有多難?

    請(qǐng)問一下芯片制造究竟有多難?
    發(fā)表于 06-18 06:53

    PCI-E4.0究竟有什么優(yōu)勢?

    PCI-E4.0究竟有什么優(yōu)勢?PCI-E究竟指的是什么呢?
    發(fā)表于 06-18 06:54

    LPDDR5和LPDDR4X兩者究竟有多大區(qū)別?

    有人說嵌入式閃存芯片LPDDR5和LPDDR4X差不多?真的如此嗎?兩者究竟有多大區(qū)別?
    發(fā)表于 06-18 06:15

    內(nèi)存時(shí)序究竟有多重要呢?究竟該如何去選擇內(nèi)存條呢?

    內(nèi)存時(shí)序究竟有多重要呢?究竟該如何去選擇內(nèi)存條呢?DDR內(nèi)存時(shí)序是高一些好還是低一些好?
    發(fā)表于 06-18 08:20

    OpenPLC開源工業(yè)控制器究竟有何用處

    OpenPLC開源工業(yè)控制器有哪些優(yōu)點(diǎn)?OpenPLC開源工業(yè)控制器有哪些功能?OpenPLC開源工業(yè)控制器究竟有何用處?
    發(fā)表于 09-02 07:42

    計(jì)算機(jī)硬件計(jì)量單位究竟有什么含義

    在我們購買和日常使用計(jì)算機(jī)的過程中,不可避免地會(huì)遇到一些硬件計(jì)量單位,也許這些單位都可以朗朗上口,可是,它們究竟有什么含義?相關(guān)聯(lián)的單位之間的換算關(guān)系是怎樣的?對(duì)硬件的性能有什么影響?恐怕了解
    發(fā)表于 09-08 07:31

    戶外電源究竟有什么功能與細(xì)節(jié)呢

    電源的詳細(xì)功能以及具體細(xì)節(jié),這會(huì)讓的戶外移動(dòng)電源使用增添許多麻煩。那么戶外電源究竟有什么功能與細(xì)節(jié)呢?相信看完以下內(nèi)容會(huì)讓戶外愛好者對(duì)戶外電源的便利之處理解更上一層樓。一、多種輸出、輸入方式戶外移動(dòng)電源一般都會(huì)存在多種輸出、輸入方式。在輸出方面,一般會(huì)提供DC、AC、U
    發(fā)表于 12-30 07:52

    嵌入式與單片機(jī)它們之間究竟有什么區(qū)別

    什么是嵌入式?什么是單片機(jī)?嵌入式與單片機(jī)它們之間究竟有什么區(qū)別?
    發(fā)表于 01-19 06:27

    共模電感選型依據(jù)究竟有哪些

    電子發(fā)燒友網(wǎng)站提供《共模電感選型依據(jù)究竟有哪些.docx》資料免費(fèi)下載
    發(fā)表于 05-06 10:26 ?1次下載