TDA4VM: TDA4VM - Heterogenous development

Part Number: TDA4VM
Other Parts Discussed in Thread: AM2431, SYSCONFIG,

Hi,

I am working on a project to use the A72 and R5 in the main domain for my application. I need guidance on the best way to develop on the R5 and integrate the R5 build process or final FW Binaries into Yocto based on the TI ARAGO SDK. I am clear on the Yocto side of things.

I see several options and I would like expert opinion on the following:

  • Which SDK to use for R5 Development ? 
    • J721E Processor SDK 
    • MCU + SDK for R5 (based on the AM2431 which is exactly the R5 cores on main domain)
  • Target OS
    • A72 - Linux
    • R5 - FreeRTOS or noRTOS
    • Planning to use remoteproc framework to interface the A72 and R5. 
  • TI SYS FW - Board Cfg/RM Cfg/DM Cfg:
    • From the TI ARAGO SDK, I need to somehow customize the pin outs/pin mux and setup peripherals, allocate resources to R5 as well as A72 differently than the EVM reference design. 
    • What is the best approach to get this done ? External TI CCS/sysconfig tool to create the dts files and then pull it into Yocto ? 
    • Currently, I see the pre-built binaries being pulled from git repository and simply being packaged into sysfw.itb. The recipe is "ti-sci-fw.bb" which manages the sysfw. Not sure how to override them yet.

Thanks,

Prasanna

  • Hi Prasanna,

    Which SDK to use for R5 Development ? 
    • J721E Processor SDK 
    • MCU + SDK for R5 (based on the AM2431 which is exactly the R5 cores on main domain)

    Please use the J721E Processor RTOS SDK for developing RTOS applications for TDA4VM.

    Please note that all the Processor SDKs are released matching a particular device, so you cannot take a AM2431 MCU+SDK and use it with TDA4VM.

    Target OS
    • A72 - Linux
    • R5 - FreeRTOS or noRTOS

    This is all good. MCU R5F needs to run a Device Management (DM) library component, along with your application, and this requires an RTOS like FreeRTOS or SafeRTOS. NoRTOS/Baremetal firmwares can be used for the MAIN R5Fs and can work with Linux.

    What is the best approach to get this done ? External TI CCS/sysconfig tool to create the dts files and then pull it into Yocto ? 

    The CCS/SysConfig can give you the required pinmux device-tree nodes, but it won't generate ready-to-go complete device-tree files. You would have to take these excerpts and incorporate into your board-specific dts file. The TI SDKs do the base device dtsi files that can be included and adjusted in your board dts file.

    All of these changes need to be incorporated into a Linux Kernel tree. Yocto recipes deal with a Linux kernel devicetree, and you can adjust your platform yocto recipes to be able to pull and build for your particular platform.

    Currently, I see the pre-built binaries being pulled from git repository and simply being packaged into sysfw.itb. The recipe is "ti-sci-fw.bb" which manages the sysfw. Not sure how to override them yet

    The firmware integration into Yocto is through the ti-linux-firmware repository. The TI SDKs build using a default DM firmware built for the EVM, but you will need to incorporate your own firmware for your board.

    It is up-to-your recipes on how you stage and pull in the firmwares and utilize them.

    regards

    Suman

  • Hi Suman,

    Thanks for your response.  Here is my understanding so far of the high level flow:

    1. Use the processor RTOS SDK which comes with the ti-cgt-armllvm compiler and build my custom FreeRTOS project for target R5F and get the binary file out. Now this binary file goes into yocto to get packed into Linux image. Now from Linux use remoteproc to load this FW to the R5 target. If this is not true, how to build my FreeRTOS project ? It's better to build this with TI CCS by pulling in the processor SDK or directly use makefiles against the project ?

    2. Use SYSCFG to generate the overall system pin configuration integrate this dtsi excerpt into the K3-R5 Uboot SPL which will setup the pins and peripherals right during boot. This is effectively the tiboot3.bin.

    3. Which FW Component is responsible for assigning required peripherals/interrupts/DMA Channels to A72/R5/DSP Cores.is it DM or sysfw (RM Config and board cfg) ?

    4. SYSFW runs on the DMSC  Cortex - M core. This says the PM Config , RM Config and board config are part of the sysfw. 

    docs.u-boot.org/.../j721e_evm.html

    5. DM -> you're saying there should be a DM instance running with my FreeRTOS project on the MAIN DOMAIN R5 as well. Do you mean to say the SCI-Client to talk to SYSFW running on DMSC ?

    I don't see the source-code in the Processor-SDK-RTOS package. Is there a separate github repo holding the reference design source code for this DM firmware ? This should be built standlone via TI CCS or J721E Processor RTOS SDK or can be compiled via yocto for the K3-R5 target machine ? 

    Please let me know if you have any questions. 

    Thanks,

    Prasanna