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.

IPC MessageQ example on C6A8168 EVM

Other Parts Discussed in Thread: SYSBIOS

Hi,

I am trying to run the IPC MessageQ example on my C6A8168 EVM board. I am using SYSBIOS 6_31_04_27, IPC 1_22_03_23 and XDC tools 3_20_08_88.

I compiled both ARM and DSP versions of the example code. There was one warning in the DSP compile (below) which is OK since the build completes.

cl674 package/cfg/message_dsp_p674.c ...

 

 

3326.ARM_sysbios_ipc_MessageQ_example.zip

 

 

lnk674 message_dsp.p674 ...

"package/cfg/message_dsp_p674.xdl", line 48: warning: specific address 0x20

overrides alignment of 1024 for ".text"

"package/cfg/message_dsp.p674.s674", WARNING! at line 31514: [W9999]

Placing data in a code section (.text) is discouraged. The data may

be interpreted as code. This section will not be compressed.

b __c_int00

No Assembly Errors, 1 Assembly Warning

'Finished building: ../message_dsp.cfg'

 

I noticed that the configuration file message_common_cfg.xs has 4 processors configured. Are there really 4 cores in the system? Do i need to load and run all 4 copies of the messageQ program?

 

 

 

I did load and run on only two cores (HOST and DSP). First i stepped the main() program on dsp, it got into running state after Ipc_start(). So I stopped it and found that it was in ti_sdo_ipc_Ipc_getSlaveAddr_I() function. Secondly I stepped the main() program on Host, it got into running state after Ipc_start(). I stopped it and found that it was in SharedRegion_isCacheEnabled() function. None of the breakpoints in tsk0_func() was hit for both DSP and HOST programs.

I have attached both zipped up directories of the program. Please let me know what is wrong with my program and procedures.

Thanks,

Zhao

 

 

5775.DSP_sysbios_ipc_MessageQ_example.zip

var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');

