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

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

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

openEuler Kernel技術(shù)內(nèi)核中斷子系統(tǒng)介紹

openEuler ? 來(lái)源:openEuler ? 作者:openEuler ? 2022-04-20 09:06 ? 次閱讀

很多人在學(xué)習(xí)中斷子系統(tǒng)的過(guò)程中,在對(duì)基本概念與整體不太了解的情況下,過(guò)早的陷入了各種架構(gòu)的實(shí)現(xiàn)細(xì)節(jié),如同盲人摸象。這里主要給大家明確中斷的各個(gè)基本概念,希望從這個(gè)角度能讓大家更好的理解中斷子系統(tǒng)。

什么是中斷

在計(jì)算機(jī)科學(xué)中,中斷(英語(yǔ):Interrupt)是指處理器接收到來(lái)自硬件或軟件的信號(hào),提示發(fā)生了某個(gè)事件,應(yīng)該被注意,這種情況就稱(chēng)為中斷。中斷子系統(tǒng)中的中斷指的是其中硬件的一方,后續(xù)中斷均按此理解。

中斷處理的參與對(duì)象和流程

中斷處理中有著多個(gè)對(duì)象的參與,理解每個(gè)對(duì)象在其中是如何參與是很重要的。以下列舉了中斷處理的參與對(duì)象。

中斷事件:指中斷事件本身的抽象。

中斷號(hào):用于硬件和軟件識(shí)別并區(qū)分中斷事件,需要注意同一個(gè)中斷事件在中斷處理的不同階段未必是同一個(gè)中斷號(hào)。

中斷源:有中斷事件需要 cpu 處理的硬件。

中斷控制器:非必須,用于解決系統(tǒng)擁有多中斷源場(chǎng)景的硬件;從中斷源接收中斷事件并傳遞到 cpu;可以級(jí)聯(lián)。

cpu:收到中斷,cpu 跳轉(zhuǎn)到特定的地址——中斷向量。由中斷向量開(kāi)始軟件對(duì)中斷的處理。

中斷事件在硬件中的流程如下,上一行是中斷事件的體現(xiàn)形式,下一行是所在的硬件:

307ba222-c045-11ec-bce3-dac502259ad0.png

再把軟件處理結(jié)合起來(lái),形成一個(gè)硬件軟件切換的過(guò)程:

30992400-c045-11ec-bce3-dac502259ad0.png

相鄰的中斷事件體現(xiàn)形式的映射方式可以在所在的對(duì)象的連接的實(shí)現(xiàn)中找到。

中斷子系統(tǒng)

現(xiàn)在把之前的流程具有的部分對(duì)比內(nèi)核中斷子系統(tǒng),可以發(fā)現(xiàn)還多出了一個(gè)通用中斷處理層。因?yàn)閮?nèi)核需要支持各種不同的架構(gòu)與外設(shè),需要解耦架構(gòu)硬件相關(guān)部分(cpu 與中斷控制器)與非架構(gòu)相關(guān)(外設(shè)),使得開(kāi)發(fā)外設(shè)驅(qū)動(dòng)并不需要了解架構(gòu)相關(guān)部分。另一方面,系統(tǒng)硬件拓?fù)浣Y(jié)構(gòu)的信息一般由設(shè)備樹(shù)源碼 DTS 體現(xiàn)。

30abe1bc-c045-11ec-bce3-dac502259ad0.png

硬件封裝層

硬件封裝層包括 cpu 和中斷控制器兩部分。區(qū)分開(kāi) cpu 和中斷控制器相當(dāng)重要,希望大家能更明確 cpu 和中斷控制器的概念。軟件在 cpu 方面主要需要按架構(gòu)實(shí)現(xiàn)中斷向量的處理,可以看 arch/「/kernel/entry」.S 的匯編實(shí)現(xiàn)。另外還需要為通用的開(kāi)關(guān)中斷方法提供架構(gòu)實(shí)現(xiàn):

通用中斷開(kāi)關(guān)方法 具體架構(gòu)中斷開(kāi)關(guān)實(shí)現(xiàn)
local_irq_enable arch_local_irq_enable
local_irq_disable arch_local_irq_disable

