中断类型

在 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中断相关推荐

  1. 8.4-中断系统小结(cpu中断七个问题)

    [README] 本文转自bilibili<计算机组成原理(哈工大刘宏伟)>的视频讲解,非常棒,墙裂推荐: [1]中断介绍 1)作用:用中断系统实现了外设数据的输入输出: 还可以用于程序调 ...

  2. CPU中断的硬件实现原理

    内容整理自较早前的微机原理学习笔记,重点梳理了实现硬件中断机制所依赖几个数据结构和硬件原件. 为什么需要中断? 中断机制的出现是为了协调处理器与外部设备速度不一致的问题,以提高处理器的利用率. 试想我 ...

  3. 【计算机组成原理】CPU中断系统

    一.中断系统概述 1.引起中断的各种因素 (1)人为设置的中断 这种中断一般称为自愿中断,因为它是程序中人为设置的,故一旦机器执行这种人为中断,便自愿停止现行程序而转入中断处理. (2)程序性事故 如 ...

  4. TI C64X DSP中断向量表的配置(硬件中断)-- 转自新浪博客

    1. 编写中断服务例程 在.c源文件中编写ISR函数c_intXX,用于中断处理,如: interrupt void c_intXX (void) { -; } 注:对于硬件中断而言,XX = 00~ ...

  5. C64x+ Megamodule概述

    C64x+ megamodule包含:C64x+ CPU.L1P.L1D.L2.IDMA(内部DMA).BWM(带宽管理).INTC(中断控制器).PDC(power-down控制器)和EMC(外部存 ...

  6. DSP 中断用法示例

    转:注:内容为搬运 原网址:http://processors.wiki.ti.com/index.php/Configuring_Interrupts_on_Keystone_Devices 关键概 ...

  7. 中断原理在计算机中的应用,计算机组成原理期末考试简答题重点

    6.DMA方式和程序中断方式比较有什么不同? DMA:采用内在和外设直接数据交换的方式,只有当有一段数据传送时才会请求CPU中断,减少了CPU的负担. 程序中断:只适用于简单的少量外设的计算机系统,会 ...

  8. 硬中断与软中断的区别!

    硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...

  9. 【高并发】32位多核CPU并发读写long型数据为何会出现诡异问题?看完这篇我懂了!...

    来自:冰河技术 写在前面 大冰:小菜童鞋,前几天讲的知识点复习了吗? 小菜:复习了,大冰哥,我回去关注了你的公众号,收藏和转发了你的文章,看了好几遍呢!! 大冰:好的,一定要好好复习啊,今天,我们来分 ...

最新文章

  1. 2019诺贝尔生理学\医学奖率先颁出!英美3学者加冕,揭秘血与氧关系,抗击肿瘤和癌症...
  2. LIST-PROCESSING命令的使用
  3. net.sf包JSONArray与JSONObject遍历
  4. .NET Core开发实战(第34课:MediatR:轻松实现命令查询职责分离模式(CQRS))--学习笔记(下)...
  5. eclipse 扩展_Eclipse扩展的轻量级集成测试
  6. 关于hexo更新到GitHub后博客内容未变问题
  7. java http 下载_Java 通过 HTTP 下载文件
  8. python中什么是序列_在Python中,什么是字符串序列?(或者是油嘴滑舌的虫子?)...
  9. springboot定时删除log4j_SpringBoot整合log4j2进行日志配置及防坑指南
  10. 结构型设计模式(2)—— 外观模式(Facade Pattern)
  11. Windows驱动开发技术详解——经典书评
  12. Python文件之----CSV
  13. 例3.1 括号匹配问题 - 九度教程第26题(栈的应用)
  14. Halcon 《机器视觉算法及应用》十例(其四)
  15. 信息系统项目管理师必背核心考点(二十六)三点估算(PERT)
  16. bmp图片批量转为jpg格式文件?
  17. 女孩,既要懂得暧昧,又要懂得拒绝 【20cn 依依】
  18. 数学建模及数据分析上的插值处理——第三部分实践插值实战
  19. Intel IPP密码库 IPPCP 2018——第二部分 对称密码算法开发说明与示例代码
  20. VMware提示【该虚拟机似乎正在使用中】的解决方案

热门文章

  1. 自然语言处理NLP课程不会选择?这篇测评或许可以解你困惑
  2. VMware虚拟化- vCenter Server概况及安装要求
  3. Nginx配置SSL证书(CentOS环境),实现https请求
  4. 训练记录(Wiki备份)
  5. BLE 传输速率/数据吞吐量(Data Throughput)
  6. 7805扩流电路(转)
  7. 【报告分享】2021年中国奢侈品行业营销白皮书-群邑百度(附下载)
  8. 2021地理信息技术与应用技能大赛比赛试题
  9. 并行度和并发数的比较
  10. `Computer-Algorithm` 差分约束系统,不等式组