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.

TDA4VH-Q1: eMMC boot and USB boot Q&A

Part Number: TDA4VH-Q1
Other Parts Discussed in Thread: TDA4VH

Hi,

I am trying the eMMC booting by following the guide: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/08_06_00_12/exports/docs/linux/Foundational_Components/U-Boot/UG-Memory.html

but I don't find the sysfw.itb file from the SD image. 

the sysfw.itb is a must file or not for eMMC booting on TDA4VH platform? where to find the sysfw.itb?

I also didn't find the sysfw.itb under the prebuilt image path: /ti-processor-sdk-linux-j784s4-evm-08_06_01_02/board-support/prebuilt-images

  • Hi 

    TDA4VH uses combined boot flow in which tifs + bootloader is combined together .

    Rom will load both the tifs and bootloader at the same time.

    That is why there in sysfe.itb as it used in legacy boot flow.

    Regards

    Diwakar 

  • Hi, 

    So you means there is not a separate sysfw.itb file on TDA4VH? it is already integrated into the tiboot3.bin or some other boot files.

    on TDA4VH, only need to load tiboot3.bin, tispl.bin and u-boot.img files? 

    Another question,  in our product, we require USB and eMMC boot, for the USB boot, I find a link in TI website:

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/08_06_00_12/exports/docs/linux/Foundational_Components/U-Boot/UG-DFU.html

    Q1: why need to rebuilt u-boot and build MLO/u-boot binaries? the default re-built message under the path /ti-processor-sdk-linux-j784s4-evm-08_06_01_02/board-support/prebuilt-images cannot be used?

    from the TI link, the MLO is not download to the board, why need to build MLO binary?

    Q2: where to download the sdk for rebuilding the u-boot and MLO binaries? and how to build

    Q3: where is the SW3? and also don't find which USB port is the USB0 port

    USB Peripheral boot mode on J784S4 EVM (SPL-DFU boot mode)

    • Set SYSBOOT switches to USB Peripheral boot mode (Refer to Initialization chapter of TRM for boot switch details)
    • Make sure USB0 port in UFP/DRP mode: SW3[3:4] = 01 or 1x
    • Connect EVM’s TypeC port (USB0 port) to PC through USB cable
    • Power on the board

  • Hi 

    So you means there is not a separate sysfw.itb file on TDA4VH? it is already integrated into the tiboot3.bin or some other boot files.

    Yes it will be get combined with the bootloader(tiboot3.bin)

    on TDA4VH, only need to load tiboot3.bin, tispl.bin and u-boot.img files? 

    Yes that is correct.

    Q1: why need to rebuilt u-boot and build MLO/u-boot binaries? the default re-built message under the path /ti-processor-sdk-linux-j784s4-evm-08_06_01_02/board-support/prebuilt-images cannot be used?

    from the TI link, the MLO is not download to the board, why need to build MLO binary?

    Here the MLO/UBOOT used interchangeably , by default on TI evm the DFU mode is already enabled  but if customer is using there own defcong for their custom board then in that case they need to enable this by following the instruction mentioned in the above document.

    Q2: where to download the sdk for rebuilding the u-boot and MLO binaries? and how to build

    You can download the latest linux SDK usng this link https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-lOshtRwR8P/09.00.01.02/ti-processor-sdk-linux-adas-j784s4-evm-09_00_01_02-Linux-x86-Install.bin

    it also contain the UBOOT source code.

    Q3: where is the SW3? and also don't find which USB port is the USB0 port

    Regards
    Diwakar

  • Hi, Diwakar, 

    I tried the emmc boot flow on TDA4VH EVM board by following the guide.

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/08_06_00_12/exports/docs/linux/Foundational_Components/U-Boot/UG-Memory.html

    after writing done to the eMMC card and switch to the eMMC boot,  the system cannot  boot up.

    here is my switch setting: SW7[1:8]:     0100 0000 (SW7.2=1), SW11[1:8]:   1000 0000  (SW11.1 = 1)

    seems the partition have something wrong, could you give me some suggestion to fix this defect.

    => mmc part

    Partition Map for MMC device 0 -- Partition Type: EFI

    GUID Partition Table Header signature is wrong: 0x32472641DEEE9E91 != 0x5452415020494645
    find_valid_gpt: *** ERROR: Invalid GPT ***
    GUID Partition Table Header signature is wrong: 0x0 != 0x5452415020494645
    find_valid_gpt: *** ERROR: Invalid Backup GPT ***
    => fatls mmc 0:1
    ** Unrecognized filesystem type **

    here is the full download log:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    U-Boot SPL 2021.01-g62a9e51344 (May 02 2023 - 21:12:41 +0000)
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--1-g2249f (Chill Capybara')
    SPL initial stack usage: 13472 bytes
    Trying to boot from MMC2
    Starting ATF on ARM64 core...
    NOTICE: BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
    NOTICE: BL31: Built : 21:12:26, May 2 2023
    I/TC:
    I/TC: OP-TEE version: 3.20.0 (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 Tue May 2 21:12:33 UTC 2023 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Hi 

    Thanks for reaching out will be responding to thread within two week.

    Regards

    Diwakar 

  • Hi 

    As the logs clearly says you are not creating a partition correctly.

    Partition Map for MMC device 0 -- Partition Type: EFI

    GUID Partition Table Header signature is wrong: 0x32472641DEEE9E91 != 0x5452415020494645
    find_valid_gpt: *** ERROR: Invalid GPT ***
    GUID Partition Table Header signature is wrong: 0x0 != 0x5452415020494645
    find_valid_gpt: *** ERROR: Invalid Backup GPT ***
    => fatls mmc 0:1
    ** Unrecognized filesystem type **

    i would suggest  you to go through this app note for flashing technique 

    https://www.ti.com/lit/an/spracy5/spracy5.pdf?ts=1695999126689&ref_url=https%253A%252F%252Fwww.google.com%252F

    Regards

  • Hi, Diwakar

    thanks for your comment, I read the flashing doc, and try again, but still cannot bootup from the eMMC, here is my full log.

    please help to check again. 

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    U-Boot SPL 2021.01-g62a9e51344 (May 02 2023 - 21:12:41 +0000)
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    ti_i2c_eeprom_am6_get: Ignoring record id 255
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--1-g2249f (Chill Capybara')
    SPL initial stack usage: 13472 bytes
    Trying to boot from MMC2
    Starting ATF on ARM64 core...
    NOTICE: BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
    NOTICE: BL31: Built : 21:12:26, May 2 2023
    I/TC:
    I/TC: OP-TEE version: 3.20.0 (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 Tue May 2 21:12:33 UTC 2023 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    after write to the eMMC card, seems the filesystem type is not right, and the written file cannot be found...

    I switch to the sd card (mmc dev 1), found the file can be read on sd card, and the file system type is DOS.

    I am not sure is it the rootcause, and how to fix it ?

    => mmc part

    Partition Map for MMC device 0 -- Partition Type: EFI

    Part Start LBA End LBA Name
    Attributes
    Type GUID
    Partition GUID
    1 0x00000022 0x03b47fde "rootfs"
    attrs: 0x0000000000000000
    type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
    guid: e2b6b38b-59eb-4c15-8dd7-3b2c97a80192
    => fatls mmc 0:1
    ** Unrecognized filesystem type **

  • Hi , Diwakar

    Now eMMC board can work on tda4vh EVM board, the mainly reason is ('mmc partconf 0 1 1 1' and 'mmc bootbus 0 2 0 0' should be executed)

    thanks for your great help. I still have 2-questions:

    1) seems the boot area cannot be read?  is there any region protection mechanism for the boot image area(offset from 0x0 to 0x3400)?

    first, I write the u-boot.image to offset 0x1400, and dtb file to offset 0x3400

    fatload mmc 1 ${loadaddr} u-boot.img &&  mmc write ${loadaddr} 0x1400 0x2000

    tftp ${loadaddr} tda4/k3-j784s4-evm.dtb && mmc write ${loadaddr} 0x3400 0x400

    and then read the offset 0x3200 with len 0x400 ( mmc read  0x91000000 0x3200 0x400),

    it seems these area cannot be read, the read content is zero.

    but if I jump over the boot area (offset from 0x0 to 0x3400), the aras can be  read.

    e.g. mmc read  0x91000000 0x3400 0x400

    2. about the boot region part. for the emmc boot, seems only a rootfs region is created, and the file system type is not identified by fatls.

    so where the boot files(tiboot3.bin, tispl.bin, u-boot.img) is wrote to ? 

  • Hi 

    and then read the offset 0x3200 with len 0x400 ( mmc read  0x91000000 0x3200 0x400),

    it seems these area cannot be read, the read content is zero.

    but if I jump over the boot area (offset from 0x0 to 0x3400), the aras can be  read.

    But you are writing dtb to 

    mmc write ${loadaddr} 0x3400 0x400

    so 

    but if I jump over the boot area (offset from 0x0 to 0x3400), the aras can be  read.

    e.g. mmc read  0x91000000 0x3400 0x400

    this  is correct.

    2. about the boot region part. for the emmc boot, seems only a rootfs region is created, and the file system type is not identified by fatls.

    so where the boot files(tiboot3.bin, tispl.bin, u-boot.img) is wrote to ? 

    You are writing to RAW boot 0 partition of the emmc  that is why you are not able to read on the other hand you are writing rootfs in the UDA partition with ext4 format .

    Regards
    Diwakar

  • Hi , Diwakar

    got it, is there any way to list all files on the eMMC part?

    like using fatls to list the files on the SD card.

  • HI 

    got it, is there any way to list all files on the eMMC part?

    if you are writing to the RAW partition you can only do the raw access using mmc read command if are using a UDA partition with fat partition type 

    you can use fatls command.

    Regards
    Diwakar

  • Hi  , Diwakar

    I found a eMMC UDA partition diagram. 

    You are writing to RAW boot 0 partition of the emmc  that is why you are not able to read on the other hand you are writing rootfs in the UDA partition with ext4 format .

    you means I am writing the boot images to the partition 1 of UDA?

    one more thing to confirm,  from the link https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/08_06_00_12/exports/docs/linux/Foundational_Components/U-Boot/UG-Memory.html#

    I found the eMMC layout, my question is where is suitable to put our system image?

    from the eMMC layout, it seems we cannot use the offset 0x3400 of boot0 partition, is it right? (the offset 0x3400 is reserved for environment vars and backup env , and sysfw. runtime these area may be written, is it right?)

    if yes, where can we put our system image? the user partition is suitable? how to switch to user partition?

  • HI 

    Please go through the SDK documentation for the TDA4VH

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/09_00_01_02/exports/docs/linux/Foundational_Components/U-Boot/UG-Memory.html?highlight=boot0

    BOOT0 partition is different from the UDA partition 

    the above image show keeping the boot images (tiboot3.bin,tispl,u-boot.img ) in BOOT0 partition and the rootfs in the UDA partition.

    Regards
    Diwakar

  • Hi  Diwakar, 

    the above image show keeping the boot images (tiboot3.bin,tispl,u-boot.img ) in BOOT0 partition and the rootfs in the UDA partition.

    my question is, is there any full partition list diagram? who create the BOOT0 partion, and how about the partition start and len?

    the UDA partiton is from offset 2MB?  I am confused,  because the size of all the boot images is bigger than 2MB, so the rootfs start should be set to bigger than all boot image size, is it right?

    U-Boot # printenv partitions
    uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}
  • HI 

    my question is, is there any full partition list diagram? who create the BOOT0 partion, and how about the partition start and len?

    The size of the boot partition and the user partition is defined by the memory manufacturer.

    the UDA partiton is from offset 2MB?  I am confused,  because the size of all the boot images is bigger than 2MB, so the rootfs start should be set to bigger than all boot image size, is it right?

    Here it will create a another partiion in UDA with the offset of 2MB and this is defined by you in the sdk it is 0 

    Fullscreen
    1
    2
    => printenv partitions
    partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=0,size=-,uuid=${uuid_gpt_rootfs}
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    hope this answer your question.

    Regards
    Diwakar

  • Hi, Diwakar,

    got it, thanks. my last question, where is suitable to put our system image?

    if following the u-boot.img, that's from the offset 0x3400, our system image is about >8MB. maybe it will exceed the size of boot0 partition. 

    and also how to find the size of boot0 partiton?

    I concern the size is not enough for all TI boot images(tiboot3.bin, tispl.bin, u-boot.img) and our system images.

    or should we put our system image in rootfs in uda?  

    which one is the better choice?

  • Hi 

    and also how to find the size of boot0 partiton?

    That information should come from the emmc vendor but for a quick check you can boot upto link and run lsblk command 

    here the boot is 31MB

    or should we put our system image in rootfs in uda?  

    we usually suggest to keep the boot images in the boot0 partition as it is raw access and fast as compare to UDA 

    and keep rootfs in the UDA.

    But if you have a OSPI that is recommended over emmc as ospi is much faster as compare to emmc.

    Regards
    Diwakar

  • Hi, Diwakar,

    we usually suggest to keep the boot images in the boot0 partition as it is raw access and fast as compare to UDA 

    and keep rootfs in the UDA

    thanks for your comment, It's clearly now, we will also put our system image in boot0 partition, behind of uboot.image of offset 0x3400,

    31MB is enough for all images.

    I have no questions now, thanks again for your great support for this ticket.