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: Does TDA4VM SPL support booting from eMMC UDA partition?

Part Number: TDA4VM

Hi TI Experts:

I have successfully booted SPL from the eMMC boot0 partition in SDK 8.4.
According to the following:
https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-jacinto7/08_06_00_11/exports/docs/linux/Foundational_Components/U-Boot/UG-Memory.html#booting-tiboot3-bin-tispl-bin-and-u-boot-img-from-emmc-boot-partition-for-k3-class-of-socs


and I learned from the SDK 8.6 documentation that SBL can be booted from the eMMC UDA partition:
https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_06_00_12/exports/docs/pdk_jacinto_08_06_00_31/docs/userguide/jacinto/boot/boot_k3.html#booting-via-emmc-uda-partition

I tried it, but I'm using SPL instead of SBL.
I can't boot from the eMMC UDA partition.
My Steps:
1. Formatting eMMC UDA partitions just like formatting SD cards: boot(fat) + rootfs(ext4).
2. Copy the files from the SD card boot partition to the eMMC boot partition(tiboot3.bin, tispl.bin, sysfw.itb...).
3. Setting eMMC EXCSD in u-boot:
    mmc partconf 0 1 7 1
    mmc bootbus 0 2 0 0
    OR
    mmc partconf 0 0 0 0
    mmc bootbus 0 0 0 0
4. set boot mode pin & power on
There is no output from the serial port & the current is only about 0.3A.

My understanding is that the process of SPL boot from eMMC UDA should be:
1. BootRom load tiboot3.bin(SPL) file from boot partion(FAT) in UDA
2. tiboot3.bin load sysfw.itb file from boot partion(FAT) in UDA
3. ...
If my understanding is incorrect, please correct me.


Are there any mistakes in my steps?
Could you please teach me how to boot SPL from eMMC UDA in SDK 8.4.

Our SDK Version:
SDK Linux:08_04_00_11
SDK RTOS: 08_04_00_06

Thank you!

  • Hi Tiancheng Zhang,

    Try with these command 

    => mmc dev 0 0
    => fatload mmc 1 ${loadaddr} tiboot3.bin
    => mmc write ${loadaddr} 0x0 0x400
    => fatload mmc 1 ${loadaddr} tispl.bin
    => mmc write ${loadaddr} 0x400 0x1000
    => fatload mmc 1 ${loadaddr} u-boot.img
    => mmc write ${loadaddr} 0x1400 0x2000
    => fatload mmc 1 ${loadaddr} sysfw.itb
    => mmc write ${loadaddr} 0x3600 0x800
    => mmc partconf 0 1 7 1
    => mmc bootbus 0 2 0 0

    0x7 is used for the user data parttion .

    Regards

    Diwakar

  • Hi Diwakar

    Thank you for your reply.

    mmc dev 0 0

    I understand that this method is using UDA-raw mode to boot.

    I am worried that the 0x0 offset conflicts with the MBR partition table in UDA.

    Reasons for using eMMC UDA boot:
    The eMMC parts for our customized board may not be compatible with boot0 boot.
    So we want to try booting from UDA.

    Thank you!

    BRs

    Tiancheng

  • Hi Tiancheng

    I am worried that the 0x0 offset conflicts with the MBR partition table in UDA.

    You want to use FS mode or raw mode ?

    Regards
    Diwakar

  • Hi Diwakar

    I think I have to use FS mode to boot from UDA.

    Because Linux rootfs is on UDA, there must be a partition table.

    If my understanding is incorrect, please correct me.

    Thank you!

    BRs

    Tiancheng

  • Hi Tiancheng

    If my understanding is incorrect, please correct me.

    yes .

    Also how about you boot images will they will be in UDA only ?

    Regards

    Diwakar

  • Hi Diwakar

    Yes, boot images will be in UDA only, just like placing boot image on an SD card.
    There are software boot partion and rootfs partion in UDA

    Is this plan feasible?


    and we plan to remove OSPI Flash.

    Thank you!

    BRs

    Tiancheng

  • Hi Tiancheng

    If you want to boot from the UDA partion in FS mode please follow these steps.

    • Make the changes in the uboot to avoid boot in the raw mode.

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    diff --git a/configs/j721e_evm_r5_defconfig b/configs/j721e_evm_r5_defconfig
    index 34457c35d8..6af7f59cd3 100644
    --- a/configs/j721e_evm_r5_defconfig
    +++ b/configs/j721e_evm_r5_defconfig
    @@ -34,8 +34,8 @@ CONFIG_SPL_BOARD_INIT=y
    CONFIG_SPL_STACK_R=y
    CONFIG_SPL_SEPARATE_BSS=y
    CONFIG_SPL_EARLY_BSS=y
    -CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
    -CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x400
    +#CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR is not set
    +#CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR is not set
    CONFIG_SPL_DMA=y
    CONFIG_SPL_ENV_SUPPORT=y
    CONFIG_SPL_FS_EXT4=y
    diff --git a/configs/j721e_evm_a72_defconfig b/configs/j721e_evm_a72_defconfig
    index e71a862a6f..d4e6fc0b52 100644
    --- a/configs/j721e_evm_a72_defconfig
    +++ b/configs/j721e_evm_a72_defconfig
    @@ -33,8 +33,8 @@ CONFIG_SPL_BOARD_INIT=y
    CONFIG_SPL_SYS_MALLOC_SIMPLE=y
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    • Build the uboot and copy tiboot3.bin,tispl,u-boot.img to the sd card boot partition also copy mksdboot.sh script which you can find in the linux sdk at location j721e/ti-processor-sdk-linux-j7-evm-08_04_00_11/bin
    • Boot upto the uboot using sd boot mode .
    • Halt at UBOOT and run 
      •  mmc partconf 0 1 7 1
      • mmc bootbus 0 2 0 0
    • Now Boot upto Linux
    • Run mksdboot.sh script
      • mkdir /mnt/sd
      •  mount /dev/mmcblk0p1 /mnt/sd
      • cd /mnt/sd
      • ./mksdboot.sh --device /dev/mmcblk0
    • Now copy all the boot binaries from the boot partition of the sd card to the uda boot partion of the emmc 
      • mkdir /mnt/emmc
      • mount /dev/mmcblk1p1 /mnt/emmc/
      • cp /mnt/sd/* /mnt/emmc
    • Change the boot mode to emmc(user)
      • SW8[1:8]=1000_0000  SW9[1:8]=0000_0000
    • Power on the board 

    NOTE:With these changes you will not be able to use emmc raw mode If you want to use revert the above mentioned changes

    Regards
    Diwakar

  • Hi Diwakar

    Thank you so much!

    I will try it.

    BRs

    Tiancheng