热度 17
2010-10-14 13:11
4581 次阅读|
1 个评论
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”删除即可。