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.

CCSv5 installation on TMS320C6657

Other Parts Discussed in Thread: TMS320C6657

The installation went well. I loaded the example hello.c. I thought that since it had been supplied with the hardware it ought to work. It compiled with no problem, but when I went to Debug I got:

Texas Instruments XDS2xx USB Emulator/IcePick_D : Target must be connected before loading program.
C66xx_0: Trouble Reading Memory Block at 0x20 on Page 0 of Length 0x5a60: (Error -1190 @ 0x20) Unable to access device memory. Verify that the memory address is in valid memory. If error persists, confirm configuration, power-cycle board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.0.838.0)
C66xx_0: File Loader: Data verification failed at address 0x00000020 Please verify target memory and memory map.
C66xx_0: GEL: File: C:\Users\Peter_TI\workspace_v5_2\hello\Debug\hello.out: a data verification error occurred, file load failed.

How do I fix that? There doesn't seem to be a 'test connection' facility in CCSv5

  • Hi Peter,
    Does you project have a valid linker command file for your target? If not, that would explain the problem. In any case, your error is documented in the below link:
    processors.wiki.ti.com/.../Troubleshooting_CCS_-_Data_Verification_Errors

    I also see you are using an older version of CCS. I understand that your kit came with a DVD with that version. But that is because it was the latest version available at the time the kit was packaged. You may want to use a more current version since CCSv5 has been deprecated in support.

    Thanks
    ki
  • 1. Where can I look at the linker command file?
    2. The CCSv5 setup knows that we are using a C6657 device with a XDS2xx USB emulator. The communicatiion test in CCSv5 is OK, but I get these error messages:

    IcePick_D: Error: (Error -2172 @ 0x0) Unable to communicate with the emulator. Confirm emulator configuration and connections, reset the emulator, and retry the operation. (Emulation package 5.0.838.0)
    C66xx_0: JTAG Communication Error: (Error -2172 @ 0x0) Unable to communicate with the emulator. Confirm emulator configuration and connections, reset the emulator, and retry the operation. (Emulation package 5.0.838.0)

    The emulator board seems to be made by TI but I can't find a manual for it.
  • As advised, I've moved to CCSv6. The project setup is as described on this website:

    "Boards with XDS200 Mezzanine debug probe:

    TMDSEVM6657LS

    Add the following parameters to the new target configuration:

    In the box Connection select the option Texas Instruments XDS2xx USB Onboard Debug Probe.
    In the box Board or Device select the appropriate device: TMS320C6657."

    I compile the 'hello world.c' without error. When I try to run it I get an error complaining that emulation 6.0.407.3 is not installed. When I try to install it I get an error trying to copy the file from a packed archive.
  • Can you please describe what you're doing to install the emulation 6.0.407.3? Did you do a check for updates? Can you snapshot the error you're getting and post here?
    Thanks
    Danish
  • I checked for updates and was told that there aren't any.

    See the three screen shots to see what happened when I tried to install the new emulation.
    Sorry - I have the screen shots, but I don't see how to post them here. What do you want me to do with them?
  • When you click on "reply", you will see a link on the right bottom corner "use rich formatting". Click on that, then you will see the little paper clip icon to attach your screen shots.

    Were you using the app center to install the new emulation? 

    Danish

  • Hope that makes sense
  • Hi Peter,
    It looks like you're trying to install the emulation package by double clicking on it, is this correct? It's not meant to be installed separately like that, you could be missing parameters to the install. Could you please zip up the contents of any install_logs* folders in the ccsv6 folder and post them here? I'll tell you what the correct parameters are.

    Thanks
    Danish
  • Thanks for the advice. Here are (I hope) the two install logs. I had to install a new version of Winzip, so I'm not quite sure what its done.
    Peter
  • Hi,

    Something seems to be preventing the installer from writing a file. I'm unable to tell what that is. Could you please reboot the machine before doing the following:

    Exit out of CCS completely

    Start a cmd prompt as Admin

    cd to the downloads folder

    Run this command from the command prompt:

    ti_emupack_setup_6.0.407.3_win_32.exe" arguments --mode unattended --ccs true  --prefix c:/ti/ccsv6 --eclipseprefix  C:/ti/ccsv6/eclipse         --enable-components c6000,arm,xds100,xds560

    Please note, that's one command. Also, those are double dashes before mode, ccs, prefix, eclipseprefix and enable-components.

    You also need to modify the ccsv6\eclipse\ccs_config.xml file to change all instances of "feature registered" to "feature installed"

    Please let me know if you run into any problems.

    Thanks

    Danish

  • Danish suggested:
    You also need to modify the ccsv6\eclipse\ccs_config.xml file to change all instances of "feature registered" to "feature installed"
    I did that.

    Then he suggested I use the admin cmd command :

    ti_emupack_setup_6.0.407.3_win_32.exe" arguments --mode unattended --ccs true --prefix c:/ti/ccsv6 --eclipseprefix C:/ti/ccsv6/eclipse --enable-components c6000,arm,xds100,xds560

    I left out '" arguments'
    This command ran, but closed with the message 'There has been an error. Unable to copy file'
  • I repeated the cmd command above and this time, I guess, I got it right because it did not report an error. However recompiling hello.c and running it produced:

    C66xx_0: Trouble Reading Memory Block at 0x8000 on Page 0 of Length 0x4: (Error -1190 @ 0x8000) Unable to access device memory. Verify that the memory address is in valid memory. If error persists, confirm configuration, power-cycle board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 6.0.407.3)
    C66xx_0: File Loader: Verification failed: Target failed to read 0x00008000
    C66xx_0: GEL: File: C:\Users\Peter_TI\workspace_v6_1_3\hello\Debug\hello.out: Load failed.
  • Peter,
    I'm happy to hear the install went ok. I'm going to forward this to someone who can help you with the compilation error now.
    Danish
  • Hi Peter,
    You are running into what is commonly referred to as a "data verification error". The debugger tried to load your program and it failed because it was unable to access the memory location it tried to load to. Is 0x8000 valid memory for your target? And if so, is the target memory initialized correctly? See the below link for more information on data verification errors:
    processors.wiki.ti.com/.../Troubleshooting_CCS_-_Data_Verification_Errors

    Thanks
    ki
  • Ki
    I see in my emails you replied to me yesterday in the same sense as this. The lnk.cmd file that CCSv6 shows says: "You will want to change the memory layout to match your specific C6xxx target system."

    How do I find the memory layout? Do I need the memory layout on the TMS320C6657 device or the XDS2xx mezzanine board?

    TI designed the whole thing, I would imagine someone at TI knows?

    Peter


    Peter
  • Hi Peter,
    You need to define the memory layout of the actual 6657 board itself. I see you are using the C6657LS EVM. That board is made by one of our 3rd parties. I would check their site for more information:

    www.einfochips.com/.../tms320c6657-evm.html

    For more information on how linker command files work, see:
    processors.wiki.ti.com/.../Linker_Command_File_Primer

    Thanks
    ki
  • www.einfochips.com/.../tms320c6657-evm.html
    didn't work for me.
    I contacted the firm two days ago and have just had a chat with a girls there. I'm hoping to have an email from them soon.

    In the meantime, I understand that the linker file I need is available in
    ti_emupack_keystone1_setup_1.0.9.1
    How should I run that? I understand it probably needs some complicated flags to work properly
  • Peter Laurie said:
    C66xx_0: File Loader: Data verification failed at address 0x00000020 Please verify target memory and memory map.

    Looking at section 2.1 Memory Map in the TMDXEVM6657L / LE / TMDSEVM6657LS Technical Reference Manual Version 2.1 (followed the link on https://www.einfochips.com/partnerships/silicon-partnerships/texas-instruments/tms320c6657-evm.html#resources) address 0x00000020 is in a "Reserved" region from 0x0000000 - 0x007FFFFF. Therefore, the data verification error at address 0x00000020 is to be expected as there is no memory at that target address.

    Valid memory regions for loading programs on a TMDSEVM6657LS are either:

    - 1 Mbyte of Multicore Shared Memory (MSM) at addresses 0x0c000000 - 0x0c1fffff

    - 512 Mbyte of  DDR3 at addresses 0x80000000 - 0x9fffffff

    If you place the following in linker command file, e.g. named C6657.cmd, in the CCS project it will place the program in Multicore Shared Memory which should allow the program to load:

    MEMORY
    {
        SHRAM:          o = 0x0C000000 l = 0x00100000   /* 1MB Multicore shared Memmory */
    }
    
    SECTIONS
    {
        .text          >  SHRAM
        .stack         >  SHRAM
        .bss           >  SHRAM
        .cio           >  SHRAM
        .const         >  SHRAM
        .data          >  SHRAM
        .switch        >  SHRAM
        .sysmem        >  SHRAM
        .far           >  SHRAM
        .args          >  SHRAM
        .ppinfo        >  SHRAM
        .ppdata        >  SHRAM
    
        /* COFF sections */
        .pinit         >  SHRAM
        .cinit         >  SHRAM
    
        /* EABI sections */
        .binit         >  SHRAM
        .init_array    >  SHRAM
        .neardata      >  SHRAM
        .fardata       >  SHRAM
        .rodata        >  SHRAM
        .c6xabi.exidx  >  SHRAM
        .c6xabi.extab  >  SHRAM
    }
    

    I based the above from the CCS 6.1.3 supplied C6678_unified.cmd example. Note:

    1) I don't have a TMDSEVM6657LS, so haven't been able to actually test that the resulting program will run.

    2) I used the Multicore Shared Memory (MSM), rather than the larger DDR3, since the MSM is on-chip and doesn't require any configuration. To load a program into DDR3 the DDR3 external memory interface must be configured, either a CCS GEL script or a bootloader on the C6657.

  • Chester
    Many thanks for the suggestion. I've saved the script above as lnk.cmd.
    Hello.c compiles and seems to link and load. I say 'seems to' because I don't see where 'Hello world' has been printed to the screen
    Peter
  • Peter Laurie said:
    I say 'seems to' because I don't see where 'Hello world' has been printed to the screen

    The CCS debugger should automatically display the output of printf in the CIO console when configured correctly.

    Some things which can cause the output of printf to not be displayed in CCS:

    1) Insufficient heap space. E.g. Using a C66xx device with the Heap Size set to 0x100 bytes printf fails to display any output, but with the Heap Size set to 0x200 bytes printf displayed output in the CCS CIO console. The Heap Size is set in the CCS project properties CCS Build -> C6000 Linker -> Basic Options -> Heap Size for C/C++ dynamic memory allocation (--heap_size, -heap)

    2) If CIO is not enabled in CCS. This is set in the CCS project properties Debug -> Program/Memory Load Options -> Enable CIO function use (requires setting a breakpoint). This should be enabled by default when a new project is created.

    3) CIO is line buffered, so output is only displayed when there is a '\n' in the output.

    See Tips for using printf and CIO System Call Protocol for more information on how CIO is used in the CCS debugger and run time library to handle printf and related functions.

  • Peter Laurie said:
    In the meantime, I understand that the linker file I need is available in
    ti_emupack_keystone1_setup_1.0.9.1
    How should I run that?

    I installed ti_emupack_keystone1_setup_1.0.9.1.exe on a Windows PC. Looking at what it installed it only contained device XML files and GEL scripts. i.e. doesn't actually contain any linker command files.

    Also, the contents of ti_emupack_keystone1_setup_1.0.9.1 didn't contain any extra files over-and-above a CCS 6.1.3 installation which already had Keystone1 1.0.10.0 com.ti.emulation.keystone1.win32.feature.group installed.

  • Chester
    Thanks again. I have Stack set to 0x160, Heap to 0x320. CIO is enabled as you say above. There's a '\n' in the printf string. So all should be good.

    Maybe I'm not looking at the CIO Console? But I've also added a fprintf() of the same message - the file is not found on my PC.

    I will need read/write access to files on my PC .

    Peter
  • Chester
    Thanks again. I have Stack set to 0x160, Heap to 0x320. CIO is enabled as you say above. There's a '\n' in the printf string. So all should be good.

    Maybe I'm not looking at the CIO Console? But I've also added a fprintf() of the same message - the file is not found on my PC.

    I will need read/write access to files on my PC .

    I get a message: in the memory allocation screen saying that the link was successful.

    Peter
  • Peter Laurie said:
    I have Stack set to 0x160

    With the stack set to 0x160 I can repeat the failure of a simple "hello world" example for a C66xx device using the TI C6000 compiler v8.1.1 in that a call to printf() didn't produce any output.

    Running the call_graph utility, as described in Finding out static stack usage, reported that the "hello world" program using printf() requires 1480 bytes of stack. Note that I didn't attempt to remove all the warnings about indirect function calls, and so the worst case stack usage may be higher.

    Therefore, suggest you increase the stack size.

    With the stack size set to 1480 and the heap to 0x320 printf("Hello World!\n") produced output in the CCS CIO console.