Upload
forrest-shields
View
118
Download
8
Embed Size (px)
DESCRIPTION
第十二讲 C6000 的中断系统. 内容提要. C6000 的中断机制 中断的硬件响应 中断源的选择与使能控制 中断向量表 中断处理的时序与延迟 中断服务程序. 引子. 什么是中断 为什么需要中断系统 处理器需要怎样做支持中断 Storage of interrupt requests Program controlled enabling and masking Forced branch to a new program Saving the program state Cause identification State restoration - PowerPoint PPT Presentation
Citation preview
第十二讲 InterruptBIT / TI 3
引子• 什么是中断• 为什么需要中断系统• 处理器需要怎样做支持中断
– Storage of interrupt requests– Program controlled enabling and masking– Forced branch to a new program– Saving the program state– Cause identification– State restoration引自: Encyclopedia of Computer Science and Engineering
第十二讲 InterruptBIT / TI 4
概述— C6000 中断• 中断事件—— 32 个• 中断源——同时处理 14 个( 15 )• 中断事件选择• 外中断信号 4 (8/12) 个• 8 个控制寄存器
第十二讲 InterruptBIT / TI 5
概述—中断源优先级 中断名最高 RESET
NMIINT4INT5INT6INT7INT8INT9INT10INT11INT12INT13INT14
最低 INT15
•按优先级分为三类
第十二讲 InterruptBIT / TI 6
概述—中断事件 I中断选择号 中断缩写 描述
00000b DSPINT 主机发向DSP的中断00001b TINT0 Timer 0 中断00010b TINT1 Timer 1 中断00011b SD_INT EMIF SDRAM 定时器中断00100b EXT_INT4 外部中断管脚400101b EXT_INT5 外部中断管脚500110b EXT_INT6 外部中断管脚600111b EXT_INT7 外部中断管脚701000b DMA_INT0 DMA通道0中断01001b DMA_INT1 DMA通道1中断01010b DMA_INT2 DMA通道2中断01011b DMA_INT3 DMA通道3中断01100b XINT0 McBSP 0 发送中断01101b RINT0 McBSP 0 接收中断01110b XINT1 McBSP 1 发送中断01111b RINT1 McBSP 1 接收中断10000b 保留10001b XINT2 McBSP 2 发送中断[注]
10010b RINT2 McBSP 2 接收中断[注]
Other 保留
C6201/6202/6701 的中断事件 (16/18)
第十二讲 InterruptBIT / TI 7
概述—中断事件 II
中断选择号 中断缩写 描述00000b DSPINT 主机发向DSP的中断00001b TINT0 Timer 0 中断00010b TINT1 Timer 1 中断00011b SDINT EMIF SDRAM 定时器中断00100b EXT_INT4 外部中断管脚400101b EXT_INT5 外部中断管脚500110b EXT_INT6 外部中断管脚600111b EXT_INT7 外部中断管脚701000b EDMA_INT EDMA通道(0到15)中断01001b Reserved 保留01010b Reserved 保留01011b Reserved 保留01100b XINT0 McBSP 0 发送中断01101b RINT0 McBSP 0 接收中断01110b XINT1 McBSP 1 发送中断01111b RINT1 McBSP 1 接收中断Other 保留
C6211/6711 的中断事件 (13)
第十二讲 InterruptBIT / TI 8
中断处理—寄存器 控制寄存器 全称 功能
CSR Control status register 对中断进行整体使能/禁止IER Interrupt enable register 中断使能IFR Interrupt flag register 中断状态标志ISR Interrupt set register 手工设置IFR中的中断状态标志ICR Interrupt clear register 手工清除IFR中的中断状态标志ISTP Interrupt service table
pointer中断向量表的起始地址
NRP Nonmaskable interruptreturn pointer
存放不可屏蔽中断的返回地址
IRP Interrupt return pointer 存放可屏蔽中断的返回地址中断控制寄存器
-->GIE
-->poll
第十二讲 InterruptBIT / TI 9
中断处理—寄存器
控制寄存器地址
控制寄存器名字 描述
019C0000h Interrupt multiplexer high 选择CPU中断10~15的对应中断源
019C0004h Interrupt multiplexer low 选择CPU中断4~9的对应中断源
019C0008h External interrupt polarity 选择外中断信号(INT4~INT7)的触发极性
中断控制寄存器
第十二讲 InterruptBIT / TI 13
中断处理—后处理
CPU的操作 描述0 IFR (bit) 清除响应的中断标志位GIE PGIE 保存当前 GIE值
0 GIE 全局禁止中断保存下一个 EP地址 在 IRP/NRP中保存返回地址向量 PC 将向量地址调入 PC
1 IACK管脚 输出 IACK信号INUM(0~3) INUM管脚显示当前的中断
中断被识别之后,如果被使能…
第十二讲 InterruptBIT / TI 18
ISR— ISTP
• 给出中断向量表的基地址• 256-word 边界对齐• 用于 IST 的重定位• reset 向量必须在地址 0 处
ISTP
第十二讲 InterruptBIT / TI 19
ISR— 环境的保护• 保存在 ISR 中使用的寄存器• 如果需要嵌套中断,必须保存 CSR 和 IR
P• 可以应用堆栈,在汇编程序进行环境保护• C 编译器可以自动完成有关环境的保护
第十二讲 InterruptBIT / TI 20
ISR — C ISR & VECTOR
•必须在 C 的 ISR 中采用 interrupt 关键字•没有入口参数•没有返回值•由 C 编译器完成环境的保护•利用 IER/CSR cregister 进行中断的禁止 / 使能•建议:内部避免程序调用
第十二讲 InterruptBIT / TI 21
ISR — C ISR & VECTOR
当采用 C ISRs 时,如何创建与 C 环境兼容的中断向量?
1. 保护有关的寄存器2. 安全的跳转向 ISR
第十二讲 InterruptBIT / TI 22
ISR — 返回主程序完成返回的代码:
•当转向 ISR 时,下一个 EP 的地址自动被保存在 IRP/NRP 中•在 ISR 的末尾,由 B IRP/NRP 完成跳转返回•执行 B IRP 时, PGIEGIE
•执行 B NRP 时, NMIE=1