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.

Connecting several EVM6678L to one PC

Hello,

we develop a multicore-multi-DSP application for medical imaging. I have to upload and start the application on four EVM DSP (32 cores). How can I do that ?

a) Booting from NOR/FTP: Seems to take quite some time to set up MAD, no option in this early development stage.

b) Using 4 PCs and load over CCS. Should be a fallback, using 4 PCs is not convenient

c) Upload one by one. Connect one by one: Connect EVM by USB, start in CCS, disconnect and so forth.... Unfortunately this option does not work, when disconnecting the JTAG the application on the target stops.

d) Connect 4 EVM on one PC. In CCS V5 is a way to adress a XDS100 by it serial no. But unfortunately on the EVM6678L:

C:\ti>xds100serial
Scanning for XDS100 emulators...

Index  Serial number  Description
0      TIU72PWC       Texas Instruments XDS100+RS232 V1.0
1      TIU72PWC       Texas Instruments XDS100+RS232 V1.0
2      TIU72PWC       Texas Instruments XDS100+RS232 V1.0
3      TIU72PWC       Texas Instruments XDS100+RS232 V1.0

all onboard XDS100 have the same ID.

Questions:

1) What is the best option to follow ? How can I run my test-software-releases on four targets ? (I would prefer option c)
2) Is there a way to disconnect USB without stopping operation of the App I uploaded and started using CCS ?
3) If d): If I have to flash the XDS100 serial No., where can I obtain the original file the onboard devices were flashed with ?