這個(gè) local 指的是 local_cpu,表示的是當(dāng)前 cpu 是否響應(yīng)中斷:當(dāng)前 cpu 關(guān)中斷的情況下,中斷控制器不管怎么玩都是徒勞的。事實(shí)上 cpu 對(duì)中斷開(kāi)關(guān)的實(shí)現(xiàn)還包含著很多條件,類(lèi)似特權(quán)態(tài)、非屏蔽中斷 NMI 之類(lèi)的,可以在后文找下具體分析。軟件對(duì)中斷控制器的抽象是 struct irq_chip,體現(xiàn)的是中斷控制器所具體的行為。這里列舉部分重要成員講解:

起因 struct irq_chip 成員 說(shuō)明
怎么控制中斷控制器是否屏蔽某個(gè)中斷事件? irq_enable/ irq_disable
中斷控制器如何配置中斷事件的觸發(fā)方式 irq_set_type 控制各個(gè)中斷的電氣觸發(fā)條件,例如邊沿觸發(fā)或者是電平觸發(fā)。
中斷控制器如何得知中斷事件被 cpu 響應(yīng)? irq_ack 中斷控制器在實(shí)現(xiàn)中會(huì)根據(jù)中斷事件被 cpu 開(kāi)始響應(yīng)或完成響應(yīng)來(lái)決定該中斷事件類(lèi)型是否會(huì)再度通知 cpu 處理。
中斷控制器如何得知 cpu 完成處理中斷事件? irq_eoi 中斷控制器在實(shí)現(xiàn)中會(huì)根據(jù)中斷事件被 cpu 開(kāi)始響應(yīng)或完成響應(yīng)來(lái)決定該中斷事件類(lèi)型是否會(huì)再度通知 cpu 處理。
在 smp 系統(tǒng)中,中斷事件應(yīng)該通知哪個(gè) cpu? irq_set_affinity affinity 表示了中斷事件在中斷控制器中配置的目標(biāo) cpu,根據(jù)具體實(shí)現(xiàn)可以是 1 個(gè)或多個(gè)。

此外,當(dāng)多個(gè)中斷事件同時(shí)發(fā)生,中斷控制器會(huì)根據(jù)其優(yōu)先級(jí)的實(shí)現(xiàn)來(lái)決定中斷事件通知給 cpu 的順序,某些實(shí)現(xiàn)是可配置的。另一方面,考慮到系統(tǒng)中可能存在多個(gè)中斷控制器,使得單一中斷控制器的中斷號(hào)不足以區(qū)分中斷事件,所以引入了軟件中斷號(hào)的概念。加上硬件中斷號(hào)映射中斷號(hào)的軟件抽象 struct irq_domain,再看中斷控制器軟件抽象到中斷源軟件抽象的流程:

30d10938-c045-11ec-bce3-dac502259ad0.png

##中斷流控處理層這一層主要是隱藏了中斷控制器在具體中斷事件處理函數(shù)調(diào)用前后的一些處理邏輯,包括:

何時(shí)對(duì)中斷控制器發(fā)出 ack 回應(yīng)?

mask_irq 和 unmask_irq 的處理;

中斷控制器是否需要 eoi 回應(yīng)?

何時(shí)打開(kāi) cpu 的本地 irq 中斷?以便允許 irq 的嵌套;

類(lèi)似于在用洗衣機(jī)洗衣服的時(shí)候,我們不關(guān)心衣服可能要經(jīng)歷過(guò)的洗滌多久、脫水多久、漂洗多久諸如此類(lèi)的步驟細(xì)節(jié),只需要按衣服類(lèi)型選擇流程;內(nèi)核引入中斷流程的抽象類(lèi)型 irq_flow_handler_t 屏蔽了中斷事件相關(guān)的 cpu、中斷控制器和中斷源的屬性的不同帶來(lái)的處理流程差異。這里舉例部分內(nèi)核實(shí)現(xiàn):

handle_simple_irq:用于簡(jiǎn)易流控處理。

handle_level_irq:用于電平觸發(fā)中斷的流控處理。

handle_edge_irq:用于邊沿觸發(fā)中斷的流控處理。

