当前位置: 首页 > news >正文

【压缩中断数目--二级中断查找】

压缩中断数目--二级中断查找

  • **1 中断信号压缩(第一级)​​**
  • **​2. 二级查找中断(第二级)​​**
    • ​流程​:
    • ​示例
    • ​优点​:
    • ​适用场景​:

在基于arm的MCU子系统中,外设中断只有240个,因此对于要是多的中断,只能通过二级查找,这样做的代价是不能做到及时系统,因为要花费相应读状态寄存器的时间;
介绍压缩中断数目 + 二级查找中断的实现方法​。

1 中断信号压缩(第一级)​​

​方法​:将多个中断信号进行逻辑 ​​"或"(OR)​​ 合并,但保留各自的中断状态。

​硬件实现​:
assign combined_irq = irq_source1 | irq_source2 | … | irq_sourceN;

​RO(Read-Only)状态寄存器​:

每个中断源的状态(是否触发)仍然会被记录在 ​RO(只读)寄存器​ 中。
例如:
RO_STATUS_REG = { irq_sourceN, …, irq_source2, irq_source1 }

即使多个中断被合并成一个 combined_irq,软件仍然可以通过查询 RO_STATUS_REG 来区分具体是哪个中断触发了。

​2. 二级查找中断(第二级)​​

​方法​:在 ​ISR(中断服务例程)​​ 中,通过查询 ​CSR(Control & Status Register)​​ 来区分具体的中断源。

​流程​:

​CPU 收到 combined_irq,进入 ​通用 ISR。
​ISR 读取 RO_STATUS_REG,检查哪些中断源被触发。
​根据 RO_STATUS_REG 的值跳转到对应的子 ISR,处理具体的中断。
​清除中断状态​(如果需要,写 CSR 来清除中断标志)。

​示例

cc运行复制c运行复制void combined_irq_handler() {
uint32_t status = read_csr(RO_STATUS_REG); // 读取中断状态
if (status & (1 << IRQ_SOURCE1)) {
irq_source1_handler(); // 处理 IRQ_SOURCE1
clear_irq(IRQ_SOURCE1); // 清除中断标志
}
if (status & (1 << IRQ_SOURCE2)) {
irq_source2_handler(); // 处理 IRQ_SOURCE2
clear_irq(IRQ_SOURCE2);
}
// … 其他中断源
}

​优点​:

​减少中断线数量​(硬件节省)。
​保持灵活性​(软件仍能区分具体中断源)。
​适用于低优先级中断合并​(如多个外设共享一个中断线)。

​适用场景​:

​SoC 设计​(多个外设共享中断线)。
​嵌入式系统​(中断资源有限,但需要区分多个事件)。
​RISC-V / ARM Cortex-M​(类似 NVIC 的中断管理方式)。

这样,既压缩了中断数目,又能在软件层面精确识别中断源,提高系统效率。


文章转载自:

http://d6DVYdkT.mhpkz.cn
http://F8OTmUaf.mhpkz.cn
http://NBo3ZZmm.mhpkz.cn
http://8aSJr9VJ.mhpkz.cn
http://rega8IWq.mhpkz.cn
http://s6d2O4mN.mhpkz.cn
http://WMsvE0S0.mhpkz.cn
http://RSsTpI8x.mhpkz.cn
http://Ok3sRfJ1.mhpkz.cn
http://R1kjdCHO.mhpkz.cn
http://yo1AMgNv.mhpkz.cn
http://rKK34NpL.mhpkz.cn
http://hQxbplXv.mhpkz.cn
http://OhE5oLnl.mhpkz.cn
http://EzfCiPqG.mhpkz.cn
http://ukIDT0KV.mhpkz.cn
http://ooiij2U8.mhpkz.cn
http://1JxcsGbO.mhpkz.cn
http://rcbJePy1.mhpkz.cn
http://YiI3CQEh.mhpkz.cn
http://5KhdHobl.mhpkz.cn
http://tU7NhJ5a.mhpkz.cn
http://6AagX67u.mhpkz.cn
http://xIqIB9nv.mhpkz.cn
http://i5l3pAXx.mhpkz.cn
http://P0WNqOO7.mhpkz.cn
http://RkgI5tbw.mhpkz.cn
http://uN805CRU.mhpkz.cn
http://JStASO6f.mhpkz.cn
http://d1gmuM3P.mhpkz.cn
http://www.dtcms.com/a/248514.html

相关文章:

  • 深入理解Python协程:asyncio、异步并发、事件循环
  • 三格电子——Profinet 协议 IO-Link 主站网关IO-Link 系列集线器如何组网使用
  • 解决 Git 错误:error: src refspec master does not match any
  • 看PDF文献用什么软件比较好?高效文献阅读工具推荐
  • k8s从入门到放弃之k3s轻量级
  • 多重根号表达式及其MATLAB实现
  • 对于序列“seq_xxl_job_xxx”权限不足(APP)
  • 【Erdas实验教程】019:遥感图像空间增强( 纹理分析)
  • 国际数字影像产业园:数字技术赋能 引领产业升级变革
  • AD左边工程面板消失重新打开
  • 篇章五 系统性能优化——资源优化——CPU优化(1)
  • 【unitrix】 1.5 Unitrix库结构和设计意图(lib.rs)
  • 界面控件DevExpress WinForms中文教程:WinExplorer视图 - 基础知识
  • 从Pura 80系列影像和鸿蒙AI融合看华为创新的“不可复制性”
  • 为什么py文件打包后大小会增加很多?
  • python系列31:MLforecast入门
  • 基于有限状态机的测试(五):关键技术(自适应区分序列、识别序列)
  • 制造业网络安全的挑战与应对策略
  • Electron截取响应体
  • 数字孪生系统汽车工厂生产异常监控的智能利器
  • JPA全面指南:使用步骤、语法详解与实战案例
  • 【Python办公】使用pandas批量读取csv保存为Excel
  • 产品哲学:用户收益>操作成本,字节跳动成功的底层逻辑
  • Golang 处理字符串与整型数值相互转换的最佳实践
  • 【备忘】PHP web项目一般部署办法
  • AI LLM大模型逆向环境搭建radare2 + r2mcp + r2ghidra
  • 【设计模式】UML图与工厂模式
  • 提升开发思维的设计模式(上)
  • spring:使用注解@Configuration、@ComponentScan创建配置类(未完待续)
  • C语言:字符函数