CCS 支持的.dat 文件的格式为:
定数 数据格式 起始地址 页类型 数据块大小
1651
其后是文件内容,每行表示一个数据。
定数固定为“1651”,数据格式可以选择“1”(十六进制整型)、
“2”(十进制整型)、“3”(十进制长整型)、“4”(十进制浮
点型)。起始地址为存储的地址,页类型和标示为程序或者数据。
比如一个.dat 文件:
1651 1 800 1 10
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
制作.dat 文件的方法也很简单,可以用 VC++或者 MATLAB 来实现。
比如 hellodsp 的网友 lwxing 提供的使用 matlab 创建.dat 文件的一
个实例:
matlab 向 dsp 传递.dat 文件
x=2*sin(2*pi*100*m*dt);
for m=1:200;
if x(m)>=0 y(m)=x(m);
else y(m)=4+x(m);
end;
end;
y=y*16384;
fid=fopen('input.dat','w');%打开文件,'w'是将此文件定义为可
写的,fid 是此文件的整数标示
fprintf(fid,'1651 1 0 1 0\n');%输出文件头,文件头必须是 dsp
所能识别的,就如此句程序所设定的
fprintf(fid,'0x%x\n',round(y));%输出 y 数组,并写到与 fid 标示
符相同的文件,即 yinput.dat 文件里。round 是取 y 值的最近的数,
即如果是 1.2,就取 1,如果 1.6,就取 2.
fclose(fid); %关闭 fid 标示符的文件。
fid=fopen('input.dat','w');%打开文件,属性设置为写
fprintf(fid,'1651 1 0 1 0\n');%输出文件头,只有此文件头 dsp
芯片才能识别
fprintf(fid,'0x%x\n',round(x));%输出十六进制的 x
fclose(fid);关闭
这里 x 要转换成二进制补码,这也是我发此贴的目的所在。只是个人
的理解,如果有问题,请大侠们改正,为更多 dsp 学习者们提供借鉴。
首先确定 x 的范围,譬如 x=【-2,2】,那么,我们采用定点 Q14,
那么就是要乘以 16384,如果 x<0,还要转化成其补码。补码应该是
用模加上 x,即 4+x,然后再将此数乘以 16384.
转载请注明出自 DSP 交流网 DSP 学习第一论坛 DSP 技术应用与推广
平台 DSP 开发服务平台 http://www.hellodsp.com/bbs/,本贴地
址:http://www.hellodsp.com/bbs/viewthread.php?tid=4537
其在 CCS 中的使用方法可以有一下命令:
File->Data->Load
File->Data->Store
File->File I/O
红尘出品,转载请注明出处。
CCS 的 Probe 断点允许用户在指定位置提取或注入数据,此时会碰到所谓的 dat 文件。dat
文件格式有特定的要求,具体内容是文件头加实际数据。
文件头为:
1651
1
0
1
0
固定标识
数据格式
基地址
页类型
数据长度
数据格式:1-十六进制 2-十进制 3-十进制长整型 4-十进制浮点型
页类型: 0-数据
1-程序
数据长度:装入数据的长度
Code Composer Studio User’s Guide 中介绍,dat 文件的头部信息一般都可以是
1651 1 0 0 0,后 3 项可以全是 0,但是必须(这个很重要)在 CCS 的设定断点的 Source
Editor 对话框中重新设置输入文件名(File)、起始地址(Start Address)、页类型(Page)
和数据长度(Length),这里的设置优先于在 dat 文件中的申明,具体见 Code Composer Studio
User’s Guide 中 67 页的 note:header information override。亦可参考 TI 公司的 EVM
例程,或者在 ICETEK-VC5509-A 实验目录中打开 dat 文件来看一看。下面是用记事本打开正
弦函数数据文件 Sine2.dat 的结果:
1651 1 0 1 0
0x0000
0x000f
0x001e
0x002d
0x003a
......