C6000 DSP程序结构:伪指令与中断处理

需积分: 50 72 下载量 107 浏览量 更新于2024-08-24 收藏 673KB PPT 举报
本文主要介绍了DSP程序结构,特别是针对C6000系列,涉及到指令系统,包括伪指令和命令助记符,并提及了中断向量表和存储器映射在程序开发中的重要性。 在C6000 DSP程序中,指令系统包括伪指令和命令助记符。伪指令不实际被执行,而是对汇编过程进行控制或定义数据结构,它们以圆点开头。例如,`.sect "name"`用于创建数据或代码段,`.double value`、`.float value`、`.int value`等则分别用于定义不同大小的数值存储空间。这些伪指令帮助程序员有效地组织和管理内存。 中断向量表是系统响应中断时转移控制的关键,它在"vectors.asm"文件中定义,确保在"RESET"中断发生时,程序能够跳转到"C_int00"入口点。用户可以根据需求自定义中断向量表,或者利用DSP/BIOS库生成。 在C6000 DSP的存储器映射中,编译器将C语言源代码编译成COFF格式的目标文件,其中代码段通常命名为`.text`。全局变量和静态变量被分配到`.bss`段,而局部变量则可能存储在寄存器中或者`.stack`段。`.stack`和`.sysmem`段是专门为堆栈和动态内存分配预留的,但如果没有使用如`malloc`等动态内存函数,`.sysmem`段将不会被生成。 编程时,内存模式选项需要在高级编译器设置中配置,而在程序运行时,必须正确设置中断使能寄存器(如IER)以及最后打开全局中断来启用非 maskable interrupt (NMI)。 理解C6000 DSP的C编译器如何处理代码至关重要,因为这与传统的微机环境下的C编程有显著差异。例如,编译器根据变量的作用域将其分配到不同的内存段,对于未使用的动态内存管理函数,相应的段将不会被创建。 在实践中,正确配置中断向量表,合理利用不同段存储数据,以及理解和适应C6000 DSP的内存模型,都是优化程序性能和确保正确执行的关键因素。同时,了解编译器的优化行为,如寄存器分配和内存分配策略,有助于编写高效且可靠的代码。