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

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

3天內不再提示

RISC-V CSR寄存器介紹

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 14:53 ? 次閱讀

RISC-V CSR寄存器

CSR是控制狀態寄存器,RISC-V中CSR寄存器,需要使用csrr、csrw、csrrw等特定指令進行訪問。

M模式和S模式都有自己的CSR寄存器,但是大體上相同。下面列舉一些常用的CSR。

M模式CSR寄存器

mstatus

狀態寄存器,保存了全局中斷使能狀態和其他狀態,例如切換模式前,保存當前模式。

mtvec

異常入口基地址寄存器。保存發生異常時需要跳轉的地址。

medelegmideleg

medeleg是異常委托,mideleg是中斷委托。例如,在M模式下發生異?;蛑袛鄷r,可以通過這兩個寄存器,將中斷/異常交給S模式或者其他模式處理。

mipmie

mie是中斷使能寄存器,對需要使能的中斷,在對應位使能。

mip是中斷等待寄存器,表示目前正準備處理的中斷。

hpm

全稱Hardware Performance Monitor,硬件性能單元,用于性能計數。包括了兩類寄存器:mhpmcounter和mhpmevent

  • mhpmcounter:性能計數器
  • mhpmevent:用于配置性能事件

mcounterenmcountinhibit

這兩個也是hpm相關的寄存器,主要用于控制hpm的使能、計數禁止。

  • mcounteren:計數器使能
  • mcountinhibit:禁止計數

mscratch

用于保存M模式指向hart上下文的指針,并在進入M模式的處理程序時,和用戶寄存器交換。

mepc

發生中斷時,當前程序的PC值,保存在mepc中,中斷返回時,會從mepc讀取PC值。

mcause

用于保存發生中斷或異常的情況,中斷和異常描述如下:

圖片

1代表中斷,0代表異常,每個異常/中斷都有對應的編碼值,通過mcause的值,可以很清楚的知道發生了什么中斷或異常,特別在調試過程,mcause發揮了很大作用。

mvtal

異常值寄存器,例如發生異常時,保存出錯的地址。

S模式CSR寄存器

S模式的CSR和M模式基本上是一樣的,只不過將第一個字母m改為了s,例如mcause改為了scause,mvtal改為了svtal。它們的功能基本相同,這里就不再贅述了。

需要注意的是,S模式除了擁有M模式相同功能的CSR外,另外還增加了一個stap寄存器。

stap寄存器主要是給MMU使用,stap寄存器保存了頁表的基地址,MMU通過stap可以找到第一級頁表,進而找到物理地址。stap寄存器涉及到的內容比較多,關于stap相關內容,以后會詳細展開講講。

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

    關注

    30

    文章

    5141

    瀏覽量

    118055
  • 內核
    +關注

    關注

    3

    文章

    1313

    瀏覽量

    39905
  • Linux
    +關注

    關注

    87

    文章

    11017

    瀏覽量

    206956
  • CSR
    CSR
    +關注

    關注

    3

    文章

    117

    瀏覽量

    69458
  • 計數器
    +關注

    關注

    32

    文章

    2199

    瀏覽量

    93300
  • RISC
    +關注

    關注

    6

    文章

    432

    瀏覽量

    83378
