AIA - APLIC之二

本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。

对于APLIC实现的每一个中断域,都存在一个独享的内存映射的控制区域,用来处理该中断域的中断。
该控制区域大小是由4KB的倍数,并与4KB地址边界对齐,最小的有效控制区域是16KB。
接下来,本文将详细讲解,APLIC中断域的内存映射空间。

1 中断域的内存映射空间 - 示意图

一个中断域的控制区域,由一组32bit位宽的寄存器组成,前16KB的寄存器如下图所示:
在这里插入图片描述在这里插入图片描述
从偏移量 0x4000 开始,interrupt domain 的控制区域可以选择具有interrupt delivery control (IDC) 结构,每个hart都对应一个IDC 结构。
IDC 结构,只有在直接向 harts 传递 interrupt 时使用,而由 MSI 转发interrupt时不会使用。
每个 IDC 结构为 32 字节,并定义如下:
在这里插入图片描述
从 interrupt domain 控制区域的开头到其第二个 IDC 结构(hart index=1)的偏移量为 0x4020;第三个 IDC 结构(hart index=2)的偏移量为 0x4040 以此类推。

除了前16 KB中的缓存器和上面列出的用于 IDC 结构的缓存器外,interrupt domain 控制区域中的其他 byte 都被保留的,并且为 read only 0。中断域的控制区域只支持32bit对齐的访问。

根据本小节描述,中断域的内存映射空间,其寄存器分布情况,可整理为如下图所示:
在这里插入图片描述
中断域的内存映射空间中,所有寄存器的含义描述,如下文所示。

2 中断域的内存映射空间 - 寄存器含义

2.1 domaincfg

Domain configuration (domaincfg),定义如下:
在这里插入图片描述

  • IE(Interrupt Eable)位
    指示所在中断域的所有有效中断源的全局使能标志。
    只有IE=1时,pending和enable同时置位的中断,才会投递到目标hart。

  • DM(Delivery Mode)位
    表示中断的投递方式,其定义如下:
    在这里插入图片描述

    • 直接投递方式,是指中断按优先级排列,并由APLIC本身直接向Hart发出信号。如果中断域中的hart具有IMSIC,除非其对应IMSIC中interrupt file的eidelivery支持0x4000_0000,否则将DM置0的效果,等同于对IE置0。也就是说,如果eidelivery不支持0x4000_0000,即便将DM置0,欲使用直接投递,也无法实际投递到Hart。
    • MSI投递方式,是指APLIC将中断以MSI的方式发送到hart,由hart中的IMSIC进一步处理。
  • BE (big-Endian)位
    它确定 interrupt domain 的寄存器byte的顺序。(在现今主流的 CPU 中,最常见的字节顺序有两种,分别是 Big-Endian 与 Little-Endian。Big-Endian 是指数据放进内存中的时候,最高位的字节会放在最低的内存地址上;而 Little-Endian 则是刚好相反,它会把最高位的字节放在最高的内存地址上。)

    • 如果BE = 0,表示byte顺序为little-endian
    • 如果 BE = 1,表示为big-endian。

在系统重置时,domaincfg 中的所有可写位,都被初始化为零,包括 IE。

2.2 sourcecfg[1]–sourcecfg[1023]

​​​​​​​Source configurations (sourcecfg[1]–sourcecfg[1023])。
对于每个可能的中断源i,sourcecfg[i]控制源i在该interrupt domain中的源模式,以及源i到child domain的任何委托。
当源i未被实现,或出现在不被实现的域中时,sourcecfg[i]为只读零。
如果源i没有被委托到这个域,然后(在父域)被更改为被委托到这个域,sourcecfg[i]将保持为零,直到成功写入一个非零值。

sourcecfg[i]的第10位,是一个名为D(Delegate)的1位字段。sourcecfg[i]其余部分的解释,取决于字段D。

  • 如果D=1,表示源i被委托给子域。
    当中断源i,被委托给子域时,sourcecfg[i]有这样的格式:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/498782.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之访问者模式:一楼千面 各有玄机

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 一、访问者模式概述 \quad 江湖中有一个传说:在遥远的东方,有一座神秘的玉楼。每当武林中人来访,楼中的各个房…

SAP月结、年结前重点检查事项(后勤与财务模块)

文章目录 一、PP生产模块相关的事务检查二、SD销售模块相关的事务检查:三、MM物料管理模块相关的事务检查四、FICO财务模块相关的事务检查五、年结前若干注意事项【SAP系统PP模块研究】 #SAP #生产订单 #月结 #年结 一、PP生产模块相关的事务检查 1、月末盘点后,生产用料的…

JVM实战—6.频繁YGC和频繁FGC的后果

大纲 1.JVM GC导致系统突然卡死无法访问 2.什么是Young GC什么是Full GC 3.Young GC、Old GC和Full GC的发生情况 4.频繁YGC的案例(G1解决大内存YGC过慢) 5.频繁FGC的案例(YGC存活对象S区放不下) 6.问题汇总 1.JVM GC导致系统突然卡死无法访问 (1)基于JVM运行的系统最怕…

蓝牙|软件 Qualcomm S7 Sound Platform开发系列之初级入门指南

本文适用范围 ADK24.2~ 问题/功能描述 S7开发环境搭建与编译介绍 实现方案 本文介绍适用于windows平台Application部分,audio ss的说明会在下一篇文章在做说明,Linux平台如果不进行AI算法的开发,个人认知是没有必要配置,若是做服务器倒是不错的选择.因为编译完成后烧录调试还…

LabVIEW冷却风机性能测试系统

