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

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

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

U54內(nèi)核上CLINT的內(nèi)存映射

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

CLINT中斷屬性

為了幫助提高保存和恢復(fù)上下文的效率,可以將中斷屬性應(yīng)用于用于中斷處理的函數(shù)。

void attribute ((interrupt))software_handler (void) {// handler
code}

圖片

此屬性將保存和恢復(fù)處理程序中使用的寄存器,并在處理程序的末尾插入一條 mret 指令。

CLINT內(nèi)存映射

下圖是U54 內(nèi)核上 CLINT 的內(nèi)存映射:

圖片

注意,在 CLINT 內(nèi)存映射中沒有用于特定中斷的啟用位,因?yàn)檫@些中斷的啟用位于每個(gè)中斷的 mie CSR 和 mstatus.mie CSR
位中,它全局啟用所有機(jī)器中斷。

相關(guān)寄存器

MSIP Registers

機(jī)器模式軟件中斷是通過寫入內(nèi)存映射控制寄存器 msip 來生成的。

msip 寄存器是一個(gè) 32 位寬的 WARL 寄存器,其中高 31 位綁定為 0。最低有效位反映在 mip CSR 的 MSIP 位中。msip
寄存器中的其他位被硬連線為零。復(fù)位時(shí),每個(gè) msip 寄存器都清零。

軟件中斷對(duì)于多 hart 系統(tǒng)中的處理器通信最有用,因?yàn)?harts 可能會(huì)寫入彼此的 msip 位以影響處理器間中斷。

軟件中斷其實(shí)更多的用于多核之間,也就是所謂的核間通信。

Timer Registers

與timer有關(guān)的寄存器主要是兩個(gè):mtime和mtimecmp

mtime 是一個(gè) 64 位讀寫寄存器,包含從 rtc_toggle 信號(hào)計(jì)數(shù)的周期數(shù)。

只要 mtime 大于或等于 mtimecmp 寄存器中的值,定時(shí)器中斷就會(huì)掛起。定時(shí)器中斷反映在 mip 寄存器的 mtip 位中。

復(fù)位時(shí),mtime 清零。mtimecmp 不會(huì)重置。

特權(quán)模式委托

默認(rèn)情況下,所有中斷都會(huì)陷入機(jī)器模式,包括定時(shí)器和軟件中斷。

