精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

riscv中的plic中斷處理與eclic詳解

嵌入式IoT ? 來源:嵌入式IoT ? 作者:嵌入式IoT ? 2021-04-15 13:50 ? 次閱讀

淺析riscv中的plic與eclic

1.PLIC中斷處理

2.sifive中斷的編程模型

3.關于eclic

4.關于jalmnxti

1.PLIC中斷處理

在RISC V體系架構中,對中斷有著一些定義,下面來分析一下這種定義的實現策略。

2c6be102-9d0e-11eb-8b86-12bb97331649.png

在riscv中一共定義了三種狀態中斷,對于hart層面,hart包含local中斷源和global中斷源。而local中斷只有Timer和Software中斷兩種,而global中斷則稱為external interrupts。只有global中斷源可以被PLIC core響應,通常為I/O device。

一般來說,timer和software是通過CLINT(CORE LOCAL INTERRUPT),而外部中斷通過PLIC處理。

2d5a77b8-9d0e-11eb-8b86-12bb97331649.png

可以看一下蜂鳥處理器的處理流程,另外sifive的E31的中斷也有如下的處理。

2d6d55cc-9d0e-11eb-8b86-12bb97331649.png

2.sifive中斷的編程模型

中斷處理過程有如下的流程

首先mstatus的MIE域被拷貝到mstatus的MPIE,然后mstatus的MIE域被清除。此時全局中斷disable。

程序當前的pc值被拷貝到mepc寄存器中,然后pc值會根據mtvec的值設置其值。如果向量中斷被使能,pc值會變成mtvec.BASE+4xexception處的代碼。

從mstatus.MPP中取出特權模式的狀態

接下來就是處理中斷具體的函數實現

將特權模式的狀態設置到mstatus.MPP

將mstatus.MPIE的數據拷貝到mstatus.MIE中

從mepc中取值放到pc中

最后執行eret恢復到程序正常運行的狀態。

對于CLINT來說,有Software Interrupt和Timer Interrupt,可以直接在寄存器中控制。

而PLIC實際上可以理解為arm的中斷控制器,存在其map地址。

2d8017ca-9d0e-11eb-8b86-12bb97331649.png

由于PLIC的使用是針對外部中斷的,所以可以單獨設置每個中斷。可以設置如下的值:

中斷的優先級priotity

中斷掛起位pending

中斷使能enables

中斷閾值priority Thresholds

由于PLIC的實現是獨立于hart的IP設計,所以其設計和布局也不一定完全一致。

3.關于eclic

eclic的設計是芯來科技設計的一種中斷處理方式。

2dbc5852-9d0e-11eb-8b86-12bb97331649.png

eclic目前也是眾多芯來科技core采用的中斷控制器,也包括gd32vf103系列的芯片

3號中斷是內核TIMER單元生成的軟件中斷。

7號中斷是內核TIMER單元生成的計時器中斷。

而從19~4095中斷號都是外部中斷,其中斷的編號與中斷的優先級其實沒有關系。

2dcb96f0-9d0e-11eb-8b86-12bb97331649.png

而對于ECLIC的寄存器布局,可見上圖。

cliccfg是中斷全局配置寄存器,可以結合clicintctl[i]配置

clicinfo也是全局寄存器中的數據,對于使用上來說,是只讀的

mth中斷的閾值級別寄存器

clicintip[i]是中斷等待寄存器,也相當于pending寄存器

clicintie[i]為中斷使能寄存器

clicintattr[i]為中斷的屬性,可以設置中斷的上升沿觸發或者下降沿觸發,同時也可以設置中斷從處理是向量中斷還是非向量中斷。

clicintctl[i] 設置中斷優先級級別和優先級,需要配合cliccfg設置閾。

4.關于jalmnxti

這個也是eclic為了減少中斷延時,加速中斷咬尾的自定義指令。

該指令是配合eclic處理機制設計的,其指令功能比較多

開啟中斷使能,處理下一個中斷

返回下一個中斷入口地址

跳轉至中斷handler

中斷處理后返回

由于csrrw ra, CSR_JALMNXTI, ra一條指令可以達到JAL(Jump and Link)的效果,同時硬件上更新Link寄存器作為該指令的PC作為函數調用的返回值,因此從中斷服務程序返回后,又會重新回到csrrw ra, CSR_JALMNXTI, ra指令再次執行,可以重新判斷是否有中斷pending,如果有則跳轉到中斷處理函數,從而實現中斷的咬尾處理,如果沒有中斷等待,則jalmnxti實際上并不會做任何事情。

原文標題:淺析riscv中的plic與eclic

文章出處:【微信公眾號:嵌入式IoT】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模型
    +關注

    關注

    1

    文章

    3032

    瀏覽量

    48366

原文標題:淺析riscv中的plic與eclic

