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.

AM5728 DSPBIOS/SYSLINK support

Other Parts Discussed in Thread: AM5728, SYSBIOS

Hi,

       We are porting one process that we had originally running on the DSP present in DM816x to the AM5728. This process controls the SPI bus using the DSP and other computations. It uses DSPBIOS as OS in the DSP and Syslink to send messages from the ARM to the DSP. 

        Right now the DSPs on AM5728 seems to be intended to be used with openCL(audio some day maybe?). AM5728 has a C66x and DM816x a C674x but according to the TRM they are compatible: "The C66x DSP is object-code compatible with the C64x+/C674x DSPs".

        In the filesystem included in processors SDK I can see several binaries that could be loaded into the DSP:

ti-processor-sdk-linux-am57xx-evm-02.00.00.00/filesystem/lib/firmware$ ls * | grep 66
dra7-dsp1-fw.xe66
dra7-dsp1-fw.xe66.dce
dra7-dsp1-fw.xe66.ocl
dra7-dsp1-fw.xe66.test
dra7-dsp2-fw.xe66
dra7-dsp2-fw.xe66.ocl
dra7-dsp2-fw.xe66.test

         If you inspect those binaries with nm (nm dra7-dsp1-fw.xe66.test | grep less), you can see that they have sysbios. Questions that I have:

1) How can I rebuild these DSP binaries? In the past for DM8168 there was an EZSDK overlay that we got under NDA, can we request something similar for AM5728? Such a package would speed up my porting process

2) Which compiler should I use? Which code generation tools version? strings indicates that should be used, where can I download it of is it included in the "overlay package" for am5728?

strings dra7-dsp1-fw.xe66.test | grep cgt -i
/opt/ti/cgt6x-7.2.9/include/string.h
/opt/ti/cgt6x-7.2.9/include/_lock.h
/opt/ti/cgt6x-7.2.9/include/stddef.h


3) What should I use instead of syslink? plain rpmsg? Is there an example app that I could use?

strings dra7-dsp1-fw.xe66.test | grep rpmsg
ti.ipc.rpmsg.RPMessage
rpmsg-rpc
rpmsg-omx0
rpmsg-omx
rpmsg-omx1
rpmsg-omx2
rpmsg-omx4
ti.ipc.rpmsg.RPMessage=EXLFS
rpmsg-client-sample
IpcMgr_rpmsgStartup
IpcMgr_rpmsgStartup


4)  The TRM seems to indicate that the DSP has access to SPI, is this correct?

 DSP is connected to the L3 Interconnect which is connected to the L4 Interconnect which is connected to the McSPI.

Thanks in advance on any guidance that you could provide.

-David

  • Hi,

    I will ask the software team to comment on questions 1-3. For question 4, yes this is correct.
  • David,

    Please check my responses on your questions that I have provided below:

    David Soto - RidgeRun said:
    1) How can I rebuild these DSP binaries? In the past for DM8168 there was an EZSDK overlay that we got under NDA, can we request something similar for AM5728? Such a package would speed up my porting process

    There has been some transition in the way the SDK  is packaged and delivered moving from DM8168 to AM57xx devices. The EZSDK has been replaced with Processsor SDK Linux and Processor SDK RTOS. The Linux specific software is packages in the Linux SDK and the bare-metal CSL and the RTOS specific packages are part of the Processor SDK RTOS. 

    The DSP/BIOS OS has now been developed into TI RTOS OS which can run on all core C66x, M4 and A15 on the AM572x devices. SYSLINK component is no longer supported for AM57xx devices. The Interprocessor offloading and messaging is handled using MPM and IPC components.

    David Soto - RidgeRun said:
    2) Which compiler should I use? Which code generation tools version? strings indicates that should be used, where can I download it of is it included in the "overlay package" for am5728?

    For the question regarding C674x to C66x, you should be able to use most of your code as is on the C66x core as long as you have C code and not code written in assembly. Please note, that the C6000 compiler now builds all of the software in ELF binary format so if you have COFF binaries from DM8168, they will need to be re-built to build in the ELF format(which is the default format used even in TI RTOS and IPC libraries)

    The C6000 Compiler supported by the SDK is now part of Code composer studio(CCSv6.1.x) environment. The recommended C6000 compiler version is provided here:

    David Soto - RidgeRun said:
    3) What should I use instead of syslink? plain rpmsg? Is there an example app that I could use?

    Instead of SYSLINK, you can use IPC3.x and MPM.  MPM can be used to load and run code on DSP and IPC or RPMsg can be used for messaging.

    The Migration from SYSLINK to IPC3.x has been described in te wiki article here:

     

    MPM component in the SDK i s described here:

     

    OpenCL is another framework that is supported for offloading code on heterogeneous devices. This Open source framework is pretty useful for community developers who also have experience with X86 and GPU processors which use this framework. This framework can also be used to offload tasks from A15 to the slave C66x core on the AM57xx device

     

    David Soto - RidgeRun said:

    4)  The TRM seems to indicate that the DSP has access to SPI, is this correct?

     DSP is connected to the L3 Interconnect which is connected to the L4 Interconnect which is connected to the McSPI

    Yes, the DSP core does have access to McSPI. The Processor SDK RTOS includes a SPI driver for the C66x core and also provides an example to configure the device to access McSPI on the SOC. The driver can be found in the package under the directory path pdk_am57xx_1_0_2\packages\ti\drv\spi.  

    Inorder to build the driver and create the example please follow the steps provided here:

     

    The documentation for the SPI driver is provided here:

    Hope this helps and provides you a starting point.

    Regards,

    Rahul

  • Hi Rahul,

         Thanks for the great description provided in your answer, definitely it is a good starting point. I will give it a try following those wikis and maybe using IPC3.x and I will let you know if I get a problem rebuilding the DSP firmware.

         Moreover, I would need the memory map for AM5728, I recall that there was a wiki for DM8168 but I don't see one for AM5728, could you provide it?

    Regards,

    -David