基于C语言设置TMS320 DSP中断向量表

基于C语言设置TMS320 DSP中断向量表

摘要: 随着DSP芯片应用的不断深入,用C语言开发DSP芯片,不仅可以使DSP芯片的开发速度大大提高,也使得程序的修改和移植变得十分方便。C语言设置TMS320系列DSP中断向量表是高级语言开发DSP的一个具体应用。

关键词: C语言,中断,中断向量表,DSP。


Setting TMS320 DSP Interrupt Vectors Table in C
Abstract Along with the development of DSP chip, the exploiture of DSP in C not only accelerate the evolution of DSP ,but also make the program easy to modify and transplant. This is a practice application that setting TMS320 DSP interrupt vectors table in C.

Key Words C language, Interrupts, Interrupt vector table, DSP.

1、 引言
DSP(数字信号处理器)自二十世纪70年代末80年代初诞生以来,得到了突飞猛进的发展,在信号处理、通讯、雷达等方面应用越来越广泛,而且开发手段和开发设备也越来越多样化。其中C语言在DSP开发应用中起着越来越重要的作用,以C语言编写的DSP应用程序具有可读性、可移植性,易于维护和修改。另外在DSP应用系统中,中断是完成数据传递、实时处理等的重要手段,因而用C语言完成对DSP中断设置是DSP开发的重要内容。
DSP中断的设置主要包括中断服务程序的编写,中断向量表的设置,中断寄存器的初始化等内容。本文以TI公司TMS320系列DSP为例,说明用C语言设置中断向量表的方法。并给出实例进行说明。
2、 中断向量表的定位
中断服务程序的地址(中断向量)要装载到存储器的合适区域。一般这些向量都定位在0x0开始的程序存储器中。但有些处理器要求或者可以在其他的存储区域安装中断向量。
对于微处理器模式下的TMS320C25、TMS320C26、TMS320C28、TMS320C30、TMS320C31,中断向量定位于0x0开始的地址。对于微计算机/程序引导模式下的TMS320C31的中断向量定位于0x809fc1,TMS320C26的中断向量定位于0xffa0。TMS320C5X复位向量定位在0x0,其他中断向量可以定位于任何2K字的程序存储器中,中断向量表的定位是与PMST寄存器的IPTR位有关,有效的中断向量表的基地址是0x0,0x800,0x1000,0x1800,0x2000,…0xf800。
TMS320C4X的复位向量定位在四个地址之一,这四个地址由外部引脚RESETLOC0和RESETLOC1决定。TMS320C4X的中断向量可存在于任何512字范围的存储器中,中断向量表的地址由中断向量表指针(IVTP)寄存器决定。另外,TMS320C4X的自陷(trap)中断向量可存放在512字范围的存储器中,自陷向量表的地址由自陷向量表指针(TVTP)寄存器决定。有效的中断或者自陷向量表的基地址是0x0,0x200,0x400,0x800,0xa00,0xc00,0xe00,0x1000,0x1200…0xfffffe00,如表1所示。
有两种方法可以初始化中断向量表,下面讲解这两种方法:
方法一:利用已命名的.ASM段
生成向量表的最直接方法就是用汇编指令.sect来生成一个表。这个表包含中断向量的地址和跳转指令。
表1
处理器 向量表基地址 说明
TMS320C2X 0x0 不包括微计算机/程序引导模式下的TMS320C26
TMS320C26 0xffa0 微计算机/程序引导模式
TMS320C30 0x0
TMS320C31 0x0 微处理器模式
TMS320C31 0x809fc1 微计算机/程序引导模式

TMS320C4X 复位 0x0,0x7fffffff,0x80000000,0xfffffff 外部引脚RESETLOC0和RESETLOC1决定
中断向量 任意512字范围 IVTP寄存器决定
自陷向量 任意512字范围 TVTP寄存器决定
TMS320C5X 复位 0x0
中断向量 任意2K字数据页 PMST寄存器的IPTR位决定
在微计算机/程序引导模式下TMS320C2X、TMS320C5X和TMS320C31 从中断向量的位置处执行代码,因而要用跳转指令来代替中断向量,如TMS320C31用24位指令BR来实现:
INT1: BR _c_int01
在微处理器模式下TMS320C30、TMS320C31和TMS320C4X,中断向量是下一条存取指令的地址,因而中断服务程序的地址用汇编指令.word存储在中断向量处。例如,TMS320C4X中断1 可用汇编语言定义如下:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 yyfangchan@163.com (举报时请带上具体的网址) 举报,一经查实,本站将立刻删除