handle_fasteoi_irq:用于需要響應(yīng) eoi 的中斷控制器

handle_percpu_irq:用于只在單一 cpu 響應(yīng)的中斷。

驅(qū)動(dòng)程序 API 與中斷通用邏輯

對(duì)于中斷事件本身,內(nèi)核使用 struct irq_desc 進(jìn)行描述,它包含著所有的信息。而對(duì)于中斷控制器與中斷源的驅(qū)動(dòng)來(lái)說(shuō),關(guān)注的信息都只是其中的一部分。中斷事件從中斷源到中斷控制器的映射的描述一般事先會(huì)靜態(tài)定義好并存放在設(shè)備樹(shù)源碼里,即中斷源的設(shè)備樹(shù)節(jié)點(diǎn)包含著相連的中斷控制器和中斷事件對(duì)應(yīng)在中斷控制器中斷號(hào)的信息;而作為驅(qū)動(dòng)程序需要對(duì)軟件中斷號(hào) irq 和中斷事件處理函數(shù)建立映射。那么要把設(shè)備樹(shù)節(jié)點(diǎn)中的中斷控制器和中斷控制器中斷號(hào)轉(zhuǎn)換成軟件中斷號(hào) irq,內(nèi)核給驅(qū)動(dòng)程序提供了接口

irq_of_parse_and_map:驅(qū)動(dòng)由設(shè)備樹(shù)節(jié)點(diǎn)獲得 irq。

當(dāng)中斷控制器和中斷控制器中斷號(hào)轉(zhuǎn)換成軟件中斷號(hào) irq 映射不存在時(shí),這個(gè)接口會(huì)申請(qǐng) irq_desc 并建立映射,根據(jù)連接著的中斷控制器的驅(qū)動(dòng)提供的硬件中斷號(hào)映射中斷號(hào)的軟件抽象 irq_domain 完成映射。在映射過(guò)程中會(huì)包括對(duì) irq_desc 的一些屬性的設(shè)置,如:

irq_set_handler:驅(qū)動(dòng)選擇 irq_flow_handler。

irq_set_chip:驅(qū)動(dòng)選擇 irq 連接的中斷控制器。

irq_alloc_desc 系列:驅(qū)動(dòng)直接申請(qǐng) irq_desc。

中斷源驅(qū)動(dòng)獲取到 irq,還需要將 irq 與中斷處理函數(shù)建立映射:

request_irq/request_threaded_irq:驅(qū)動(dòng)將中斷處理函數(shù)注冊(cè)到 irq。

enable_irq & disable_irq:驅(qū)動(dòng)開(kāi)關(guān) irq。

接下來(lái)將對(duì)一些具體的架構(gòu)實(shí)現(xiàn)做介紹。這里介紹兩個(gè)處理器 armv8 和 x86,以及兩個(gè)中斷控制器 arm-gicv3 和 x86-APIC 的實(shí)現(xiàn)。希望幫助大家得出諸如“arm 內(nèi)核有中斷嵌套嗎”“arm cpu eoi 是做什么”這類(lèi)問(wèn)題的答案。

armv8

arm 核心擁有 2 個(gè)外部中斷線,IRQ 和 FIQ;這兩根中斷線連接到中斷控制器上,中斷控制器通過(guò)拉高和拉低這兩根中斷線觸發(fā)中斷。一個(gè)中斷應(yīng)該觸發(fā) IRQ 還是 FIQ 中斷線,由其 GROUP 屬性和當(dāng)前的特權(quán)級(jí)和安全域決定。

30e3b93e-c045-11ec-bce3-dac502259ad0.png

GROUP 的定義:

311a2032-c045-11ec-bce3-dac502259ad0.png

