DSP5509的XF实验-第一篇
1. 使用大道科技的EASY-DSP5509开发板,测试第一个例程,DSP_easy5509\Code-Easy5509\EX01_XF\XF
2. 直接编译,报出错误,在Problems窗口错误指示
Description Resource Path Location Type
#16004 file "E:/Debug/Easy5509/EX01_XF/Debug/XF.obj" has a XF C/C++ Problem
在console窗口报出的错误如下:
fatal error #16004: file "E:/Debug/Easy5509/EX01_XF/Debug/XF.obj" has a
Tag_Memory_Model attribute value of "1" that is different than one
previously seen ("2"); combining incompatible files
其中DSP5000系列,有2个库,运行时支持库rts5xxx.lib和芯片支持库csl5xxx.lib,网上的说法,上面的库是老版本的名字,需要用新版本的
3. 找到原来工程,在其他工程拷贝一个到 DSP_easy5509\Code-Easy5509\EX08_USB\rts55x.lib,编译通过,但是用CCS安装目录下的编译不通过
4. 创建一个ccxml文件
5. 进入debug模式,发现连接不上,报个错误,后来发现这个板子有启动模式,改到USB模式,烧写成功。
6. 分析下硬件,XF这个引脚什么用途?
XF(External flag output)的作用: 在多处理器结构中,利用 XF向其它处理器发送信号; 或者被用作通用输出脚。
实验内容: 测试 XF 引脚信号 “SSBX XF”指令将 XF 脚输出置为高电平,“RSBX XF”则将 XF输出置低。
7. 看下代码,调用汇编指令 asm("cmd"); 比较简单
1 main() 2 { 3 CLK_init(); // 初始化DSP运行时钟 4 while(1) 5 { 6 asm(" SSBX XF"); // 7 Delay(256); // 延时 8 asm(" RSBX XF"); // 9 Delay(256); // 延时 10 } 11 }
8. 时钟初始化函数,直接向时钟配置寄存器写值,难道没函数库的吗?
1 void CLK_init() 2 { 3 ioport unsigned int *clkmd; 4 clkmd=(unsigned int *)0x1c00; //地址 5 *clkmd =0x21f3; // 晶振12Hz,9Hz=0x21f3;// 144MHz=0x2613 6 }
9. 问题总结,csl和rts函数库的API说明文档在哪里?DSP5509为啥要用外部EEPROM下载程序,内部没空间?
10. C55xxCSL.exe芯片支持库应该是要安装的,找到它的API文档TMS320C55x Chip Support Library API Reference Guide (Rev. J).pdf,不过RTS的还没找到
11. CMD文件,感觉比较重要,暂时还看不懂
1 -w 2 -stack 500 3 -sysstack 500 4 -l rts55x.lib 5 6 MEMORY 7 { 8 DARAM: o=0x100, l=0x7f00 9 VECT : o=0x8000, l=0x100 10 DARAM2: o=0x8100, l=0x7f00 11 SARAM: o=0x10000, l=0x30000 12 SDRAM: o=0x40000, l=0x3e0000 13 } 14 15 SECTIONS 16 { 17 .text: {} > DARAM 18 .vectors: {} > VECT 19 .trcinit: {} > DARAM 20 .gblinit: {} > DARAM 21 frt: {} > DARAM 22 .cinit: {} > DARAM 23 .pinit: {} > DARAM 24 .sysinit: {} > DARAM 25 .bss: {} > DARAM2 26 .far: {} > DARAM2 27 .const: {} > DARAM2 28 .switch: {} > DARAM2 29 .sysmem: {} > DARAM2 30 .cio: {} > DARAM2 31 .MEM$obj: {} > DARAM2 32 .sysheap: {} > DARAM2 33 .sysstack {} > DARAM2 34 .stack: {} > DARAM2 35 }