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

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

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

Linux中斷子系統(tǒng)Arch-speicific代碼分析

麥辣雞腿堡 ? 來源:LoyenWang ? 作者:LoyenWang ? 2023-09-28 15:27 ? 次閱讀

Arch-speicific代碼分析

  • 中斷也是異常模式的一種,當(dāng)外設(shè)觸發(fā)中斷時(shí),處理器會(huì)切換到特定的異常模式進(jìn)行處理,而這部分代碼都是架構(gòu)相關(guān)的;ARM64的代碼位于arch/arm64/kernel/entry.S。
  • ARM64處理器有四個(gè)異常級(jí)別Exception Level:0~3,EL0級(jí)對(duì)應(yīng)用戶態(tài)程序,EL1級(jí)對(duì)應(yīng)操作系統(tǒng)內(nèi)核態(tài),EL2級(jí)對(duì)應(yīng)Hypervisor,EL3級(jí)對(duì)應(yīng)Secure Monitor;
  • 異常觸發(fā)時(shí),處理器進(jìn)行切換,并且跳轉(zhuǎn)到異常向量表開始執(zhí)行,針對(duì)中斷異常,最終會(huì)跳轉(zhuǎn)到irq_handler中;

代碼比較簡(jiǎn)單,如下:

/*
 * Interrupt handling.
 */
	.macro	irq_handler
	ldr_l	x1, handle_arch_irq
	mov	x0, sp
	irq_stack_entry
	blr	x1
	irq_stack_exit
	.endm

來張圖:

