第 2 页,共 2 页12

中断配置方法2:

#pragma DATA_SECTION("vectors")//将中断向量绝对定位到0×80处 uVectorEntry g_pfnVectors[] = {     ISR_Reset(),   //reset      0×0080 #0//软硬件复位nISR_REST     ISR_Default(), //nmi        0×0084 #1//非屏蔽中断nISR_NMI     ISR_Default(), //sint17     0×0088 #2//软件中断17        ISR_Default(), //sint18     0x008c #3//软件中断18     ISR_Default(), //sint19     0×0090 #4//软件中断19     ISR_Default(), //sint20     0×0094 #5//软件中断20     ISR_Default(), //sint21     0×0098 #6//软件中断21     ISR_Default(), //sint22     0x009c #7//软件中断22     ISR_Default(), //sint23     0x00a0 #8//软件中断23     ISR_Default(), //sint24     0x00a4 [...]

中断配置方法1:TI C64X DSP中断向量表配置(硬件中断)

下边方法的思路:建立一个新的中断向量表;将现有中断添加入中断向量表中;将新建的中断向量表映射到相应的位置。   1. 编写中断服务例程 在.c源文件中编写ISR函数c_intXX,用于中断处理,如: interrupt void c_intXX (void) {            …; } 注:对于硬件中断而言,XX = 00~15。 2.初始化中断向量表,并在内存段中的中断向量表中配置好对应的中断向量            首先是把中断向量表定位到某一内存段中,我们可以在cmd文件中配置中断向量表的内存映射,如: MEMORY {            VECTORS:         org = 00000000h,       len = 00000400h            L2SRAM:            org = 00000400h,       len = 00100000h            SDRAM:             org = 80000000h,       len = 10000000h } SECTIONS {            .vecs                  :>            VECTORS            .data                  :>            [...]

CCS查看DSP程序运行时间

以下方法还没有验证。 即将验证: 1.进入CCS环境,装载已有工程,并load生成的.out文件,并找到要察看代码执行周期的代码处。如图1所示。 图1 1. 选择ccs的菜单Profiler中的enable clock,如图所示。 Technorati 标签: ccs,dsp 图2 2. 选择Profiler菜单下的 clock setup子菜单,并在Instruction Cycle中输入你的DSP时钟周期,它的单位为纳秒,例如,2407的系统时钟为40MHz,你就该填入25,如果是2812系统时钟为150MHz,就该填入6.67ns,其他配置不动,然后确定。如图3所示。 图3 3. 选择Profiler菜单下的Start New Session子菜单,出现如图4所示的对话框,可以改名字,也可以不改,本例中不修改,直接确定。 图4 4. 通过第四部设定后就出现了如图5所示的一个窗体。 这个窗体中,有四个选项卡,其中Files为以源文件列出统计数据,Functions选项卡用于剖析程序中的函数,Ranges用于剖析一段连续的代码,Setup用于设置开始点和结束点,用于剖析不连续的代码。 窗体的左边按钮的含义为:(这里介绍主要的) 剖析所有的函数。 建立剖析区域。 设置开始点。 设置结束点。 在窗体中剖析数据有一个表格,用红框圈起来的,每个表格的字段名的含义为: Code size:剖析代码的大小,以程序存储器最小可寻址单元为单位,此值在剖析过程中不会发生变化。 Incl. Count:在统计过程中,程序运行进入剖析代码段的次数 Incl. Total: 在统计工程中剖析代码段消耗的所有时钟周期(如果是统计时钟周期的话,CCS还可以统计子程序调用等其他计数,统计其他特性则显示相应的值)。 Incl. Maximum: 执行剖析代码段一遍(包括在剖析代码段中对子程序的调用)消耗的最大时钟周期(由于每次进入剖析代码段的初始条件不同等原因,每次运行剖析代码段消耗的时钟周期可能不同); Incl. Minimum:   执行剖析代码段一遍(包括在剖析代码段中对子程序的调用)消耗的最小时钟周期 Incl. Average: 剖析代码段执行一遍(包括在剖析代码段中对子程序的调用)消耗的平均时钟周期。– 以上这三个就是用户关心的代码执行的时钟周期。 Excl. Count:在统计过程中,程序运行进入剖析代码段的次数,与Incl.Count的值相同。 Excl. Maximum: 剖析代码段执行一遍(不包括在剖析代码段中对子程序的调用)消耗的最大时钟周期。 Excl. Minimum: [...]

Ti DSP中的各种文件解析

在ti的DSP程序设计中,总的说一个完整的工程需要由库文件(.lib),头文件(.h),源文件(.c)和CMD文件(.CMD)组成,缺一不可。另外,还有一种GEL文件。 通用扩展语言(.GEL) 什么是GEL文件?GEL文件的作用是什么呢? GEL是通用扩展语言(General Extension Language)是一种解释语言,类似于C语言。GEL函数可以用来扩展CC的功能,方便用户调试程序。CCS提供丰富的内嵌GEL函数,用户也可以定义自己的GEL函数。在处理器属性的GEL文件窗内为每个处理器选择用户的GEL文件(扩展名为 .gel) 需要注意的是:GEL文件用于初始化DSP。GEL在CCS下有一个菜单,可以根据DSP的对象不同,可以用gel来调用一些菜单命令,对DSP的存储器进行配置,设置不同的初始化程序。 在我们的调试中,出现过仿真器突然不能下载的情况。分析原因,是因为修改了gel的PMST参数,将它设置成了0xffac。经过验证,这个参数设置会导致仿真器失常,下载出错。将它设置成0x00ac、0x7fac等等都没有问题。 CMD文件(.CMD) 以.CMD为扩展名的文件,这个文件的作用是用来分配存储空间的。由于DSP编译器的编译结果是未定位的,DSP也没有操作系统来定位执行代码,DSP系统的配置需求也不尽相同,因此我们根据实际的需求,自己定义代码的存储位置。打个通俗的比喻,就是我们有一个仓库,现在需要把货物存放到仓库里面去,为了便于日后取用货物,我们将货物分门别类,然后把它们存放到指定的位置去。把哪些货物放到哪个位置的规则,就是我们的CMD文件的内容。 CMD文件又分成两种。一种是分配RAM空间的–微计算机模式(仿真模式)—XMP/MC`=0,用来将程序load到RAM内进行调试,因为我们大部分时间都是在调试程序,所以多用这类CMD,另一种是分配FLASH空间—–微处理器模式—XMP/MC`=1,当程序调试完毕后,需要将其烧写到FLASH内部进行固化,这个时侯我们 就需要使用这类CMD文件了。 库文件(.lib) .lib是库文件,rts.lib是TI提供的运行时支持库,如果是C代码写的源程序,必须要包含该库。该库由TI公司做好了,放在CCS的\cgtools\lib中,源代码TI网站可以下载。但是我们无法查看.编辑TI所提供的库文件内容 我们也可以添加自己的库,可在newproject中新建 头文件(.h) 源文件(.c)