Thanks,
Roelof Berg

 

  • Roelof,

    There has been some similar discussion in the Code Composer Forum (appropriate for this question) on the thread http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/195195.aspx . That thread is not for the exact same board, but the emulation issues are similar. The user in that case has not solved this problem but the discussion might help you in your case, depending on your issues.

    Please let us know if you have any good results, or if it does not help you.

    Regards,
    RandyP

  • Hi Roelof,

    Consider using an Ethernet boot for booting multiple EVMs.  There are a couple different Ethernet boot types and some examples in the MCSDK package to support them.  You should be able to set up a boot server on a single PC and connect that PC to the EVMs using an Ethernet switch.  Once the EVMs have booted in this mode they will request the boot code from the server and download that code using Ethernet.  Once that code is in memory the DSP will branch then to the code to begin execution.

  • Hello Bill,

    do I have to build a MAD package for your solution ? Or can I just reference an .out file ? I try to find a solution without having to build a MAD-Package so early in the project.

    (Why I ask for MAD: I use a multicore DSP and OpenMP code - very close to the OpenMP-Image-Processing-Demo of the MCSDK 2.1 beta).

    Hello Randy,

    the post didn't help. I didn't find the mentioned configuration setting (neither in the gui, nor in the textfile). On XDS100 EVM6678 the serial no is used to distinguish between the debuggers (and as I wrote, they are unfortunately equal for all devices).

    However, meanwhile I found out a workaround. In VMWare one can switch the XDS100 devices on/off per virtual machine. Hence I will start 4 clones of the same virtual machine, insite I will start 4 times CSS (1 each). And from every VM I can control one EVM.

    Thanks,
    Roelof

  • I meant the other "thread" didn't help. Your "post" off course was valuable :)

  • Roelof,

    Although I have caused some offense on the forum, I have been offended by no one. Your are kind.

    I will include a link from the other thread to your post here, but I do not like the VM solution because it loses some of the flexibility you should be able to have with a single instance of CCS being opened.

    Until CCS or the emulation drivers offer a way to recognize multiple USB-based emulators through a single Target Configuration, there are only two other solutions that I can think of to allow you to use a single CCS instance:

    1. Buy at least three other XDS100 emulators. These sell for less than US$100 and can be used with your EVMs without having to pay for a CCS license. You could buy a v1, v2, and v3 so that all three will be distinguishable easily, then create a Target Configuration that includes all four emulators. My assumption, which I have not proven or tested, is that there is a way to distinguish between the on-board XDS100v? through direct USB and an external XDS100v? of the same model but a different brand or serial number. So this method does have a bit of risk. Maybe someone will test it out for you, but at the very least you would be able to have at least 3 of the four boards on the same CCS instance. You could buy a 4th external emulator, but it will require a CCS license after your free trial period has been completed.

    2. Build a wired network to allow 1 or 2 external XDS100v1/2/3 emulators to connect to 4 or 2 boards, respectively. There is a description of this type of network in the TI Wiki Pages article Connect 2+ Chips With Emulator. The article was written for CCS 3.3, but CCSv4 and CCSv5 are much easier for building a Target Configuration with multiple devices or multiple JTAG chains. One would work logically, but there could be noise or drive strength issues that would make it better to use two separate chains instead of all four devices on a single chain.

    3. Search the web for a JTAG spreader or splitter. Spectrum Digital made one for an older version of the emulators, but the one I am aware of did not support the lower voltages needed for your EVMs. There may be some on the market that I do not know about. If you search and find one, please post about it here.

    But, I am glad you at least have a solution that you are satisfied with. Please let us know if you find any other solution.

    Regards,
    RandyP

  • Hello,

    the VMWare solution turned out to be too slow. As well uploading (to 32 cores) as also the execution speed of the (printf utilized) target is not acceptable.

    Thank you for the detailed explaination about the XDS100 options. Seems to be the solution with best debugging capabilities (debugging 4 DSPs at once). I wil read about the different JTAG options.

    Meanwhile I am trying out the ethernet-boot solution. Booting the ti "simple-example" was easy. I hope generating the .eth file from our application will be less complicated than building a MAD image.

    I will leave a note here which solution we will finally use.

    Best regards,
    Roelof Berg

  • Hello,

    I was able to ethernet-boot the TI "simple-example". Now I tried just to upload an existing .out file with a somewhat bigger project. I leaft everything unchanged (.cfg) to what I use when starting in CCS. The only thing I changed was raising the length attribute in the .rmd file. I left the org entry as it was in the "simple-example".

    I can build the image and I can successfully push it to the target. But then I see nothing. (I saw similar posts here with the same symptoms when using NDK/DDR3).

    Question: It it ok just to take an existing .out image of a singlecore application, increase the size in .rmd and then push it to core_0 ? Should it start (contains c and c++ code) with the following entry: -e _c_int00 ?

     

    dspreg_evmc6678l.out
    -a
    -boot
    -e _c_int00
    -order L

    ROMS
    {
       ROM1:  org = 0x00004000, length = 0x583000, memwidth = 32, romwidth = 32           files = { dspreg_evmc6678l.btbl }          
    }                                       

    Is there more documentation or a howto guide (I read the bootloader guide and the asm-tools-guide and I still dontt know what ROMS entries I have to configure for ethernet boot. Information like: Why does the example use org=0x0004000 ? Must the application linker know about 0x0004000 ?)

    Thank you,
    Roelof                             

    (When I see all the posts pf people not being able to set up a bootloader for months in this forum I doubt if it will be better just to buy 3 more PCs and start from CCS...)

     

  • (By the way: I understood that I have to deal with MAD independently from the boot mode ...)

  • Regarding MAD: I can start my OpenMP application which is based on the image processing application by loading it using CCS only to core_0 and start core_0. Hence I assume that when using OpenMP I don't need MAD ? Would someone agree that simple ethernet-boot of the (hexified) OpenMP-Image-Processing .out file ahould be possible without MAD when using OpenMP ?

  • Roelif,

    It seems there are couple of issues you are facing.

    I want to compile them below. Please add to the list.

    1. Need a way to access multiple EVMs through the same PC.

    <AVM> You can add multiple emulator within one target configuration and differentiate the EVMs using the Emulator I/O port number. 

    2. What are the different ROM entries that we need to change.

    <AVM> i. You need to change the size and the file.

    3. Need for MAD in your OpenMP scenario

    <AVM> Yes, you are correct, you can just use the ROM boot table and boot through the ethernet boot.

    Thanks,

    Arun

  • Hello Arun,

    what I really want to do is to measure the performance of 4 C6678 DSPs. We want to evaluate wether the chips are suitable for an algorithm called 'image registration'.

    Meanwhile I connected 4 Laptops to my 4 EVM boards and I was able to measure the performance.

    Thank you for the further information about booting an application on the DSPs without debugger connection. When the project will come to the point of having a final image to be deployed I will get back to this topic. For now I have everything I need.

    Thank you,
    Roelof Berg

     

  • Hi Roelof,

    Thanks for getting back. I am marking this verified. Please start a new post if you need further information.

    Thanks,

    Arun.