.dat文件是我用matlab生成的,生成时是按照CCS的格式要求的,里面存的是十进制的数组。我想把这些数在我的CCS里用起来,最好是能放进一个矩阵,但我不知道该怎么写这几句C语句。在网上看了不少,但都得不到准确解答,请大家帮忙。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
.dat文件是我用matlab生成的,生成时是按照CCS的格式要求的,里面存的是十进制的数组。我想把这些数在我的CCS里用起来,最好是能放进一个矩阵,但我不知道该怎么写这几句C语句。在网上看了不少,但都得不到准确解答,请大家帮忙。
你好,
请参考http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/168292.aspx里面提到的做法。
right clicking the memory browser in CCS and selecting load memory to the memory at xx address。
谢谢您的解答,但是这一步我已经知道了,我是按照这样的格式生成的数据,我只是想知道,怎么把这些数据读出来,或者说用起来,比如说我定义一个矩阵,该怎么把这些数据放进矩阵,方便我下面使用,因为我下面要对这些数据进行处理。麻烦您了。
你好,
你知道你下载数据的首地址和大小,你在代码里面就可以直接访问这些地址的内容就可以了。你可以直接用,或者给一个数组赋值。
嗯嗯,多谢您的回答,我已经做了。但是又出现了新问题,还得麻烦您一下。
现在我的做法是利用指针把load进来的data从内存中读出来,放进一个另外定义的int型矩阵里。
具体代码是:
int *p=(int *)0x80004000;
int a[2592];
for(i=0;i<2592;i++)
{
p=p+1;
a[i]=*p;
}
但是我这样操作,出现了在利用for循环把数据赋值给那个int型矩阵时,赋值不成功的问题。
现象有下面两种:
1,在跑完for循环之后发现,指针所指地址正确,但是取出来的装在int型矩阵a里的值并不正确。
2,在跑完for循环之后发现,指针p显示的地址不知什么时候已经是不正确的了。
奇怪的是,我若是一步一步的调试运行for循环里的操作,不会出现上面两种现象,结果是正确的但是我若是直接运行,一下子跑完这个for循环,就容易出现上面两种现象。
还有,我调试时若拿掉“ a[i]=*p;”这一句,直接for循环一下子跑到底,p显示的地址一直也是对的。
所以,问题也可以说成只要利用for循环对矩阵赋值,结果就容易不正确。这个问题我之前就遇到了,我都没用指针,直接一个表达式,例如a[i]=10*i+5,直接for循环跑完之后,结果就不正确,很是奇怪。一个元素一个元素地赋值就正确,利用for循环一下子直接赋就不正确、、、、、
麻烦您再帮我分析一下,或者您有其他方法能将load进来的数据在程序中利用起来的请您指导一下,叩谢。
嗯嗯,多谢您的回答,我已经做了。但是又出现了新问题,还得麻烦您一下。
现在我的做法是利用指针把load进来的data从内存中读出来,放进一个另外定义的int型矩阵里。
具体代码是:
int *p=(int *)0x80004000;
int a[2592];
for(i=0;i<2592;i++)
{
p=p+1;
a[i]=*p;
}
但是我这样操作,出现了在利用for循环把数据赋值给那个int型矩阵时,赋值不成功的问题。
现象有下面两种:
1,在跑完for循环之后发现,指针所指地址正确,但是取出来的装在int型矩阵a里的值并不正确。
2,在跑完for循环之后发现,指针p显示的地址不知什么时候已经是不正确的了。
奇怪的是,我若是一步一步的调试运行for循环里的操作,不会出现上面两种现象,结果是正确的但是我若是直接运行,一下子跑完这个for循环,就容易出现上面两种现象。
还有,我调试时若拿掉“ a[i]=*p;”这一句,直接for循环一下子跑到底,p显示的地址一直也是对的。
所以,问题也可以说成只要利用for循环对矩阵赋值,结果就容易不正确。这个问题我之前就遇到了,我都没用指针,直接用的一个表达式,比如a[i]=10*i+5,这样for循环直接跑到底之后,结果也不对,很是奇怪。一个元素一个元素地赋值就正确,利用for循环一下子直接赋就不正确、、、、
麻烦您再帮我分析一下,或者您有其他方法能将load进来的数据在程序中利用起来的请您指导一下,叩谢。
我 的也加载不进去啊,我按照网上说的做法来做,但是,还是不行,因为CCS那边一直提示数据格式不对,还有一个问题就是上次加载的时候,隔一个数据就是正确,隔一个就是错的,请问你的解决没有?
Zhang Yuanchao,
1. 你可以用CCS先保存一个dat 文件,分析和理解一下相关格式。
2. 在CCS的help里面搜索Data File Formats,你可以看到下面的信息(ccs6.1.2)
Code Composer data file
A text file that contains one line of header information and stores the data as one sample per line. The legacy file format supported these formats :
Hexadecimal
Integer
Long
Float
The new scheme which is backwards compatible supports a larger set of data types. GEL_MemoryListSupportedTypes() GEL API could be used to list complete set of supported data types in the new scheme
The header information for data files uses this syntax:
MagicNumber—fixed at 1651.
Format—a number from 1 to 4, indicating the format of the samples in the file.
This number represents a data format: (1) hexadecimal, (2) integer, (3) long, (4) float, or (9) Use new scheme
StartingAddress—starting address of the block that was saved.
PageNum—page number the block was taken from.
Length—number of samples in the block.
NewFormat—Format (9); the new scheme. This is optional when usign the legacy formats 1 - 4
All header values are assumed to be TI-style hexadecimal values.