这里,我们已经讨论的实时代码的例子大部分是用C语言写的,并且作为CCS工程处理。为了使这些例子容易被读者掌握,以及展现软件工程的基本原理,当我们生成所有CCS工程时使用一致的和标准的格式。下面的讨论展示了一个典型的文件集,这些文件集将在我们的CCS工程中见到,下面会简要介绍它们的作用。
我们将假设示例工程的名为myProject,它有如下的联合文件。在common_code目录下有main.c、DSK_Support.c、DSK_Config.h、DSK_Support.h、c6x11dsk.h、vectors.asm和lnk7.cmd。在单独的CCS目录中有特别的文件,即myProject.pjt、StartUp.c和ISRs.c。
存储在common_code目录中的这些文件可以供多个工程使用,不需要根据不同的工程改变。
●main.c是最高级文件,包含了程序的初始的开始代码。在文件main.c中的main()函数有意设计成停止运转在一个无结尾的“while”循环中,所以程序能够根据实时中断的需要来进行响应。
●DSK_Support.c包含了一些用于配置和初始化DSP外设的函数。这部分代码是十分深奥的,并且具有详细的目的。幸亏不用无原因地对它们进行任何改动。
●DSK_Config.h包含了一系列#define声明。通过不注释掉需要的行,正确的DSP和编解码初始化软件会自动运行。
●DSK_Support.h包含了DSK_Support.c需要的函数原型和几个支持编解码类型的枚举类型。
●c6x11dsk.h包含对许多在DSP中出现的外设寄存器的声明。(www.xing528.com)
●vectors.asm用于填充DSP的中断矢量表。当DSP接收到一个使能的中断,DSP将跳转到与中断号相对应的中断表的位置并开始执行。在这个文件中,分支结构已经被放置到中断中,这些中断被配置为串口服务编解码。这将引起函数McB- SP_Rx_ISR()和McBSP_Tx_ISR()运行在响应多通道缓存串口(McBSP)中断。
●lnk7.cmd控制连接器(linker)的操作。连接器(linker)用所有的来自于∗.c和∗.asm的目标文件,并且结合在一起生成一个单一的可执行文件。为了完成这些工作,连接器命令文件标出其所在内存的物理地址,并且指出代码段怎样放到合适的物理地址。
在相关章节下的具体工程中,上述这些文件都存储在单独的CCS工程目录中。
●myProject.pjt是一个用于CCS存储所有与工程相关信息的文件。它包含了一个文件清单,这些文件是工程的一部分,还包含许多可能的工程选项。这些选项包括目录选择、最佳设定、文件生成等。在提供的软件中,通常这个文件不应直接编辑。
●StartUp.c,在主函数main()的“while”内循环停止之前,为本工程必须执行的代码提供一个空间。这包括系数或者缓存初始化。在main.c文件中,Star- tUp.c被主函数main()叫为StartUp()函数。在许多工程中,这个函数是空的。
●ISRs.c包含接收输入数据和发送输出数据(例如中断服务程序程序函数McBSP_Rx_ISR()和McBSP_Tx_ISR())的中断服务程序。中断服务程序在响应McBSP中断中执行。这是真正的实时代码,在下一个中断到达之前,这个代码必须全部执行完毕,否则数据将丢失。为DSP算法开发的大部分主要代码都被放在两个函数中。
通过这个简要的讨论,希望所有我们的CCS工程样式对你都是有意义的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。