DSP软件常见错误

1、仿真器驱动的问题。CCS和仿真器驱动要装在同一路径下,最好都选择其默认的路径。有时,通过usb20emurst.exe检验到仿真器连接是好的,但打开CCS时,仍然跳出窗口提示Can’t initialize target CPU。还是因为仿真器驱动安装问题,先将仿真器换一个usb接口试一下,如仍提示错误,则要重新安装驱动。

2、CCS配置。选择C64xx XDS510 Emulator;Configuration File选择Auto-generate board data file with extra configuration项,C:\\ti\\drivers\\Seedusb2.cfg;I/O Port 0x240;Startup GEL:C:\\ti\\cc\\gel\\SEEDDM642.gel。

3、编译错误: SEED301_AverageSmooth\\AverageSmoothloop2.jpt error: illegal relocation type found in section .debug_info, file 是因为rts6400.lib库文件与CCS版本不符。库文件要使用CCS安装文件夹自带的。

4、编译错误:symbol xxx is defined multiple times. (1)因为库文件的问题,更改库文件;

(2)是因为将本应该在include下的文件加在了source里。注意:在

uCOS_II.c文件里有include语句,包括了os_core.c、os_flag.c、os_mbox.c、os_mem.c、os_mutex.c、os_q.c、os_sem.c、os_task.c、os_time.c文件,因而这些文件不需手动加入工程。

(3)源文件添加过多,造成变量重复定义。 5、编译错误:symbol xxx is undefined。 出现symbol错误,一般都是因为库文件的问题。 6、编译错误:fatal error: #error NO CHIP DEFINED

解决方法:build options->compiler->preprocessor->define symbols:添加上实际的DSP芯片的型号,本工程为_DEBUG;CHIP_6416。

7、endian模式问题。little endian和big endian是计算机字节顺序的两种格式,所谓字节顺序指的是长度跨越多个字节的数据的存放形式。little endian把低字节存放在内存的低位;big endian将低字节存放在内存的高位。现在主流的CPU,intel系列采用little endian,motorola系列的CPU采用big endian。本工程中使用的C6416EVM,J25脚为endian模式选择脚,开路为little endian,短路为big endian,本工程选择little endian模式。

8、CDM文件。CMD文件是用来分配ROM和RAM空间的,告诉链接程序怎样计算地址和分配空间。CMD给每个段分配地址,当想从一个段跳到另一个段时,就可以知道这个段的起始地址。

CMD文件包括两个部分:MEMORY和SECTIONS。例: MEMORY {

PAGE 0: 03FC0h

00100h

PAGE 1: 00100h

00020h

} SECTIONS {

.text .cinit : .switch : .const : .data origin = 00000h, length = 00040h LOW: origin = 00040h, length = SARAM: origin = 04000h, length = 00800h B0: origin = 0FF00h, length = B0: origin = 00200h, length = 00100h B1: origin = 00300h, length = B2: origin = 00060h, length = SARAM: origin = 08000h, length = 00800h { } > LOW PAGE 0 { } > LOW PAGE 0 { } > LOW PAGE 0 { } > SARAM PAGE 1 { } > SARAM PAGE 1

VECS: : : .bss : { } > SARAM PAGE 1 .stack : { } > SARAM PAGE 1 .sysmem : { } > SARAM PAGE 1 }

(1)系统定义:

.cinit 存放C程序中的变量初值和常量;

.const 存放C程序中的字符常量、浮点常量和用const声明的常量; .switch 存放C程序中switch语句的跳针表; .text 存放C程序的代码;

.bss 为C程序中的全局和静态变量保留存储空间; .far 为C程序中用far声明的全局和静态变量保留空间;

.stack 为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;

.sysmem 用于C程序中malloc、calloc和realloc函数动态分配存储空间。 (2)用户定义:

#pragma CODE_SECTION (symbol, \#pragma DATA_SECTION (symbol, \

另:CMD文件中,可以不指定heap和stack的大小。编译的时候只会警告。CMD文件中的注释只能使用/*……*/。

9、打印数组时,printf(\

10、CCS中,unsigned short为2个字节,unsigned int为4个字节。 11、文件中include语句的使用。如果A include B,且A、B属于同一文件夹,那就直接#include “B”;若B在另一个文件夹里(例如B在my文件夹里),那就#include “.\\my\\B”;若A在文件夹里,而B在文件夹外,则#include “..\\B”(注意点的个数)。

12. warning: creating .stack section with default size of 1024 bytes.

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4