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”删除即可。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。