arm 核,軟件可以寫(xiě) SCR、HCR 和 PSTATE.DAIF 寄存器以決定響應(yīng)中斷的特權(quán)級(jí)和屏蔽中斷;arm 不支持 NMI。arm 核由于中斷控制器的實(shí)現(xiàn),同時(shí)只會(huì)有一個(gè)需要被響應(yīng)的中斷,因此不限制 IRQ/FIQ 響應(yīng)順序的實(shí)現(xiàn)。arm 核上處于觸發(fā)狀態(tài)的中斷線需要結(jié)合 SCR、HCR 和 PSTATE.DAIF 寄存器判斷是否觸發(fā)中斷,不論當(dāng)前是否處于中斷。在中斷觸發(fā)時(shí),arm 核心根據(jù) VBAR 系列寄存器的基地址,會(huì)按具體情況選擇偏移跳轉(zhuǎn)到對(duì)應(yīng)的地址。

312d13d6-c045-11ec-bce3-dac502259ad0.png

x86

Intel x86 架構(gòu)提供 INTR 和 NMI 兩個(gè)中斷引腳,他們通常與 Local APIC 相連, 用于接收 Local APIC 傳遞的中斷信號(hào)。一個(gè)中斷應(yīng)該觸發(fā) INTR 還是 NMI 中斷線由 Local APIC 實(shí)現(xiàn)。

315d2ada-c045-11ec-bce3-dac502259ad0.png

x86,中斷都在 ring0 響應(yīng)。x86 上軟件使用 CLI 指令將本 CPU 的 EFLAGS 寄存器的 IF 位清 0,阻止接收中斷;STI 指令將 IF 位置為 1,允許接收中斷。這兩條指令都只對(duì)當(dāng)前 CPU 起作用,而不影響平臺(tái)上的其他 CPU。x86 中斷線的實(shí)現(xiàn)原生支持 NMI。x86 核上同時(shí)只會(huì)有一個(gè)需要被響應(yīng)的中斷,它由 Local APIC 從 IRR 中選擇;當(dāng) Local APIC 不使能時(shí),優(yōu)先響應(yīng) NMI 中斷線。不論當(dāng)前是否處于中斷,x86 核上若 INTR 處于觸發(fā)且未屏蔽中斷即會(huì)觸發(fā)中斷;NMI 處于觸發(fā)則直接觸發(fā)中斷。中斷觸發(fā)時(shí),x86 核根據(jù)寄存器 IDTR 記錄的基址和中斷控制器的寄存器 ISR 提供的中斷向量號(hào)找到 IDT 表中對(duì)應(yīng)的 Interrupt Gate 表項(xiàng),跳轉(zhuǎn)到相應(yīng)的地址。

arm-gicv3

31782344-c045-11ec-bce3-dac502259ad0.png

從邏輯視圖上看,gicv3 的核外部分統(tǒng)稱(chēng) IRI,由 Distributor、ITS、Redistributor 這 3 種組件組成;gicv3 核內(nèi)部分是 CPU interface,PE 可以理解為 cpu;IRI 與 CPU interface 通過(guò) GIC Stream Protocol interface 交互。

不同的中斷在 gic 上對(duì)應(yīng)著不同的 INTID;gic 把中斷類(lèi)型分為 LPI、PPI、SPI、SGI,約束 INTID 取值對(duì)應(yīng)的中斷類(lèi)型。SGI 指由 CPU 直接寫(xiě)對(duì)應(yīng)的寄存器觸發(fā)中斷;PPI 指中斷為特定一個(gè) CPU 私有/專(zhuān)用,同一中斷號(hào)的 PPI 在不同 CPU 可以指不同的中斷源;SPI 對(duì)應(yīng) PPI,是所有 CPU 全局共享的,同一中斷號(hào)的 SPI 在不同 CPU 均指相同的中斷源;LPI 的區(qū)分是中斷路由上的不同,主要是在 IRI 中由 ITS 路由的中斷,其余 3 種中斷均不經(jīng)過(guò) ITS;某些實(shí)現(xiàn)下還有直接在 Redistributor 觸發(fā)的 LPI 中斷。

319b65c0-c045-11ec-bce3-dac502259ad0.png

31b4e522-c045-11ec-bce3-dac502259ad0.png

