BeagleBone AI64 with Yocto

Hi! Does anyone knows if the bbai64 is supposed to work with meta-ti? I have built poky’s core-image-minimal for the BeagleBone AI64 using meta-ti’s kirkstone layer, current HEAD. When I boot I get stuff like:

Hit any key to stop autoboot:  2     1     0
i2c_write: error waiting for data ACK (status=0x116)
pca953x gpio@22: Error reading output register
switch to partitions #0, OK
mmc1 is current device
i2c_write: error waiting for data ACK (status=0x116)
pca953x gpio@22: Error reading output register
SD/MMC found on device 1
Failed to load 'boot.scr'
Failed to load 'uEnv.txt'
i2c_write: error waiting for data ACK (status=0x116)
pca953x gpio@20: Error reading output register
i2c_write: error waiting for data ACK (status=0x116)
pca953x gpio@22: Error reading output register

and then I get stuck at

Waiting for root device PARTUUID=18b27b92-02

I rebooted, entered u-boot’s prompt and run fuinduuid manually, which also causes an I²C-related error:

=> run finduuid
i2c_write: error waiting for data ACK (status=0x116)
pca953x gpio@22: Error reading output register

Am I doing something wrong here, or should I be filing a bug somewhere? Of course feel free to ask me for more details.

look above that, does it detect the BeagleBone AI64 or does it show the Jxxx evk…

Regards,

Here is the complete log up to the first line of the one I pasted before:

U-Boot SPL 2023.04-ge0d1dc8de0 (Aug 09 2023 - 10:21:11 +0000)
SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.6--v09.00.06 (Kool Koala)')
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -1
Trying to boot from MMC2
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Loading Environment from nowhere... OK
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.9(release):v2.9.0-dirty
NOTICE:  BL31: Built : 14:12:59, May 22 2023
I/TC:
I/TC: OP-TEE version: 3.20.0 (gcc version 11.3.0 (GCC)) #1 Fri Jan 20 15:42:54 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 0x0009 '9.0.6--v09.00.06 (Kool Koala)')
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 2023.04-ge0d1dc8de0 (Aug 09 2023 - 10:21:11 +0000)
SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.6--v09.00.06 (Kool Koala)')
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -1
Trying to boot from MMC2
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted


U-Boot 2023.04-ge0d1dc8de0 (Aug 09 2023 - 10:21:11 +0000)

SoC:   J721E SR1.1 GP
Model: Texas Instruments K3 J721E SoC
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -1
Board: J721EX-PM1-SOM rev E2
DRAM:  4 GiB
Core:  123 devices, 34 uclasses, devicetree: separate
Flash: 0 Bytes
MMC:   mmc@4f80000: 0, mmc@4fb0000: 1
Loading Environment from nowhere... OK
In:    serial@2800000
Out:   serial@2800000
Err:   serial@2800000
am65_cpsw_nuss ethernet@46000000: K3 CPSW: nuss_ver: 0x6BA00101 cpsw_ver: 0x6BA80100 ale_ver: 0x00293904 Ports:1 mdio_freq:1000000
EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -1
Net:   eth0: ethernet@46000000port@1
Hit any key to stop autoboot:  2 ^H^H^H 1 ^H^H^H 0

My guess is that, as it is not able to read the EEPROM, it is using whatever default it has…

yeap… not yet… base level support was just added: Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - ti-u-boot/ti-u-boot.git/shortlog

if you jump on discord, NM is online, i think our issue is the two different eerproms’ used on the BBAI64 during production hasn’t been merged yet…

Regards,

I’ll try to do that right now, if I’m late well, Ill also be there on Monday.

I’m also interested in a solution to this. I need to toggle some gpios in the factory tests.

=> gpio status
i2c_write: error waiting for data ACK (status=0x116)
pca953x gpio@20: Error reading output register
Command 'gpio' failed: Error -121
1 Like

The pca953x is only on the TI SK board, the BBAI64 doesn’t have that device…

Regards,

Ahh, thank you. We are trying to figure out how to get u-boot from the meta-ti layer to boot a beagleboneai64 dtb. It doesn’t detect the correct board_name, which should be BBONEAI-64-B0-, but it is still J721EX-PM1-SOM.

Would I get rid of the pca953x if the correct dtb was loaded? How can we detect the BB instead of the J721E?

Update: Booting with the latest ti-u-boot, e0d1dc8de02c8d4de7f49501fed75e31ed09ee74, gives us an updated find_fdt that includes BBONEAI-64-B0- which in turn looks for the correct dtb. The problem is that it expects the dtb to be located in /boot/dtb/ and not /boot/dtb/ti/ where it has ended up in the rootfs build.

I moved it to the correct position and now Linux boots fine, and I can edit uEnv.txt to include “board_name=BBONEAI-64-B0-” so that it boots automatically.

I still would like to be able to change all the “defaults” in u-boot to have BBONEAI-64-B0- built in at build time. I guess it is the eeprom detection that fails:

EEPROM not available at 0x50, trying to read at 0x51
Reading on-board EEPROM at 0x51 failed -1

and hence, the board_name is not updated correctly.

I guess it is the eeprom detection that fails

Correct. In the meantime you can force the board with

diff --git a/board/ti/j721e/evm.c b/board/ti/j721e/evm.c
index e82349ef24..7964f36e22 100644
--- a/board/ti/j721e/evm.c
+++ b/board/ti/j721e/evm.c
@@ -453,7 +453,7 @@ void configure_serdes_sierra(void)
 #ifdef CONFIG_BOARD_LATE_INIT
 static void setup_board_eeprom_env(void)
 {
-       char *name = "j721e";
+       char *name = "BBONEAI-64-B0-";
 
        if (do_board_detect())
                goto invalid_eeprom;

Which comes from @RobertCNelson 's top of: ti-u-boot-2023.04

You can also take a look at Commits · v2023.04-ti-09.00.00.007 · BeagleBoard.org / u-boot · GitLab for the ti directory changes.