原创 C64x+ CPU中断

2011-6-10 10:31 3361 2 3 分类: 处理器与DSP

中断类型   

    在 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
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2012-11-10 14:52

学习了一下 ,谢谢分享

相关推荐阅读
用户1292047 2011-06-09 15:00
C64x+中断控制器
中断控制器的目的     中断控制器提供了一种方法来选择必要事件并将它们对应到相应的 CPU 中断或异常输入。   特征     中断控制器将系统事件与 CPU 中断和异常输入相连接。...
用户1292047 2010-10-24 17:03
看史偶感
       军纪的变迁。       一种是放任士兵烧杀掠夺,这是自古以来太多太多的。一些人翻身后便忘记自己原来是谁。       一种是严明军纪的,即使是士兵掠夺一针一线,也要军法处置,最重的便是...
用户1292047 2010-09-20 13:46
debug下找不到msvcr80.dll
    很久之前就遇到这个问题,当时硬盘格式为fat32,然后在网上搜索了一把,说是将项目属性中将清单工具中的使用fat32解决方法改为是。照此法改后没有了报找不到msvcr80.dll,但依然不能d...
用户1292047 2010-09-20 13:46
期待--毕业的方向
         转眼间,离毕业只有10个月了。现在苦恼着毕业的去向。        早在几个月前,我已将工作排除在外了,不是自己惧怕去工作,自己在大学期间投入了不少时间在专业上,可以说找个较好的工作...
用户1292047 2010-09-20 13:45
真的是我们不够努力吗?
现在,我明白了,其实不是我们不够努力,不是我们不够优秀,而是我们不能掌控游戏规则,也就不能掌控我们的人生啦。游戏规则由他人而定,我们努力照做了,但结果是评判标准相对于游戏规则是另一套。我们只是也只有被...
EE直播间
更多
我要评论
1
2
关闭 站长推荐上一条 /3 下一条