一個(gè)外部中斷從在外設(shè)上產(chǎn)生,依次經(jīng)過(guò) IRI、CPU interface 并最終通過(guò)中斷線到達(dá) PE;PE 產(chǎn)生的中斷需要先經(jīng)過(guò) CPU interface 到 IRI,再到目標(biāo)的 CPU interface 和 PE。邏輯上,IRI 可以對(duì)應(yīng)多個(gè) PE,因此對(duì)于需要被一個(gè)特定目標(biāo) PE 響應(yīng)的中斷,gicv3 通過(guò)引入 affinity routing 機(jī)制解決這種路由問(wèn)題。同一時(shí)間,CPU interface 上只能存在一個(gè)待處理的中斷,對(duì)于多個(gè)中斷被發(fā)送到 CPU interface 上,gic 引入優(yōu)先級(jí)的機(jī)制來(lái)決定如何選擇保留的中斷;這個(gè)優(yōu)先級(jí)的機(jī)制還被運(yùn)用在 IRI 上,優(yōu)先級(jí)更高的中斷會(huì)被優(yōu)先發(fā)送到 CPU interface。另外,CPU interface 還負(fù)責(zé)將這個(gè)待處理的中斷按照 GROUP 屬性和當(dāng)前的特權(quán)級(jí)和安全域決定觸發(fā) IRQ 還是 FIQ 中斷線;并且當(dāng) PE 當(dāng)前處于中斷時(shí),CPU interface 還需要通過(guò)中斷優(yōu)先級(jí)分組的機(jī)制判斷待處理的中斷是否需要被通知給 PE,即搶占。

x86-APIC

315d2ada-c045-11ec-bce3-dac502259ad0.png

從邏輯視圖上看,APIC 的核外部分是 I/O APIC,核內(nèi)部分是 Local APIC。I/O APIC 根據(jù)內(nèi)部 PRT table 中的 RTE 發(fā)送中斷消息給 Local APIC。I/O APIC 中 PRT table 由 24 個(gè) RTE 項(xiàng)組成,每一項(xiàng)對(duì)應(yīng)一個(gè) IRQ 引腳。I/O APIC 可以有多個(gè),當(dāng)多個(gè) I/O APIC 存在時(shí),使用 GSI 代表每個(gè) I/O APIC 管腳的編號(hào):例如 I/O APIC1 有 24 個(gè) IRQ,I/O APIC2 也有 24 個(gè) IRQ,則 I/O APIC2 的 GSI 是從 24 開(kāi)始,GSI = 24 + IRQ(I/O APIC2)。I/O APIC 的 24 個(gè)管腳沒(méi)有優(yōu)先級(jí)之分。一個(gè)外部中斷經(jīng)過(guò) I/O APIC 再到 Local APIC,最后由 Local APIC 控制中斷線在 CPU 上觸發(fā)中斷;CPU 內(nèi)部的中斷源由 Local APIC 管理,不需要經(jīng)過(guò) I/O APIC;IPI 也由 Local APIC 管理,同樣不需要經(jīng)過(guò) I/O APIC。

31dc24ca-c045-11ec-bce3-dac502259ad0.png

Local APIC 支持 0-255 的中斷向量號(hào),它們可以同時(shí)存在于寄存器 IRR 上,引入中斷優(yōu)先級(jí)進(jìn)行選擇:優(yōu)先級(jí) = 中斷向量號(hào) / 16因?yàn)?32 以下的中斷向量號(hào)是保留的,所以可用中斷優(yōu)先級(jí)范圍為 2-15,數(shù)字越大優(yōu)先級(jí)越高;當(dāng)優(yōu)先級(jí)高于寄存器 PPR 的情況下會(huì)操作 INTR 中斷線,若當(dāng)前已經(jīng)處于中斷則可能出現(xiàn)搶占。中斷向量號(hào)的低 4 位會(huì)在當(dāng) PPR 改變的情況下,ISR 從 IRR 上選擇中斷向量號(hào)的比較中使用,同樣也是數(shù)字越大優(yōu)先級(jí)越高。

審核編輯 :李倩

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

    關(guān)注

    68

    文章

    19048

    瀏覽量

    228517
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16039

    瀏覽量

    176730

原文標(biāo)題:openEuler Kernel 技術(shù)解讀 | 內(nèi)核中斷子系統(tǒng)介紹

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深度解析linux時(shí)鐘子系統(tǒng)

    linux內(nèi)核中實(shí)現(xiàn)了一個(gè)CLK子系統(tǒng),用于對(duì)上層提供各模塊(例如需要時(shí)鐘信號(hào)的外設(shè),USB等)的時(shí)鐘驅(qū)動(dòng)接口,對(duì)下層提供具體SOC的時(shí)鐘操作細(xì)節(jié)。
    的頭像 發(fā)表于 09-29 16:46 ?166次閱讀
    深度解析linux時(shí)鐘<b class='flag-5'>子系統(tǒng)</b>

    Linux內(nèi)核測(cè)試技術(shù)

    內(nèi)核測(cè)試技術(shù)是實(shí)現(xiàn)這一目標(biāo)的關(guān)鍵手段。本文將詳細(xì)介紹 Linux 內(nèi)核測(cè)試的各種技術(shù),包括單元測(cè)試、集成測(cè)試、功能測(cè)試和性能測(cè)試等,并討論
    的頭像 發(fā)表于 08-13 13:42 ?353次閱讀
    Linux<b class='flag-5'>內(nèi)核</b>測(cè)試<b class='flag-5'>技術(shù)</b>

    潤(rùn)和軟件受邀參與openEuler 24.03 LTS發(fā)布

    發(fā)布會(huì)匯聚操作系統(tǒng)產(chǎn)業(yè)界頂尖力量,共探openEuler社區(qū)技術(shù)、生態(tài)、國(guó)際化發(fā)展,共建健康可持續(xù)發(fā)展的開(kāi)源操作系統(tǒng)根社區(qū)。會(huì)上,openEuler
    的頭像 發(fā)表于 06-15 10:07 ?691次閱讀

    SoC芯片設(shè)計(jì)系列-ARM CPU子系統(tǒng)組件介紹

    在ARM架構(gòu)的CPU子系統(tǒng)中,組件設(shè)計(jì)旨在高效地整合了多種功能模塊,以支持處理器核心的運(yùn)行、內(nèi)存管理、中斷處理、數(shù)據(jù)交換以及與外部設(shè)備的交互等。
    的頭像 發(fā)表于 05-31 10:56 ?2259次閱讀
    SoC芯片設(shè)計(jì)系列-ARM CPU<b class='flag-5'>子系統(tǒng)</b>組件<b class='flag-5'>介紹</b>

    鴻蒙開(kāi)發(fā)學(xué)習(xí):【驅(qū)動(dòng)子系統(tǒng)

    OpenHarmony驅(qū)動(dòng)子系統(tǒng)采用C面向?qū)ο缶幊棠P蜆?gòu)建,通過(guò)平臺(tái)解耦、內(nèi)核解耦,兼容不同內(nèi)核,提供了歸一化的驅(qū)動(dòng)平臺(tái)底座,旨在為開(kāi)發(fā)者提供更精準(zhǔn)、更高效的開(kāi)發(fā)環(huán)境,力求做到一次開(kāi)發(fā),多系統(tǒng)
    的頭像 發(fā)表于 03-17 22:05 ?500次閱讀
    鴻蒙開(kāi)發(fā)學(xué)習(xí):【驅(qū)動(dòng)<b class='flag-5'>子系統(tǒng)</b>】

    基于 PCIe 的多路視頻采集與顯示子系統(tǒng)介紹

    電子發(fā)燒友網(wǎng)站提供《基于 PCIe 的多路視頻采集與顯示子系統(tǒng)介紹.pdf》資料免費(fèi)下載
    發(fā)表于 02-23 09:47 ?0次下載

    Linux內(nèi)核自解壓過(guò)程分析

    uboot完成系統(tǒng)引導(dǎo)以后,執(zhí)行環(huán)境變量bootm中的命令;即,將Linux內(nèi)核調(diào)入內(nèi)存中并調(diào)用do_bootm函數(shù)啟動(dòng)內(nèi)核,跳轉(zhuǎn)至kernel的起始位置。
    的頭像 發(fā)表于 12-08 14:00 ?789次閱讀
    Linux<b class='flag-5'>內(nèi)核</b>自解壓過(guò)程分析

    51單片機(jī)中斷系統(tǒng)介紹

    51單片機(jī)中斷系統(tǒng)介紹與運(yùn)用外部中斷系統(tǒng)觸發(fā)數(shù)碼管顯示數(shù)字的代碼實(shí)驗(yàn)
    發(fā)表于 12-05 09:10 ?1次下載

    kernel到android核心啟動(dòng)過(guò)程

    kernel_init 與kthreadd,創(chuàng)建完后系統(tǒng)通過(guò)init_idle_bootup_task蛻化為idle進(jìn)程(cpu_idle)。 調(diào)用kernel_thread()創(chuàng)建1號(hào)內(nèi)核
    的頭像 發(fā)表于 12-04 16:59 ?788次閱讀
    <b class='flag-5'>kernel</b>到android核心啟動(dòng)過(guò)程

    菁蓉聯(lián)創(chuàng)獲得首個(gè)openEuler嵌入式操作系統(tǒng)技術(shù)測(cè)評(píng)證書(shū)

    近日,成都菁蓉聯(lián)創(chuàng)科技有限公司(簡(jiǎn)稱(chēng):菁蓉聯(lián)創(chuàng))攜手四川鯤鵬&歐拉生態(tài)創(chuàng)新中心完成首個(gè)openEuler嵌入式操作系統(tǒng)技術(shù)測(cè)評(píng)證書(shū)。
    的頭像 發(fā)表于 11-28 10:18 ?929次閱讀
    菁蓉聯(lián)創(chuàng)獲得首個(gè)<b class='flag-5'>openEuler</b>嵌入式操作<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>技術(shù)</b>測(cè)評(píng)證書(shū)

    kernel日志寫(xiě)入logd介紹

    kernel日志寫(xiě)入logd介紹 通過(guò)logcat命令獲取kernel日志比較特殊,故作為一個(gè)例子進(jìn)行梳理。 2.3.1 整體流程 2.3.2 命令打印kernel日志 通過(guò)logca
    的頭像 發(fā)表于 11-23 17:11 ?565次閱讀
    <b class='flag-5'>kernel</b>日志寫(xiě)入logd<b class='flag-5'>介紹</b>

    LInux 操作系統(tǒng)中斷介紹

    進(jìn)程來(lái)持有CPU進(jìn)行需要的操作! 有了中斷之后,提升了操作系統(tǒng)的性能!可以異步并行處理很多任務(wù)! 軟中斷(80中斷) 由CPU產(chǎn)生的;CPU檢查到程序代碼段發(fā)生異常會(huì)切換到
    的頭像 發(fā)表于 11-13 11:36 ?821次閱讀
    LInux 操作<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>中斷</b><b class='flag-5'>介紹</b>

    什么是LInux 操作系統(tǒng)中斷

    進(jìn)程來(lái)持有CPU進(jìn)行需要的操作! 有了中斷之后,提升了操作系統(tǒng)的性能!可以異步并行處理很多任務(wù)! 軟中斷(80中斷) 由CPU產(chǎn)生的;CPU檢查到程序代碼段發(fā)生異常會(huì)切換到
    的頭像 發(fā)表于 11-10 11:29 ?539次閱讀
    什么是LInux 操作<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>中斷</b>

    中斷與硬中斷介紹

    由程序安排好的。 由與系統(tǒng)相連的外設(shè)(比如網(wǎng)卡、硬盤(pán))自動(dòng)產(chǎn)生的。主要是用來(lái)通知操作系統(tǒng)系統(tǒng)外設(shè)狀態(tài)的變化。比如當(dāng)網(wǎng)卡收到數(shù)據(jù)包 的時(shí)候,就會(huì)發(fā)出一個(gè)中斷。我們通常所說(shuō)的
    的頭像 發(fā)表于 11-07 17:02 ?807次閱讀

    RK3568外部IO中斷示例

    ?外部IO中斷介紹本篇文章以萬(wàn)象奧科HD-RK3568-IOT評(píng)估板中GPIO30為例,介紹Linux內(nèi)核中斷的注冊(cè)方法,使用
    的頭像 發(fā)表于 11-03 13:56 ?840次閱讀
    RK3568外部IO<b class='flag-5'>中斷</b>示例