开发了基于LabVIEW软件及LabSQL工具包的冷却风机性能测试系统。系统通过高效的数据库访问技术,实现了对冷却风机测试过程中关键性能数据的采集、存储与管理,优化了测试流程并提升了数据处理的效率。 ​ 项目背景 在工业生产和科研测试中,准…

C 实现植物大战僵尸(四)

C 实现植物大战僵尸(四) C 实现植物大战僵尸,完结撒花(还有个音频稍卡顿的性能问题,待有空优化解决)。目前基本的功能模块已经搭建好了,感兴趣的友友可自行尝试编写后续游戏内容 因为 C 站不能…

车间管理:掌握方法,有效应对浪费

在制造企业中,车间的有效管理对于提高生产效率、降低成本以及提升产品质量至关重要,然而面对外部激烈的市场竞争,利润微薄,内部车间却充满了各种浪费,企业管理者头痛不已,如果能有效改进内部车间浪费&#…

Logo设计免费生成器工具:轻松创建独特标志

在当今的商业世界中,一个独特且引人注目的Logo是任何企业或品牌的身份象征。它不仅代表了公司的形象,还传达了公司的价值观和使命。然而,对于许多初创企业或小型企业来说,聘请专业设计师来设计一个Logo可能是一笔不小的开销。这时…

【智行安全】基于Synaptics SL1680的AI疲劳驾驶检测方案

随著车载技术的快速进步,驾驶安全越来越受到重视,而疲劳驾驶是造成交通事故的重要原因之一。传统的驾驶监控技术因精度不足或反应迟缓,无法满足实时监测需求。因此,结合人工智能技术的疲劳驾驶检测系统成为行业新方向,…

uni-ui样式修改

因为之前官网uni-ui有些组件的样式不好看,所以要做一些调整,做个记录。用分段器举例~ 官网原生样式 调整后的 首先找到我们的static文件夹,里面一般存着项目的全局样式文件,没有的话自己创一个 uniui.scss /deep/ .segmented-con…

大模型WebUI:Gradio全解系列9——Additional Features:补充特性(下)

大模型WebUI:Gradio全解系列9——Additional Features:补充特性(下) 前言本篇摘要8. Additional Features:补充特性8.5 分享demo8.5.1 嵌入托管 Spaces8.5.2 使用 Web Components 嵌入8.5.3 Embedding with IFrames 8.…

计算机网络 (17)点对点协议PPP

一、PPP协议的基本概念 PPP协议最初设计是为两个对等节点之间的IP流量传输提供一种封装协议,它替代了原来非标准的第二层协议(如SLIP)。在TCP/IP协议集中,PPP是一种用来同步调制连接的数据链路层协议(OSI模式中的第二层…

HTML5滑块(Slider)

HTML5 的滑块&#xff08;Slider&#xff09;控件允许用户通过拖动滑块来选择数值。以下是如何实现一个简单的滑块组件的详细说明。 HTML5 滑块组件 1. 基本结构 使用 <input type"range"> 元素可以创建一个滑块。下面是基本实现的代码示例&#xff1a; <…

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件 一、RTP流与WAV文件格式二、实现步骤三、伪代码示例四、C语言示例代码五、关键点说明六、总结在Linux操作系统上,从媒体服务器(如Media Server,简称MS)获取RTP(Real-time Transport Protocol)流…

Unity3D仿星露谷物语开发12之创建道具列表

1、目标 道具是游戏的核心部分&#xff0c;道具包括你可以拾取的东西&#xff0c;你可以使用的工具和你能种的东西等。 本节就是创建道具的信息类。同时了解ScriptableObject类的使用。 2、创建道具枚举类 修改Assets -> Scripts -> Enums.cs脚本&#xff0c; 新增如…

华为云Welink数据怎么连接到小满CRM?

Welink是什么&#xff1f;好用吗&#xff1f; 华为云WeLink是华为内部打磨多年的协同办公平台、远程办公软件、移动办公平台、协同办公软件&#xff0c;来源华为19万员工的数字化办公实践&#xff0c;融合多屏协同、打卡、报销、考勤、审批、企业网盘、IM消息、邮件、视频会议…

借助 FinClip 跨端技术探索鸿蒙原生应用开发之旅

在当今数字化浪潮汹涌澎湃的时代&#xff0c;移动应用开发领域正经历着深刻的变革与创新。鸿蒙操作系统的崛起&#xff0c;以其独特的分布式架构和强大的性能表现&#xff0c;吸引了众多开发者的目光。而FinClip 跨端技术的出现&#xff0c;为开发者涉足鸿蒙原生应用开发提供了…

IDEA+Docker一键部署项目SpringBoot项目

文章目录 1. 部署项目的传统方式2. 前置工作3. SSH配置4. 连接Docker守护进程5. 创建简单的SpringBoot应用程序6. 编写Dockerfile文件7. 配置远程部署 7.1 创建配置7.2 绑定端口7.3 添加执行前要运行的任务 8. 部署项目9. 开放防火墙的 11020 端口10. 访问项目11. 可能遇到的问…

Excel文件恢复教程:快速找回丢失数据!

Excel文件恢复位置在哪里&#xff1f; Excel是微软开发的电子表格软件&#xff0c;它为处理数据和组织工作提供了便捷。虽然数据丢失的问题在数字时代已经司空见惯&#xff0c;但对于某些用户来说&#xff0c;恢复未保存/删除/丢失的Excel文件可能会很困难&#xff0c;更不用说…

pyinstaller打包exe可执行文件

cd命令符进入要打包文件路径下&#xff0c;执行&#xff1a; 1.打包单个py文件&#xff0c;在控制台执行;dist下会生成2个文件&#xff0c;一个是exe文件 pyinstaller -D happy.py (cd命令符进入要打包文件路径下&#xff0c;执行) 打包单个py文件&#xff0c;在控制台执行;…