MultiProc.setConfig(Program.global.coreName,

["VIDEO-M3", "VPSS-M3", "DSP", "HOST"]);

  • re-attach the two zip files in case the previous post did not get them.

    Thanks,

    Zhao

     

    8546.DSP_sysbios_ipc_MessageQ_example.zip

     

    8132.ARM_sysbios_ipc_MessageQ_example.zip

     

  • Zhao,

    Yes, there really are 4 cores in the system.  If you want to run on just 2 cores, you need to change the *.cfg file to specify just 2 cores.  For example you want to run just on HOST and DSP so do the following:

    MultiProc.setConfig(Program.global.coreName,  ["DSP", "HOST"]);

    Judah

  • Hi Judah,

    I changed to two cores as suggested but the problem is still there. It seems i can not pass the Ipc_start() function call on both DSP and ARM. The breakpoints in tsk0_func() are not hit. Why can't I step into Ipc_start() using F5? Any ideas?

    Thanks,

    Zhao

  • Hi Judah,

    Any updates on this?

    Thanks,

    Zhao

  • Zhao,

    I tried out your program that you attached but it didn't work for me either.  Not sure whats going on.

    I've rebuilt the message example for just dsp and host and attached it here along with the sources.  This worked for me. 

    Can you try to see if it works for you?

    3348.evmTI81XX.zip

    Judah

  • Hi Judah,

    Thanks for your reply. I got the zip file. But what file is "message_dsp.x674" and "message_host.xea8f"? How do I use these files to create the DSP and ARM projects? Please give me some instructions.

    Thanks,

    Zhao

  • Zhao,

    Those are the .out files (executables).  The *.x674 is for the DSP.  The *.xea8f is for the A8.

    FYI:  SYSBIOS executables typically end with *.x* since we support a whole range of processors.

    Judah

  • Hi Judah,

    These executables do not work for me either. I used a C6A8168 EVM board with DDR2 memory. First i connect to the A8 and then i load and run a GEL file (attached) to initialize the A8 and DSP (c674x() and enableTimers() ), after that I load the DSP with your "message_dsp.x674" and run it. Then i load the A8 with your "message_host.xea8f" and run it. When both are running, there is no outputs in the console.

    Then i stop the DSP and find that it is in GateMP_enter(), ti_sdo_ipc_gates_GateHWSpinlock_enter__E().

    I also stop the A8 and find that it is in main(), Ipc_start(), Ipc_attach(), ti_sdo_ipc_Ipc_procSyncStart__I(), ti_sysbios_family_arm_a8_Cache_wbInv__E().

    Please let me know if i did anything wrong with your program or anything is wrong with the GEL file and initialization.

    Thanks,

    Zhao

     1185.evm816x.gel.txt

  • Zhao,

    Did you try power cycle of your board and then try the executables?

    Judah

  • Hi Judah,

    Yes, I did power cycle the board before loading.

    My C6A8168 EVM board boots from SD card. When it boots, i have to enter a key on the RS232 terminal to stop it from booting into Linux. The terminal is then left with a TI8168_EVM# prompt. Only at this stage will i be able to connect to A8 and DSP without any problem. I have run other example programs like Task, Static and Swi on DSP, they all produce correct results to the console.

    Thanks,

    Zhao

  • Zhao,

    What revision of the board do you have?  You said DDR2 which is what I have here too.

    Could you try it with this gel file.  The file needs to be associated the the A8 in your CCS target configuration. 

    8322.ti816x_ddr.gel.txt

    Judah

  • Hi Judah,

    Here is the info for the board I have. Spectrum Digital 816x/389x DDR2 EVM, ASSY 513830 Rev C.

    I tried you GEL, it is better. I don't think that i enabled the spinlocks on the board before. Now it passed the Ipc_start() and i could actually see some partial results on the console display. Please see them in the two attached .txt files.

    The JudahBuild_results.txt contains the output from the executables that you sent me.

    The Localbuild_results.txt contains the output from the executables that I built at my local machine. I had to stop the A8 from outputting more lines to the console. But i could see some results like "Sending a message #1 to HOST". The problem now is the "Invalid CIO command (20) in the CIO buffer at address (0x80018fc8) ......". Do you have any idea what this implies?

    Thanks,

    Zhao

    2627.JudahBuild_results.txt

     

    3716.localbuild_results.txt

     

     

  • Zhao,

    What version of CCS are you running on?  I think the problem you are seeing with the CIO is due to the emulation driver package.  It needs to be updated to later version.  I don't know how you can update to a later version though.  Perhaps through the update manager?

    I think the newer CCS versions don't see this problem.

    Judah

  • Hi Judah,

    I am using CCS V5.1. I think it is the latest version. The detailed info is attached.

    What does CIO mean? What might cause the CIO problem? Thanks again for your effort.

    Zhao

    4721.CCSV5_details.txt

     

  • Hi Judah,

    I changed from XDS560V2 STM USB emulator to XDS510 USB emulator, the program seems to be working now with my old emulator. Below is the result to the Console. Please verify if it is correct.

    I also tried another XDS560V2 STM USB emulator, both XDS560V2 emulators result to the same CIO problem. I looked up on Spectrum Digital's web and could not find any updates on the XDS560V2's driver. I don't know if this is a bug with their driver. What emulator are you using? I wonder why yours is working fine.

    Thanks,

    Zhao

    [CortexA8] Start the main loop

    [C674X_0] Start the main loop

    [C674X_0] Sending a message #1 to HOST

    [CortexA8] Sending a message #1 to DSP

    [C674X_0] Sending a message #2 to HOST

    [CortexA8] Sending a message #2 to DSP

    [C674X_0] Sending a message #3 to HOST

    [CortexA8] Sending a message #3 to DSP

    [C674X_0] Sending a message #4 to HOST

    [CortexA8] Sending a message #4 to DSP

    [C674X_0] Sending a message #5 to HOST

    [CortexA8] Sending a message #5 to DSP

    [C674X_0] Sending a message #6 to HOST

    [CortexA8] Sending a message #6 to DSP

    [C674X_0] Sending a message #7 to HOST

    [CortexA8] Sending a message #7 to DSP

    [C674X_0] Sending a message #8 to HOST

    [CortexA8] Sending a message #8 to DSP

    [C674X_0] Sending a message #9 to HOST

    [CortexA8] Sending a message #9 to DSP

    [C674X_0] Sending a message #10 to HOST

    [CortexA8] Sending a message #10 to DSP

    [CortexA8] The test is complete

    [C674X_0] The test is complete

     

  • That looks correct to me.

    Judah

  • Hi Judah,

    I hope you don't mind telling me what version of emulator you are using and what CIO stands for? Even though it works with XDS510USB, i felt puzzled by XDS560V2 not working correctly.

    Thanks for your help.

    Zhao

     

  • Zhao,

    I'm using XDS560V2 USB.  CIO is a compiler section (buffer) that is read by CCS.

    Judah