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.

RTOS/TCI6638K2K: ARM and DSP Accessing QMSS / CPPI

Part Number: TCI6638K2K


Tool/software: TI-RTOS

Is there an example that demonstrate the use of QMSS / CPPI / RM for message passing between ARM and DSP? From the PDK, I have seen examples for DSP<->DSP and ARM<->ARM. I have tried to mix and match code from these examples to create a new example for ARM <-> DSP but I am experiencing a lot of problem. It will be nice if there is a simple example I can build on top of.

Lawrence

  • I've moved your thread to the device forum.

    Todd
  • Since there is no example as is, I try to combine the example I found in pdk_k2hk_4_0_4/packages/ti/drv/rm/test/dsp_client and pdk_k2hk_4_0_4/packages/ti/drv/qmss/example/InfraDmaMC. My approach is to use the code in dsp_client as the baseline and slowly add in code from InfraDmaMC example to get it working. Now I am adding function sysInit() and I can get it compiled. When I run the code, I get an error when starting QMSS and I am stuck here. The printout:

    Core 0: Error start QMSS error code: -130

    Another weird things is the size of L1D cache:

    Core 0 : L1D cache size 4. L2 cache size 0.

    I don't know if there is a problem with L1D but at this point the focus is to get QMSS and CPPI up and running.

  • Attached us the zip file of the DSP code, cfg and cmd files

    qmss.zip

  • I have also attached some of the ARM source for reference

    arm_qmss.zip

  • I have been digging more into Qmss_startSubSysCfg() to see why it returns QMSS_NOT_INITIALIZED.

    It is checking a variable qmssGObjIsValid[subSys] to see if the QMSS global object is valid.

    The only place to set this flag is in  Qmss_initSubSys().

    When I call this function before calling Qmss_startSubSysCfg(), Qmss_initSubSys() returns QMSS_RESOURCE_LINKING_RAM_INIT_DENIED error.

    Of course QMSS won't initialize the linking ram because ARM has already initialized QMSS.

    Now my question is: how can DSP set up qmssGObjIsValid[subSys] without re-initializing QMSS?

    Any suggestion?