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.

CCS怎么读入.dat文件



.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进来的数据在程序中利用起来的请您指导一下,叩谢。

  • 你好,你dat文件是怎么导入进去的

  • 我 的也加载不进去啊,我按照网上说的做法来做,但是,还是不行,因为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  Format StartingAddress PageNum Length [NewFormat]
     
    • 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.

    • NewFormatFormat (9); the new scheme. This is optional when usign the legacy formats 1 - 4

    Format 9) indicates usage of the new scheme. This was added to achieve consistency in the formats available in the memory browser and the formats available with load/save feature. The memory browser supports a larger set of data formats which vary slightly across each target. The old load/save header is based on a fixed set of data formats. In order to maintain backwards compatibility the existing fixed data format is still supported. However, an additional data format ( 9) was introduced which acts as a switch to use the new scheme. The last extra parameter (NewFormat) is the actual format chosen in the new scheme .

    All header values are assumed to be TI-style hexadecimal values.

  • 首先特别感谢chris Meng的回复。关于您说的那个,我之前在E2E看到过,然后也是按照那样来操作的,但是在我自己的电脑上面就出现了如图所示的问题,我就不知道是什么地方的问题。还有一个问题就是如图中,在输入数据的时候,说是数据的格式是raw dataFormat.这里的这个格式我还选择不了,我记得之前用V6版本的CCS,就可以选择这个数据的格式,这里的数据格式不能选择就导致了我最后在地址处没有32位浮点的。望指点。。

  • Zhang Yuanchao,

    我使用CCSv6测试了一下,见下。你的问题是否是前面空格的问题。

    我使用的dat文件: