1.用CCS打开/创建工程时,工程存放的路径名中不能有中文!(不像VS6、ISE等可以使用任意路径名)
2.国产并口DSP仿真器有些是采用CPLD仿真代替SMC34C60(该芯片已停产),仿真功能不全,只能在并口的EEP模式下使用。原装的仿真器采用SMC34C60,可在SPP、EPP、EPP+ECP三种模式下使用。此外,国产并口DSP仿真器(如开发板之家生产的)除了并口要选择EPP模式外,还要将并口中断IRQ7设置成“保留”(Reserve),不能设置成PnP(Default)。
3.如果DSP的用户程序存放在外部Flash中,必须关电重新加电(即“冷启动”)才能加载(Boot)到DSP中运行,用人工复位(“热启动”)方法不起作用。
4.DSP/BIOS提供的标准模块中,每个模块的属性可在配置时修改参数(静态设定),也可在程序中(一般在main中)使用参数修改指令动态设置,例如周期模块PRD(假设用户新建的对象名为PRD0)的Period,参数,修改指令:PRD0.period=xxx;但有些参数是不能修改的,能修改的参数当用户在编辑状态下输入PRD0后,CCS会自动提示的。
5.CCS源程序编辑器缺省状态是“Insert”,即可插入/修改源代码,如果不小心按了“Insert”键,编辑器就进入“修改”状态,“Delete”、“Back Space”等键就不起作用了,必须再按一次“Insert”才能恢复。
6.使用DSP/BIOS配置工具定义变量和数组等,在源程序中必须使用“far”关键字来声明。far说明的变量存放在.far段,其它变量(全局静/态)则存放在.bss段,.bss段中变量存取速度比.far中的快些。
7.在DSP/BIOS配置工具中定义的函数名前必须加下划线“_”,因为配置工具生成的是汇编代码,而汇编代码中调用C函数就要求函数名家下划线。
1、DMA Config中用到的地址指针必须先在程序中定义好,并加"far"约束。
2、进入DSP/BIOS配置工具后,必须先将用到的所有指针变量在“CSL Extern Declaration”中定义好(右击“CSL Extern Declaration”,选“Insert”,右击变量名,
选“rename”,再选“Properties”,进入属性页进行修改)。
3、点击“DMA Configuration Manger”可插入dmacfg0~3,亦可对现有的dmacfg0~3进行修改,但要注意如下两点:
(1)Source/Destination中要设定源/目的地址的格式,如果是数字选“Numeric”,是指针变量则选“Extern Decl. Obj”,否则随后输入的地址无效。
(2)如果地址是指针变量,该变量必须是上述2中已定义的,否则输入、修改无效。
4、在“DMA Resource Manger”中DMA Channel 0~3的属性中将damcfg0~3与通道关联,反之,要删除某个dmacfg必须先取消其关联属性,否则无法删除("delete"是灰色的)。
5、启用DSP/BIOS后,DSP应用程序编译、连接后运行顺序如下:
_C_int00();
_BIOS_init();
main(); //用户主程序入口,仅执行一次
BIOS_start();
IDL_loop(); //循环执行
这里有三点必须注意:
(1)用户主函数main()仅执行一次,不是循环执行。
(2)BIOS_start()中含有一些BIOS初始化工作,而main()又在它之前执行,因此某些DSP/BIOS API函数不能在main()中调用,如:在定时器启动前(有BIOS_start()完成),
在main()中不能调用CLK_gettime()。详细介绍参阅TI公司的DSP/BIOS API使用指南。
(3)如果用户程序某个函数需要循环执行,可将其家人IDL_loop()中,具体方法是:打开DSP/BIOS配置工具,展开“Scheduling”,右击“IDL_IDL Functoin MAnger”,
选择“Insert IDL”插入一个"IDL0",在其属性页中将函数名加入即可。注意函数名前加下划线"_"。如不需要循环执行了,将“IDL0”删除即可。