為了讓定時(shí)器和軟件中斷直接進(jìn)入管理員模式,定時(shí)器中斷和軟件中斷必須首先委托給管理員模式。

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

    關(guān)注

    31

    文章

    5300

    瀏覽量

    119858
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1361

    瀏覽量

    40191
  • RISC
    +關(guān)注

    關(guān)注

    6

    文章

    461

    瀏覽量

    83637
  • sifive
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    9450
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    虛擬機(jī):linux高端內(nèi)存管理之永久內(nèi)核映射

    與直接映射的物理內(nèi)存末端、高端內(nèi)存的始端所對(duì)應(yīng)的線性地址存放在high_memory變量中,在x86體系結(jié)構(gòu),高于896MB的所有物理內(nèi)存
    的頭像 發(fā)表于 06-23 08:38 ?3637次閱讀
    虛擬機(jī):linux高端<b class='flag-5'>內(nèi)存</b>管理之永久<b class='flag-5'>內(nèi)核</b><b class='flag-5'>映射</b>

    Linux內(nèi)核內(nèi)存映射原理分析

    Linux 內(nèi)核采用延遲分配物理內(nèi)存的策略,在進(jìn)程第一次訪問虛擬頁的時(shí)候,產(chǎn)生缺頁異常。如果是文件映射,那么分配物理頁,把文件指定區(qū)間的數(shù)據(jù)讀到物理頁中,然后在頁表中把虛擬頁映射到物理
    發(fā)表于 07-21 17:06 ?2336次閱讀

    拆解mmap內(nèi)存映射的本質(zhì)!

    mmap 內(nèi)存映射里所謂的內(nèi)存其實(shí)指的是虛擬內(nèi)存,在調(diào)用 mmap 進(jìn)行匿名映射的時(shí)候(比如進(jìn)行堆內(nèi)存
    的頭像 發(fā)表于 01-24 14:30 ?1383次閱讀
    拆解mmap<b class='flag-5'>內(nèi)存</b><b class='flag-5'>映射</b>的本質(zhì)!

    Linux內(nèi)核地址映射模型與Linux內(nèi)核高端內(nèi)存詳解

    的數(shù)據(jù)可能不在內(nèi)存中。 Linux內(nèi)核地址映射模型 x86 CPU采用了段頁式地址映射模型。進(jìn)程代碼中的地址為邏輯地址,經(jīng)過段頁式地址映射
    發(fā)表于 05-08 10:33 ?3437次閱讀
    Linux<b class='flag-5'>內(nèi)核</b>地址<b class='flag-5'>映射</b>模型與Linux<b class='flag-5'>內(nèi)核</b>高端<b class='flag-5'>內(nèi)存</b>詳解

    在TC387微控制器實(shí)現(xiàn)內(nèi)存映射,負(fù)載增加的原因是什么?

    我正在 TC387 微控制器實(shí)現(xiàn)內(nèi)存映射。 關(guān)于內(nèi)存映射,在 Linker 腳本中定義了新區(qū)域,并將數(shù)據(jù)
    發(fā)表于 03-04 07:43

    STM32(CM3內(nèi)核內(nèi)存映射簡介

    這里寫目錄標(biāo)題STM32(CM3內(nèi)核內(nèi)存映射一.CM3內(nèi)核簡介二.CM3內(nèi)核地址映射三.搭建
    發(fā)表于 02-11 07:48

    淺析linux內(nèi)存映射原理

    內(nèi)存映射,簡而言之就是將用戶空間的一段內(nèi)存區(qū)域映射內(nèi)核空間,映射成功后,用戶對(duì)這段
    發(fā)表于 08-24 09:35 ?1602次閱讀
    淺析linux<b class='flag-5'>內(nèi)存</b><b class='flag-5'>映射</b>原理

    ARM筆記:內(nèi)核物理內(nèi)存映射區(qū)的虛擬內(nèi)存資料下載

    電子發(fā)燒友網(wǎng)為你提供ARM筆記:內(nèi)核物理內(nèi)存映射區(qū)的虛擬內(nèi)存資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望
    發(fā)表于 04-27 08:41 ?4次下載
    ARM筆記:<b class='flag-5'>內(nèi)核</b>物理<b class='flag-5'>內(nèi)存</b><b class='flag-5'>映射</b>區(qū)的虛擬<b class='flag-5'>內(nèi)存</b>資料下載

    STM32(CM3內(nèi)核內(nèi)存映射

    這里寫目錄標(biāo)題STM32(CM3內(nèi)核內(nèi)存映射一.CM3內(nèi)核簡介二.CM3內(nèi)核地址映射三.搭建
    發(fā)表于 12-07 19:21 ?9次下載
    STM32(CM3<b class='flag-5'>內(nèi)核</b>) <b class='flag-5'>內(nèi)存</b><b class='flag-5'>映射</b>

    PLIC平臺(tái)級(jí)中斷控制器介紹

    映射僅支持對(duì)齊的 32 位內(nèi)存訪問。 中斷源 U54內(nèi)核共有 132 個(gè)全局中斷源,此外還有CLINT管理的 中描述的本地中斷。 其中 12
    的頭像 發(fā)表于 10-07 17:53 ?1120次閱讀
    PLIC平臺(tái)級(jí)中斷控制器介紹

    U54內(nèi)核PLIC中斷處理例子

    Interrupt Claim Process U54 內(nèi)核 hart 可以通過讀取 claim_complete 寄存器(表 115)執(zhí)行中斷請(qǐng)求,該寄存器返回最高優(yōu)先級(jí)掛起中斷的 ID,如果沒有
    的頭像 發(fā)表于 10-07 18:01 ?907次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>PLIC中斷處理例子

    CLINT中斷控制器優(yōu)先級(jí)和搶占

    提供軟件、定時(shí)器和外部中斷。CLINT 塊還保存與軟件和定時(shí)器中斷相關(guān)的內(nèi)存映射控制和狀態(tài)寄存器。 CLINT 優(yōu)先級(jí)和搶占 CLINT
    的頭像 發(fā)表于 10-08 09:30 ?692次閱讀
    <b class='flag-5'>CLINT</b>中斷控制器優(yōu)先級(jí)和搶占

    RISC-V SiFive U54內(nèi)核的中斷介紹

    類型的 RISC-V 中斷:本地和全局。 本地中斷:U54內(nèi)核的本地中斷只有2種,軟件中斷和定時(shí)器中斷,這兩個(gè)中斷都由本地中斷器(CLINT)生成。本地中斷通過專用中斷異常代碼和固定優(yōu)先級(jí)直接發(fā)送給單個(gè)hart。因此,本地中斷沒
    的頭像 發(fā)表于 10-08 09:39 ?544次閱讀
    RISC-V SiFive <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>的中斷介紹

    U54內(nèi)核中斷控制和狀態(tài)寄存器

    向量的基地址,以及設(shè)置 U54內(nèi)核處理中斷的模式。對(duì)于 Direct 和 Vectored模式,中斷處理模式在 mtvec 寄存器的 MODE 字段中定義。mtvec 寄存器在表 86 中描述,mtvec.MODE 字段在表 87 中描述
    的頭像 發(fā)表于 10-08 09:54 ?862次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>中斷控制和狀態(tài)寄存器

    U54內(nèi)核特權(quán)模式中斷介紹

    特權(quán)模式中斷 U54內(nèi)核支持有選擇地將中斷和異常定向到S模式。 該功能由中斷和異常委托CSR處理:mideleg和medeleg。S模式中斷和異常可以通過stvec、sip、sie 和 scause
    的頭像 發(fā)表于 10-08 09:59 ?843次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>特權(quán)模式中斷介紹