C64x+ CPU中断
中断类型
在 CPU 中有 4 种中断类型:
• 复位
• 可屏蔽
• 不可屏蔽
• 异常 ( 仅 C64x+ 核 )
表 1 中断优先级
Priority |
Interrupt Name |
Interrupt Type |
Highest |
Reset |
Reset |
NMI |
Nonmaskable |
|
INT4 |
Maskable |
|
INT5 |
Maskable |
|
INT6 |
Maskable |
|
INT7 |
Maskable |
|
INT8 |
Maskable |
|
INT9 |
Maskable |
|
INT10 |
Maskable |
|
INT11 |
Maskable |
|
INT12 |
Maskable |
|
INT13 |
Maskable |
|
INT14 |
Maskable |
|
Lowest |
INT15 |
Maskable |
复位
复位是最高优先级的中断,用来暂停 CPU 并使其返回到一个已知状态。复位中断在多种方式中是独特的:
• 复位信号低电平有效。所有其他的中断都是高电平有效。
• 复位信号在它再次变高来重新正确初始化 CPU 前必须持续 10 个周期低电平。
• 正在执行的指令停止并且所有的寄存器返回到默认状态。
• 复位中断服务取包必须在特定的地址。
• 复位不会被其他打断。
非屏蔽中断 (NMI)
对于发生的 NMI 的处理,位于中断使能寄存器 (IER) 中的非屏蔽中断使能 (NMIE) 位必须设置为 1 。如果 NMIE 设置为 1 ,唯一可以阻止 NMI 处理的是当 NMI 发生在其他中断的延时时。
在复位时 NMIE 被设置为 0 来阻止复位中断。在一个 NMI 产生是将其清零可以阻止另外一个 NMI 进行处理。不可以手动清除 NMIE ,但是可以设置 NMIE 来允许嵌套 NMIs 。当 NMI 被清除时,所有的可屏蔽中断 (INT4-INT15) 被禁止。
在 C64x+ CPU 中,如果在一个 SPLOOP 操作中一个 NMI 被识别,其表现将和 NMI 作为一个异常使能一样。 SPLOOP 操作将立即停止。在 NMI/ 异常任务状态寄存器 (NTSR) 中的 SPLX 位被设置。 NMI 服务程序必须将此视为一个是否返回到中断代码的可能的一个因子。如果 NTSR 中的 SPLX 位已经设置,那么返回到中断代码结果将是错误的操作。
可屏蔽中断 (INT4-INT15)
CPU 有 12 个可屏蔽的中断。拥有最低的优先级。这些中断可以用于外部器件、片上外设、软件控制等。
假设一个可屏蔽中断不发生在其他的分支时延上,处理一个可屏蔽中断则下面的条件必须满足:
• 控制状态寄存器 (CSR) 中的全局中断使能位 (GIE) 设置为 1 。
• 中断使能寄存器 (IER) 中的 NMIE 位设置为 1 。
• 中断使能寄存器 (IER) 中对应的中断使能 (IE) 位设置为 1 。
• 相应的中断发生,在中断标记寄存器 (IFR) 中设置相应的位为 1 并且没有高优先级的中断标记位在 IFR 中被设置。
中断服务表
当 CPU 开始处理一个中断时,它将引用中断服务表 (IST) 。 IST 是一个获取包含服务中断代码的包的表。 IST 包含 16 个连续的获取包。每一个中断服务获取包 (ISFP) 包含最多 14 条指令。一个简单的中断服务程序可以放入一个独立的获取包中。
图 1 中断服务表
中断服务获取包 .
一个 ISFP 是一个用于服务一个中断的获取包。一个 ISFP 包含一个中断服务程序并足够小能置于一个获取包中。为了返回主程序, FP 包含一个放回指针指令 (B IRP ) 。后面跟着 NOP 5 指令来允许能够执行流水线。对于一个获取包放不下的情况请参照手册。
图 2 中断服务获取包
中断服务表指针
复位获取包必须位于默认位置,但是剩下的 IST 可以置于程序存储区的任何在 256 字边界范围内。 IST 的位置由中断服务表指针寄存器 (ISTP) 中的中断服务表基址 (ISTB) 域决定。
因为在 ISTP 中的 HPEINT 域给最高优先级中断的值来等待和使能,整个 ISTP 给最高优先级中断地址。
表 2 中断控制寄存器
Acronym |
Register Name |
Description |
CSRt |
Control status register |
Allows you to globally set or disable interrupts |
ICR |
Interrupt clear register |
Allows you to clear flags in the IFR manually |
IER |
Interrupt enable register |
Allows you to enable interrupts |
IFR |
Interrupt flag register |
Shows the status of interrupts |
IRP |
Interrupt return pointer register |
Contains the return address used on return from a maskable interrupt. This return is accomplished via the B IRP instruction |
ISR |
Interrupt set register |
Allows you to set flags in the IFR manually |
ISTP |
Interrupt service table pointer register |
Pointer to the beginning of the interrupt service table |
ITSR |
Interrupt task state register |
Interrupted (non-NMI) machine state. (C64x+ CPU only) |
NRP |
Nonmaskable interrupt return pointer register |
Contains the return address used on return from a nonmaskable interrupt. This return is accomplished via the B NRP instruction. |
NTSR |
Nonmaskable interrupt task state register |
Interrupted (NMI) machine state. (C64x+ CPU only) |
TSR |
Task state register |
Allows you to globally set or disable interrupts. Contains status of current machine state. (C64x+ CPU only) |
全局使能和禁止中断
在控制状态寄存器 (CSR) 中包含控制中断的两个域,即 GIE 和 PGIE 。
在 C64x+CPU 中,有一个物理的 GIE 位映射到 CSR 和 TSR 的第 0 位。同样地是,有一个物理的 PGIE 位,映射到 CSR.PGIE( 位 1) 和 ITSR.GIE( 位 0) 。修改任何其中的位将反映到其映射的位。
全局中断使能 (GIE) 允许通过控制单个位的值来使能或禁止所有的可屏蔽中断。
• GIE = 1 使能可屏蔽中断使之能够进行处理
• GIE = 0 禁止可屏蔽中断使之不能被处理
C64x+ CPU 提供两个新的指令来更加简单安全操作 GIE 位。
• DINT 指令通过以下来禁止中断 :
– 拷贝 CSR.GIE ( 和 TSR.GIE) 值到 TSR.SGIE
– 清除 CSR.GIE 和 TSR.GIE 为 0( 立即禁止中断 )
CPU 在包含 DINT 的 执行包和其后的执行包之间 不会响应中断。
• RINT 指令通过以下来恢复中断到以前状态:
– 拷贝 TSR.SGIE 的值到 CSR.GIE( 和 TSR.GIE)
– 清除 TSR.SGIE 为 0
独立的中断控制
有效的为中断提供服务要求对所有 3 种类型的中断进行独立的控制。通过中断使能寄存器 (IER) 可以使能或禁止单一的中断。等待中断的状态存在中断标记寄存器 (IFR) 。通过使用中断设置寄存器 (ISR) 和中断清除寄存器 (ICR) 来手动完成中断处理。中断返回指针中保存了响应不可屏蔽和可屏蔽中断后的上下文。
详情请参考手册《TMS320C64x C64x+ DSP CPU and Instruction Set Reference Guide》
请勿转载,谢谢! kevincole 2011-06-10 10:24:05
C64x+ CPU中断相关推荐
- 8.4-中断系统小结(cpu中断七个问题)
[README] 本文转自bilibili<计算机组成原理(哈工大刘宏伟)>的视频讲解,非常棒,墙裂推荐: [1]中断介绍 1)作用:用中断系统实现了外设数据的输入输出: 还可以用于程序调 ...
- CPU中断的硬件实现原理
内容整理自较早前的微机原理学习笔记,重点梳理了实现硬件中断机制所依赖几个数据结构和硬件原件. 为什么需要中断? 中断机制的出现是为了协调处理器与外部设备速度不一致的问题,以提高处理器的利用率. 试想我 ...
- 【计算机组成原理】CPU中断系统
一.中断系统概述 1.引起中断的各种因素 (1)人为设置的中断 这种中断一般称为自愿中断,因为它是程序中人为设置的,故一旦机器执行这种人为中断,便自愿停止现行程序而转入中断处理. (2)程序性事故 如 ...
- TI C64X DSP中断向量表的配置(硬件中断)-- 转自新浪博客
1. 编写中断服务例程 在.c源文件中编写ISR函数c_intXX,用于中断处理,如: interrupt void c_intXX (void) { -; } 注:对于硬件中断而言,XX = 00~ ...
- C64x+ Megamodule概述
C64x+ megamodule包含:C64x+ CPU.L1P.L1D.L2.IDMA(内部DMA).BWM(带宽管理).INTC(中断控制器).PDC(power-down控制器)和EMC(外部存 ...
- DSP 中断用法示例
转:注:内容为搬运 原网址:http://processors.wiki.ti.com/index.php/Configuring_Interrupts_on_Keystone_Devices 关键概 ...
- 中断原理在计算机中的应用,计算机组成原理期末考试简答题重点
6.DMA方式和程序中断方式比较有什么不同? DMA:采用内在和外设直接数据交换的方式,只有当有一段数据传送时才会请求CPU中断,减少了CPU的负担. 程序中断:只适用于简单的少量外设的计算机系统,会 ...
- 硬中断与软中断的区别!
硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...
- 【高并发】32位多核CPU并发读写long型数据为何会出现诡异问题?看完这篇我懂了!...
来自:冰河技术 写在前面 大冰:小菜童鞋,前几天讲的知识点复习了吗? 小菜:复习了,大冰哥,我回去关注了你的公众号,收藏和转发了你的文章,看了好几遍呢!! 大冰:好的,一定要好好复习啊,今天,我们来分 ...
最新文章
- 2019诺贝尔生理学\医学奖率先颁出!英美3学者加冕,揭秘血与氧关系,抗击肿瘤和癌症...
- LIST-PROCESSING命令的使用
- net.sf包JSONArray与JSONObject遍历
- .NET Core开发实战(第34课:MediatR:轻松实现命令查询职责分离模式(CQRS))--学习笔记(下)...
- eclipse 扩展_Eclipse扩展的轻量级集成测试
- 关于hexo更新到GitHub后博客内容未变问题
- java http 下载_Java 通过 HTTP 下载文件
- python中什么是序列_在Python中,什么是字符串序列?(或者是油嘴滑舌的虫子?)...
- springboot定时删除log4j_SpringBoot整合log4j2进行日志配置及防坑指南
- 结构型设计模式(2)—— 外观模式(Facade Pattern)
- Windows驱动开发技术详解——经典书评
- Python文件之----CSV
- 例3.1 括号匹配问题 - 九度教程第26题(栈的应用)
- Halcon 《机器视觉算法及应用》十例(其四)
- 信息系统项目管理师必背核心考点(二十六)三点估算(PERT)
- bmp图片批量转为jpg格式文件?
- 女孩,既要懂得暧昧,又要懂得拒绝 【20cn 依依】
- 数学建模及数据分析上的插值处理——第三部分实践插值实战
- Intel IPP密码库 IPPCP 2018——第二部分 对称密码算法开发说明与示例代码
- VMware提示【该虚拟机似乎正在使用中】的解决方案
热门文章
- 自然语言处理NLP课程不会选择?这篇测评或许可以解你困惑
- VMware虚拟化- vCenter Server概况及安装要求
- Nginx配置SSL证书(CentOS环境),实现https请求
- 训练记录(Wiki备份)
- BLE 传输速率/数据吞吐量(Data Throughput)
- 7805扩流电路(转)
- 【报告分享】2021年中国奢侈品行业营销白皮书-群邑百度(附下载)
- 2021地理信息技术与应用技能大赛比赛试题
- 并行度和并发数的比较
- `Computer-Algorithm` 差分约束系统,不等式组