文章出處:【微信號:Embeded_IoT,微信公眾號:嵌入式IoT】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    RISCV soft JTAG調試_v1.2

    JTAG。這里我們以TI60F225 DEMO來演示。 在使用softJTAG的過程,首先要把RISCV的IP的調試選項選擇為soft,也就是Eanble Soft Debug Tap. 第二
    的頭像 發表于 04-23 08:38 ?743次閱讀

    RISCV soft JTAG調試_v1.1

    JTAG。這里我們以TI60F225 DEMO來演示。 在使用softJTAG的過程,首先要把RISCV的IP的調試選項選擇為soft,也就是Eanble Soft Debug Tap. 第二
    的頭像 發表于 02-23 16:16 ?464次閱讀
    <b class='flag-5'>RISCV</b> soft JTAG調試_v1.1

    stm32中斷怎么處理

    STM32是一款非常強大的微控制器系列,具有豐富的外設和功能。中斷是STM32非常重要的部分,能夠幫助我們提高系統的響應速度和效率。本文將詳細介紹STM32中斷處理方法。 一、
    的頭像 發表于 01-02 17:35 ?2174次閱讀

    MCU中斷處理過程,MCU如何處理中斷

    當MCU接收到一個中斷信號時,它會暫停當前正在執行的任務,保存現場,然后跳轉到預設的中斷處理程序(Interrupt Service Routine, ISR)去處理這個
    的頭像 發表于 12-13 11:48 ?1279次閱讀

    MCU如何處理中斷中斷處理過程包括哪些步驟?

    當MCU接收到一個中斷信號時,它會暫停當前正在執行的任務,保存現場,然后跳轉到預設的中斷處理程序(Interrupt Service Routine, ISR)去處理這個
    的頭像 發表于 11-08 12:57 ?1025次閱讀

    中斷及ARM體系中斷處理

    今天來看一下中斷及ARM體系中斷處理,直接進入正題。 中斷是指計算機運行過程,出現某些意
    的頭像 發表于 11-07 17:11 ?535次閱讀
    <b class='flag-5'>中斷</b>及ARM體系<b class='flag-5'>中</b>對<b class='flag-5'>中斷</b>的<b class='flag-5'>處理</b>

    什么是中斷響應次序?什么是中斷處理次序?

    次序 所謂中斷響應次序,可以理解為當系統出現中斷請求時,響應這些請求的順序。而中斷請求是指來自計算機外部或內部的事件(如鍵盤輸入、硬件故障等)觸發了程序預設的
    的頭像 發表于 10-24 11:49 ?2014次閱讀

    ARM9中斷(C語言)如何實現復位功能,而不是返回中斷前的狀態?

    ARM9中斷(C語言)如何實現復位功能,而不是返回中斷前的狀態? 在ARM9處理器的中斷,當
    的頭像 發表于 10-19 16:42 ?993次閱讀

    ARM的異常中斷是如何實現進入中斷程序的?如何進入呢?

    ARM的異常中斷是如何實現進入中斷程序的?如何進入呢? 在計算機系統,異常和中斷是兩個常見的概念。 在ARM
    的頭像 發表于 10-19 16:36 ?820次閱讀

    arm處理器有哪些中斷源?arm處理器對異常中斷的響應過程

    arm處理器有哪些中斷源?arm處理器對異常中斷的響應過程? ARM處理器是一種廣泛使用的嵌入式處理
    的頭像 發表于 10-19 16:35 ?1253次閱讀

    U54內核PLIC中斷處理例子

    完成 U54 內核 hart 通過將其從聲明收到的中斷 ID 寫入 claim_complete 寄存器(表 115)來表示它已完成執行中斷處理程序。
    的頭像 發表于 10-07 18:01 ?734次閱讀
    U54內核<b class='flag-5'>PLIC</b><b class='flag-5'>中斷</b><b class='flag-5'>處理</b>例子

    LIC內核中斷掛起位和中斷使能

    中斷掛起位 PLIC 內核中斷源掛起位的當前狀態可以從掛起數組讀取,組織為 32 位的 5 個字。
    的頭像 發表于 10-07 17:57 ?640次閱讀
    LIC內核<b class='flag-5'>中斷</b>掛起位和<b class='flag-5'>中斷</b>使能

    PLIC平臺級中斷控制器介紹

    平臺級中斷控制器(PLICPLIC:Platform-Level Interrupt Controller. 實際上,除了CLINT管理的軟件中斷和定時器
    的頭像 發表于 10-07 17:53 ?962次閱讀
    <b class='flag-5'>PLIC</b>平臺級<b class='flag-5'>中斷</b>控制器介紹

    PLC中斷功能詳解

    plc這樣理解中斷功能,在理解中斷時,首先要清楚plc的運算周期或者說是掃描周期,有必要說下plc順控循環執行的流程,這是理解中斷的前提,必須要掌握,分為三部分,輸入處理、程序
    發表于 09-28 11:12 ?892次閱讀
    PLC<b class='flag-5'>中斷</b>功能<b class='flag-5'>詳解</b>

    Cortex-M 內核中斷/異常系統、中斷優先級/嵌套 詳解

    Cortex-M 內核中斷/異常系統、中斷優先級/嵌套 詳解
    的頭像 發表于 09-27 15:29 ?1687次閱讀
    Cortex-M 內核<b class='flag-5'>中斷</b>/異常系統、<b class='flag-5'>中斷</b>優先級/嵌套 <b class='flag-5'>詳解</b>