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.

TDA4VM: Loading R5F_0_1 firmware using remoteproc

Part Number: TDA4VM

Hi,

I have successfully loaded the firmware for R5F_0_0 core but i was not able to do this for the second core on the MCU Island.

There wasn't even any information in the u-boot logs regarding the second core when i tried to do this.

Is it possible to load the firmware onto the R5F_0_1 core using the remoteproc?

Kind regards,

Adam

  • Hi Adam,

    By default the MCU_R5F is configured in lockstep mode in u-boot.
    https://git.ti.com/gitweb?p=ti-u-boot/ti-u-boot.git;a=commit;h=dfc6608d2e3cd913cbb5a8f88baf0ab90bd20df0


    The lockstep / split-mode configuration is decided based on dts property “lockstep-mode”
    Check k3-j721e-main.dtsi and k3-j721e-mcu-wakeup.dtsi file for this property.


    Regards,
    Vishal

  • Hi Vishal,

    The lockstep is enabled in the k3-j721e-mcu-wakeup.dtsi but after the loading of firmware the MCU is working in the split mode.

    Please look at this topic on the forum:

    Kind regards,

    Adam

  • Yes, you are right on top of dts property the H/W capability also matters based on that efuse value.

    Some changed are required in bootlaoders to support this.

  • Thanks Vishal for that confirmation.

    We will debate internally if we want to enable the lockstep because as of now this is not mandatory and this is not a high priority for us.

    I want to go back to the original purpose of this post.

    So is it possible to load the firmware onto the R5F_0_1 core using the remoteproc?

    I assume that the configuration is prepared for the MCU to run in lockstep so it does not support loading 2 separate firmwares onto 2 cores on the MCU island, but please confirm if that is the case.

    Kind regards,

    Adam

  • Hi Adam,

    Your assumption is correct, by default u-boot framework for J721e is setup for lockstep mode operation for MCU R5 subsystem and the MCU R5 firmware is loaded by R5 SPL.
    https://git.ti.com/gitweb?p=ti-u-boot/ti-u-boot.git;a=blob;f=board/ti/j721e/README;hb=refs/heads/ti-u-boot-2019.01

    The u-boot project would need changes to load MCU R5 in split mode.
    Let me get back to you on amount of changes needed.


    Regards,
    Vishal

  • Hi Adam,

    By default MCU R5SS firmware is loaded by R5 SPL and R5 SPL today only supports loading in lockstep mode.
    We can move the loading of MCU R5 firmwares from R5 SPL to A72 u-boot and control loading of MCU R5 firmwares from A72 u-boot environment variables.

    Below changes can help in loading from A72 u-boot:


    -1-

    Change dts to update MCU R5 to split mode

    diff --git a/arch/arm/dts/k3-j721e-mcu-wakeup.dtsi b/arch/arm/dts/k3-j721e-mcu-wakeup.dtsi
    index 9942d5fd2c..1b254250d6 100644
    --- a/arch/arm/dts/k3-j721e-mcu-wakeup.dtsi
    +++ b/arch/arm/dts/k3-j721e-mcu-wakeup.dtsi
    @@ -80,7 +80,7 @@
    
            mcu_r5fss0: r5fss@41000000 {
                    compatible = "ti,j721e-r5fss";
    -               lockstep-mode = <1>;
    +               lockstep-mode = <0>;
                    #address-cells = <1>;
                    #size-cells = <1>;
                    ranges = <0x41000000 0x00 0x41000000 0x20000>,

    -2-

    Disable loading of MCU R5 from R5 SPL.

    diff --git a/include/configs/j721e_evm.h b/include/configs/j721e_evm.h
    index e68920dc38..4dc0c4556e 100644
    --- a/include/configs/j721e_evm.h
    +++ b/include/configs/j721e_evm.h
    @@ -112,7 +112,7 @@
            "mainr5f0_0loadaddr=88000000\0"                                 \
            "mainr5f0_0fwname=/lib/firmware/j7-main-r5f0_0-fw\0"            \
            "mcur5f0_0loadaddr=89000000\0"                                  \
    -       "mcur5f0_0fwname=/lib/firmware/j7-mcu-r5f0_0-fw\0"              \
    +       "mcur5f0_0fwname=/lib/firmware/j7-mcu-r5f0_0-fw-disable\0"              \
            "rd_spec=-\0"                                                   \
            "init_mmc=run args_all args_mmc\0"                              \
            "get_fdt_mmc=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \

    -3-

    Update u-boot environment variable to load MCU R5

    => export rproc_fw_binaries '0 /lib/firmware/j7-mcu-r5f0_0-fw 1 /lib/firmware/j7-mcu-r5f0_1-fw 3 /lib/firmware/j7-main-r5f0_1-fw 4 /lib/firmware/j7-main-r5f1_0-fw 6 /lib/firmware/j7-c66_0-fw 7 /lib/firmware/j7-c66_1-fw 8 /lib/firmware/j7-c71_0-fw'



    Regards,
    Vishal