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/TMS320C6701: CCS/TMS320C6701

Part Number: TMS320C6701

Tool/software: Code Composer Studio

Hi,

Need help with tms320c6701. 

The issue is in program (not data) memory read. Linker has directive : .const > IPROG  (all constant values are placed to prog memory at (IPROG:         o = 00000200h   l = 0000FE00h). The program code is simplest:

const int ar1[5] = {1,2,3,4,5};
int ar2[5] = {0,0,0,0,0};

int main(void)

{ 
ar2[0] = ar1[0];
ar2[1] = ar1[1];
ar2[2] = ar1[2];
ar2[3] = ar1[3];
}

map file approves that ar1 was placed to 0x0000xxxx addresses and ar2 to 0x8000xxxx.

But ar2 gets values not 1,2,3,4,5, but some other values. .

Does anyone know why it happends? Pls, help.

  • The section .const is an initialized section which contains not code, but data.  Please describe the process by which this section gets from the executable .out file to system memory.  Might there be a problem with this process?

    Thanks and regards,

    -George

  • Hi, George, 

    My main purpose is to boot from external MRAM without coping any data memory, only program memory. So that is why I try to place .const, .cinit sections to PROG memory. 

    Now I'm using simple programmator  - sauris usb iso plus, to download .out file to chip. And memory browser (in debug mode in code composer studio) shows that values

    of .const data are correct and placed in 0x0000xxxx mem.

  • I presume your code is organized as a CCS project.  Please zip up the project by using the directions in the article Sharing projects, then attach that zip file to your next post.

    Thanks and regards,

    -George

  • I have not found the cause of the problem.  Though I do have a guess.

    I found two minor issues with your program.  I do not think these issues are the cause of the problem.  But I will detail them below.

    My guess as to the root cause of the problem ... I suspect some system configuration detail is wrong.  Maybe the external memory interface is not initialized correctly.  Or, something similar.  Looking into this guess is a bit more difficult, and will require help from experts other than me.  Since that is the case, let's attempt fixing the minor issues first.  While that is not likely to solve the problem, these need to be addressed anyway, and maybe we'll get lucky.

    First minor issue ...  All of the sections in the memory range IDATA are uninitialized, except .cinit.  Does your system support flashing (or burning, or whatever) the .cinit section in the IDATA memory range, in between the uninitialized sections .stack and .far

    Second minor issue ... The linker command file C6701.cmd specifies the .cinit section two times. This does not cause any problems.  But, just to clean things up, remove one of them.

    Please let me know if addressing these minor issues resolves the problem.  If not, I'll notify some C6700 device experts about this thread.

    Thanks and regards,

    -George

  • Hello, George,

    Yesterday I spend some time to read SPRU577dma.pdf, and found one interesting picture:

    As I understand, Programm memory is avaliable only through DMA. Unexpectable feature! :)

  • Anton,

    Are you still looking for guidance on this device?

    Regards,

    Rahul