圖片

  • 中斷觸發(fā),處理器去異常向量表找到對(duì)應(yīng)的入口,比如EL0的中斷跳轉(zhuǎn)到el0_irq處,EL1則跳轉(zhuǎn)到el1_irq處;
  • 在GIC驅(qū)動(dòng)中,會(huì)調(diào)用set_handle_irq接口來設(shè)置handle_arch_irq的函數(shù)指針,讓它指向gic_handle_irq,因此中斷觸發(fā)的時(shí)候會(huì)跳轉(zhuǎn)到gic_handle_irq處執(zhí)行;
  • gic_handle_irq函數(shù)處理時(shí),分為兩種情況,一種是外設(shè)觸發(fā)的中斷,硬件中斷號(hào)在16 ~ 1020之間,一種是軟件觸發(fā)的中斷,用于處理器之間的交互,硬件中斷號(hào)在16以內(nèi);
  • 外設(shè)觸發(fā)中斷后,根據(jù)irq domain去查找對(duì)應(yīng)的Linux IRQ中斷號(hào),進(jìn)而得到中斷描述符irq_desc,最終也就能調(diào)用到外設(shè)的中斷處理函數(shù)了;
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5045

    文章

    18817

    瀏覽量

    298484
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207905
  • 子系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    109

    瀏覽量

    12345
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67765
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在Arch Linux系統(tǒng)中安裝Cutefish桌面環(huán)境

    現(xiàn)在你可以在 Arch Linux 中體驗(yàn) Cutefish 桌面了。本文概述了在 Arch Linux 系統(tǒng)中安裝 Cutefish 桌面
    的頭像 發(fā)表于 04-19 17:05 ?6007次閱讀

    Linux LED子系統(tǒng)詳解

    Linux LED子系統(tǒng)詳解
    的頭像 發(fā)表于 06-10 10:37 ?1299次閱讀
    <b class='flag-5'>Linux</b> LED<b class='flag-5'>子系統(tǒng)</b>詳解

    Linux時(shí)間子系統(tǒng)之ARM generic timer驅(qū)動(dòng)代碼分析

    郭健? Linux時(shí)間子系統(tǒng)之ARM generic timer驅(qū)動(dòng)代碼分析
    發(fā)表于 07-17 09:30

    Arm Linux中斷子系統(tǒng)先相關(guān)資料分享

    1. Arm Linux 中斷子系統(tǒng)1.1. 中斷硬件系統(tǒng)3個(gè)組成部分:外設(shè)(中斷源)、
    發(fā)表于 05-23 15:21

    Arch Linux教程詳解

    最近在評(píng)論區(qū)看到很多人對(duì)Linux開始感到興趣,身為一個(gè)精通各種系統(tǒng)開關(guān)機(jī),各種發(fā)行版安裝與卸載的老司機(jī),我覺得我有必要站出來為大家安利一下Arch Linux了。
    發(fā)表于 09-21 16:15 ?0次下載
    <b class='flag-5'>Arch</b> <b class='flag-5'>Linux</b>教程詳解

    Arch Linux 有何優(yōu)缺點(diǎn)?

    Arch Linux 于 2002 年發(fā)布,由 Aaron Grifin 領(lǐng)頭,是當(dāng)下最熱門的 Linux 發(fā)行版之一。從設(shè)計(jì)上說,Arch Lin
    的頭像 發(fā)表于 08-05 08:52 ?1.2w次閱讀

    需要了解的Linux的IRQ中斷子系統(tǒng)

    Linux中斷子系統(tǒng)(generic irq)出現(xiàn)之前,內(nèi)核使用__do_IRQ處理所有的中斷,這意味著__do_IRQ中要處理各種類型的中斷
    發(fā)表于 05-10 10:56 ?1417次閱讀

    Linux中斷(interrupt)子系統(tǒng)之一:arch相關(guān)的硬件封裝層

    Linux的通用中斷子系統(tǒng)的一個(gè)設(shè)計(jì)原則就是把底層的硬件實(shí)現(xiàn)盡可能地隱藏起來,使得驅(qū)動(dòng)程序的開發(fā)人員不用關(guān)注底層的實(shí)現(xiàn),要實(shí)現(xiàn)這個(gè)目標(biāo),內(nèi)核的開發(fā)者們必須把硬件相關(guān)的內(nèi)容剝離出來,然后定義一些列標(biāo)準(zhǔn)的接口供上層訪問,上層的開發(fā)人
    發(fā)表于 05-13 10:48 ?796次閱讀

    Manjaro和Arch Linux有什么區(qū)別

    Manjaro 還是 Arch Linux?如果說 Manjaro 是基于 Arch 的,那么它和 Arch 又有什么不同呢?請(qǐng)?jiān)谶@篇比較文章中閱讀
    的頭像 發(fā)表于 09-08 14:15 ?3092次閱讀

    更容易設(shè)置和使用的基于ArchLinux發(fā)行版

    事實(shí)上,只是最開始的步驟,安裝 Arch Linux 就足以把很多人嚇跑。與大多數(shù)其他發(fā)行版不同,Arch Linux 沒有一個(gè)易于使用的圖形安裝程序。安裝過程中涉及到的磁盤分區(qū),連接
    的頭像 發(fā)表于 03-03 14:58 ?2285次閱讀

    Arch Linux 系統(tǒng)遷移的詳細(xì)介紹

    鏡像下載、域名解析、時(shí)間同步請(qǐng)點(diǎn)擊 阿里巴巴開源鏡像站 備份 Arch Linux 系統(tǒng) 安裝 pigz 使用 pigz 多線程壓縮比使用 tar 單線程壓縮速度明顯提升多倍 sudo pacman
    發(fā)表于 12-16 11:15 ?847次閱讀

    從軟件角度分析linux內(nèi)核USB子系統(tǒng)的熱插拔過程

    本文從軟件角度分析linux內(nèi)核USB子系統(tǒng)的熱插拔過程,以實(shí)際分析思路和過程行文,基于linux內(nèi)核版本:4.19.4,記錄
    的頭像 發(fā)表于 01-15 09:28 ?5142次閱讀

    龍架構(gòu)Arch Linux發(fā)行版正式發(fā)布

    近日,龍架構(gòu)Arch Linux發(fā)行版官方網(wǎng)站宣布結(jié)束beta狀態(tài),正式支持龍架構(gòu)。Arch Linux是一種輕量級(jí)、可定制、靈活的Linux
    的頭像 發(fā)表于 07-18 11:16 ?803次閱讀

    Linux Led子系統(tǒng)代碼框架分析

    代碼框架分析 led-class.c (led 子系統(tǒng)框架的入口) 維護(hù) LED 子系統(tǒng)的所有 LED 設(shè)備,為 LED 設(shè)備提供注冊(cè)操作函數(shù): led_classdev_regist
    的頭像 發(fā)表于 07-20 10:36 ?624次閱讀

    Linux中斷子系統(tǒng)硬件架構(gòu)

    中斷子系統(tǒng)硬件架構(gòu) 一個(gè)完整的設(shè)備中,與中斷相關(guān)的硬件可以劃分為3類,它們分別是:設(shè)備、中斷控制器和CPU本身。 設(shè)備:設(shè)備是發(fā)起中斷的源,
    的頭像 發(fā)表于 09-28 14:09 ?429次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>中斷</b><b class='flag-5'>子系統(tǒng)</b>硬件架構(gòu)