收藏 人收藏

    評論

    相關推薦

    RISC-V開放架構設計之道|閱讀體驗】RISC-V基礎整數指令集RV32I

    。 圖1:RV32I指令集 在講RISC-V各個階段,橫向比較ARM架構,體現出RISC-V的優越性。 ●RV32I寄存器 RISC-V基礎指令集RV32I,只有6種基本指令
    發表于 01-28 11:41

    RISC-V開放架構設計之道|閱讀體驗】RISC-V基礎整數指令集

    第2章 RV32I:RISC-V基礎整數指令集 本章重點講解構成RISC-V基礎整數指令集的基本指令和指令格式。主要包含寄存器間操作的R型,用于短立即數和取數操作的I型,用于存數操作的S型,用于條件
    發表于 01-31 21:10

    RISC-V 基礎學習:RISC-V 基礎介紹

    10 機器特權級 3 M 11 一個RISC-V 硬件線程(hart),相當于一個CPU 內獨立的可執行核心,在任意時刻,只能運行在某一個特權級上,這個特權級由CSR(控制和狀態寄存器)指定配置
    發表于 03-12 10:25

    RISC-V工作模式及寄存器基本知識

    RISC-V Linux為例,Linux應用程序處于U模式,Linux內核/uboot處于S模式,M模式則是OpenSBI。M模式擁有最高訪問權限,Linux內核如果要訪問CSR寄存器,則必須由S模式切換
    發表于 04-12 14:06

    如何在RISC-V處理上使用FreeRTOS?

    RISC-V實現共有的寄存器的基本移植,以及一組macros,實現硬件特定的特性和擴展。1. 快速入門為RISC-V內核構建FreeRTOS,步驟如下:1包含FreeRTOS內核源代碼及RIS
    發表于 11-29 15:54

    RISC-V開源處理介紹

    本期文章目錄一個小型RISC-V開源處理介紹!#SOC#FPGA#RISC-V點擊閱讀數字積木從零開始寫RISC-V處理
    發表于 07-23 09:42

    RISC-V ISA是怎樣進行命名的

    RISC-V ISA 命名規范RISC-V ISA 采用模塊化的方式進行組織,每一個模塊使用一個英文字母表示,其命名格式可以參考如下:RV[字寬][指令集模塊]RV:RISC-V字寬(處理
    發表于 12-09 06:31

    優化的關鍵,RISC-V中的性能監控

    stat,一種是perf record。如今上游Linux的perf雖然已經對RISC-V有了支持,但僅對perf stat有一些基本的支持。比如mcycle這一CSR用于處理運行的時鐘周期計數,而
    發表于 12-27 08:00

    如何使用J-Link和Embedded Studio讀寫RISC-V處理CSR?

    CSR簡介RISC-V 架構的控制和狀態寄存器(Control and Status Register, CSR),用于配置或記錄一些處理
    發表于 08-25 15:51

    初探RISC-V—《RISC-V體系結構編程與實踐》

    最近有幸讀了一本介紹RISC-V的書籍《RISC-V體系結構編程與實踐》,這是一本非常有價值的書籍,它介紹RISC-V體系結構的各個方面,
    發表于 03-28 11:41

    【轉載】第1章 初識RISC-V

    。此外,RISC-V還定義了一組控制和狀態寄存器(Control and Status Registers, CSR ),用于記錄內核運行狀態。詳情參考特權指令集規范:https://riscv.org
    發表于 03-28 16:57

    RISC-V 發展

    匯編當中,都使用ABI名稱來代表這些寄存器。RISC-V CSR寄存器CSR是控制狀態寄存器,
    發表于 04-14 10:18

    RISC-V gp全局指針寄存器說明

    ,RISC-V 32個寄存器之一,為了優化±2KB內全局變量的訪問。 gp寄存器在啟動代碼中加載為__global_pointer$的地址,并且之后不能被改變。 linker時使用__global_pointer
    發表于 09-11 16:57

    RISC-V CSR 相關指令集

    CSRRW(Atomic Read/Write CSR) 指令原子性的交換CSR寄存器中的值。 CSRRW指令讀取在CSR中的舊值,將其零擴展到32位,然后寫入整數
    發表于 12-08 18:21 ?8次下載
    <b class='flag-5'>RISC-V</b> <b class='flag-5'>CSR</b> 相關指令集

    RISC-V PMP寄存器介紹

    每個 PMP 區域都由一個 8 位 pmpXcfg 字段描述,與一個 64 位 pmpaddrX寄存器結合使用,該寄存器保存受保護區域的基地址。每個區域的范圍取決于下一節中描述的尋址 (A) 模式
    的頭像 發表于 10-07 17:39 ?1122次閱讀
    <b class='flag-5'>RISC-V</b> PMP<b class='flag-5'>寄存器</b><b class='flag-5'>介紹</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>