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.

AM62A7: How to develop custom functions on the DM R5 core

Part Number: AM62A7

Tool/software:

Hello TI

The sdk version we use is 09.02.00.05.

We want to develop some functions that run on DM R5 core, but we don't know which project we could use as a base. And we have our own perception applications that will use C7x processor to do some AI functions.

We saw different DM firmware in the following three places, we tried the all these firmware, some of them can not work well with the C7x.

1. MCU+ SDK: examples/drivers/ipc/ipc_rpmsg_echo/am62ax-sk/r5fss0-0_freertos

   Use this project, the perception apps does not work. It seems there is some problems with the ipc function.

2. Linux processor sdk: board-support/prebuilt-images/ti-dm/am62axx/ipc_echo_testb_mcu1_0_release_strip.xer5f

   Use this firmware, everything works fine. But this is a binary file, we don't where can we get the source code. What functions does this firmware implement?

3. Firmware builder: ti-firmware-builder-am62axx-evm-09_02_00_05/vision_apps/platform/am62a/rtos/mcu1_0

   Use this default project, the perception apps does not work. I add the following definitions to the common/app_cfg_mcu1_0.h, the perception apps works.

   #define ENABLE_IPC
   #define ENABLE_IPC_MPU1_0
   #define ENABLE_IPC_MCU1_0
   #define ENABLE_IPC_C7x_1
   #define ENABLE_IPC_ECHO_TEST

What is the correct approach to do the development on DM R5? Which project should we based on?

Best Regards,

Liu Lizhao

  • Hello Liu Lizhao,

    What exactly are you trying to do? e.g., are you just looking for the DM R5F project that is loaded in the default filesystem image?

    On devices like AM62x & AM62Px, the default DM R5F project is in the MCU+ SDK, examples/drivers/ipc/ipc_rpmsg_echo_linux. This example is a simple IPC demo that waits for an incoming message from Linux, and echoes the same message back. This task runs alongside the Device Manager (DM) task which is critical for the processor to function.

    On AM62Ax, the out-of-the-box DM R5F project is a different project that works alongside the camera and EdgeAI applications running on the C7x. Off the top of my head, I am not sure which project is used - I would suspect that firmware builder is the correct one.

    You can find some additional information about developing code on the DM R5F here:
    https://software-dl.ti.com/mcu-plus-sdk/esd/AM62AX/09_02_00_38/exports/docs/api_guide_am62ax/DEVELOP_AND_DEBUG_DMR5.html 

    Regards,

    Nick

  • Hello Nick

    We want to develop our bootloader on DM R5 core. And we also need to run the EdgeAI applications. So maybe we should develop our functions based on the "out-of-the-box DM R5F project" that you mentioned. Could you help to found out where we can get the source code of this project. Or if we try to develop on the sample project, examples/drivers/ipc/ipc_rpmsg_echo_linux, what extra work should we do to make it capable to work alongside the camera and EdgeAI applications running on the C7x.

    Best Regards,

    Liu Lizhao

  • Hello Liu Lizhao,

    It looks like the DM R5F core firmware that is running out of the box is in firmware builder (that's the code that enabled edge AI and image analysis). For more information about requesting access to firmware builder, please refer to https://software-dl.ti.com/processor-sdk-linux/esd/AM62AX/09_02_00/exports/edgeai-docs/common/sdk_components.html#firmware-builder

    Keep in mind that firmware builder doesn't have the same level of support as MCU+ SDK. If you run into any questions while using MCU+ SDK, I can send you to the right team member to help. On the other hand, we aren't really structured right now to support customers modifying firmware builder code, so that software is provided "as-is". The firmware builder is mostly provided to allow customers to update their memory maps and re-generate the EdgeAI remote core binaries as needed.

    Regards,

    Nick

  • Hello Nick,

    Based on what you've said, that the firmware code is provided "as-is" and is not recommended to be modified, what functions do we need to implement in order to enable the capabilities of the C7x if we are developing based on an MCU + SDK?

    Best Regards,

    Liu Lizhao

  • Hello Liu,

    We are not really structured right now to support much C7 customer development on AM62Ax, especially the EdgeAI code - that is currently provided with the intent that customers just take the firmware and run it as a "black box" instead of modifying it.

    If you have the experience and interest, you are welcome to make your own changes to the C7 code you find in the firmware builder project! We just will not be able to help if you run into any problems.

    Regards,

    Nick

  • Hi Liu,

    Just for your understanding the current SDK architecture is described in here:

    The red blocks in the software stack are TI provided firmware or services of which TIDL and TIFS can`t be modified. All of the C7x and DM R5 code is delivered as part of the firmware builder package which supports IPC, TIOVX framework and FreeRTOS services. Application developers can call into TIFS and DM Firmware using the TISCI APIs and TIDL can be leveraged by application developers using TIDL-RT or using the TIDL compilation tools. 

    this architecture currently doesn`t support writing custom functions on C7x and deploying custom function in parallel to running deep learning firmware. you can program custom functions on DM R5 but need to understand the limitations described here:

    AM62Ax MCU+ SDK: Developing applications on Device Manager/Wake-up R5 core 

    Firmware builder source code can be requested here:

    ti.com/secureresources/FIRMWARE-BUILDER-AM62A 

    TI currently doesn`t have a plan to support running deep learning tasks and C7x (general DSP) task concurrently in this architecture.

    Thanks and Regards,

    Rahul Prabhu