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.
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:
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)
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.
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:
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! I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html I/TC: Primary CPU initializing I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--1-g2249f (Chill Capybara') I/TC: HUK Initialized I/TC: Activated SA2UL device I/TC: Fixing SA2UL firewall owner for GP device I/TC: Enabled firewalls for SA2UL TRNG device I/TC: SA2UL TRNG initialized I/TC: SA2UL Drivers initialized I/TC: Primary CPU switching to normal world boot U-Boot SPL 2021.01-g62a9e51344 (May 02 2023 - 21:12:53 +0000) SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--1-g2249f (Chill Capybara') Trying to boot from MMC2 U-Boot 2021.01-g62a9e51344 (May 02 2023 - 21:12:53 +0000) SoC: J784S4 SR1.0 GP Model: Texas Instruments J784S4 EVM Board: J784S4X-EVM rev E3 DRAM: 32 GiB idle-statesFlash: 0 Bytes MMC: mmc@4f80000: 0, mmc@4fb0000: 1 Loading Environment from MMC... OK In: serial@2880000 Out: serial@2880000 Err: serial@2880000 am65_cpsw_nuss ethernet@46000000: K3 CPSW: nuss_ver: 0x6BA02102 cpsw_ver: 0x6BA82102 ale_ver: 0x00293904 Ports:1 mdio_freq:1000000 Unidentified board claims J784S4X-EVM in eeprom header Net: eth0: ethernet@46000000port@1 Hit any key to stop autoboot: 0 => mmc list mmc@4f80000: 0 (eMMC) mmc@4fb0000: 1 => mmc dev 0 switch to partitions #0, OK mmc0(part 0) is current device => 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: 30b2b13c-e2be-47a3-98ae-e0dd95401e4c => fatls mmc 0:1 ** Unrecognized filesystem type ** => printenv partitions partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=0,size=-,uuid=${uuid_gpt_rootfs} => printenv uuid_gpt_disk uuid_gpt_disk=e9650bf8-064b-41a9-b3bd-aa71be8413d2 => printenv uuid_gpt_rootfs uuid_gpt_rootfs=30b2b13c-e2be-47a3-98ae-e0dd95401e4c => mmc dev 0 1 switch to partitions #1, OK mmc0(part 1) is current device => fatload mmc 1 ${loadaddr} tiboot3.bin 480294 bytes read in 30 ms (15.3 MiB/s) => mmc write ${loadaddr} 0x0 0x400 MMC write: dev # 0, block # 0, count 1024 ... 1024 blocks written: OK => fatload mmc 1 ${loadaddr} tispl.bin 992992 bytes read in 54 ms (17.5 MiB/s) => mmc write ${loadaddr} 0x400 0x1000 MMC write: dev # 0, block # 1024, count 4096 ... 4096 blocks written: OK => fatload mmc 1 ${loadaddr} u-boot.img 1191548 bytes read in 64 ms (17.8 MiB/s) => mmc write ${loadaddr} 0x1400 0x2000 MMC write: dev # 0, block # 5120, count 8192 ... 8192 blocks written: OK => 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 ** =>
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.
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! I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html I/TC: Primary CPU initializing I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--1-g2249f (Chill Capybara') I/TC: HUK Initialized I/TC: Activated SA2UL device I/TC: Fixing SA2UL firewall owner for GP device I/TC: Enabled firewalls for SA2UL TRNG device I/TC: SA2UL TRNG initialized I/TC: SA2UL Drivers initialized I/TC: Primary CPU switching to normal world boot U-Boot SPL 2021.01-g62a9e51344 (May 02 2023 - 21:12:53 +0000) SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.3--1-g2249f (Chill Capybara') Trying to boot from MMC2 U-Boot 2021.01-g62a9e51344 (May 02 2023 - 21:12:53 +0000) SoC: J784S4 SR1.0 GP Model: Texas Instruments J784S4 EVM Board: J784S4X-EVM rev E2 DRAM: 32 GiB idle-statesFlash: 0 Bytes MMC: mmc@4f80000: 0, mmc@4fb0000: 1 Loading Environment from MMC... OK In: serial@2880000 Out: serial@2880000 Err: serial@2880000 am65_cpsw_nuss ethernet@46000000: K3 CPSW: nuss_ver: 0x6BA02102 cpsw_ver: 0x6BA82102 ale_ver: 0x00293904 P orts:1 mdio_freq:1000000 Unidentified board claims J784S4X-EVM in eeprom header Net: eth0: ethernet@46000000port@1 Hit any key to stop autoboot: 0 => mmc list mmc@4f80000: 0 (eMMC) mmc@4fb0000: 1 => printenv mmcdev mmcdev=1 => setenv mmcdev 0 => mmc dev 0 switch to partitions #0, OK mmc0(part 0) is current device => 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 => printenv partitions partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=0,size=-,uuid=${uuid_gpt_rootfs} => printenv uuid_gpt_disk ## Error: "uuid_gpt_disk" not defined => setenv uuid_gpt_disk 211482b6-7c4e-4c15-9403-34cac2d5d81f => setenv uuid_gpt_rootfs e2b6b38b-59eb-4c15-8dd7-3b2c97a80192 => gpt write mmc 0 ${partitions} Writing GPT: success! => mmc dev 0 1 switch to partitions #1, OK mmc0(part 1) is current device => setenv loadaddr 0x92000000 => fatload mmc 1 ${loadaddr} tiboot3.bin 480294 bytes read in 30 ms (15.3 MiB/s) => mmc write ${loadaddr} 0x0 0x400 MMC write: dev # 0, block # 0, count 1024 ... 1024 blocks written: OK => fatload mmc 1 ${loadaddr} tispl.bin 992992 bytes read in 55 ms (17.2 MiB/s) => mmc write ${loadaddr} 0x400 0x1000 MMC write: dev # 0, block # 1024, count 4096 ... 4096 blocks written: OK => fatload mmc 1 ${loadaddr} u-boot.img 1191548 bytes read in 63 ms (18 MiB/s) => mmc write ${loadaddr} 0x1400 0x2000 MMC write: dev # 0, block # 5120, count 8192 ... 8192 blocks written: OK => mmc partconf 0 1 1 1 => mmc bootbus 0 2 0 0 => saveenv Saving Environment to MMC... Writing to MMC(0)... OK => mmc dev switch to partitions #0, OK mmc0(part 0) is current device => 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 ** => mmc dev 1 switch to partitions #0, OK mmc1 is current device => mmc part Partition Map for MMC device 1 -- Partition Type: DOS Part Start Sector Num Sectors UUID Type 1 2048 126976 2763d721-01 0c Boot 2 129024 62204928 2763d721-02 83
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
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
=> printenv partitions partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=0,size=-,uuid=${uuid_gpt_rootfs}
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.