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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

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

Arch-speicific代碼分析

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

代碼比較簡單,如下:

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

來張圖:

圖片

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

    關注

    5088

    文章

    19158

    瀏覽量

    306506
  • Linux
    +關注

    關注

    87

    文章

    11329

    瀏覽量

    209975
  • 子系統(tǒng)

    關注

    0

    文章

    109

    瀏覽量

    12420
  • 代碼
    +關注

    關注

    30

    文章

    4810

    瀏覽量

    68827
收藏 人收藏

    評論

    相關推薦

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

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

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

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

    Linux時間子系統(tǒng)之ARM generic timer驅動代碼分析

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

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

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

    Arch Linux教程詳解

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

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

    Arch Linux 于 2002 年發(fā)布,由 Aaron Grifin 領頭,是當下最熱門的 Linux 發(fā)行版之一。從設計上說,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 ?1487次閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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