Octavo am335x: 2018.09 U-Boot SPL loads, 2019.04 does not

I’m having issues loading U-Boot SPL on a custom board based on https://octavosystems.com/octavo_products/osd335x-sm/:

  • U-Boot SPL from 2019.04 produces no splash message and appears to not load at all
  • U-Boot SPL from 2018.09 loads as expected, displays splash message and boots image from sd card
  • After booting once from U-Boot 2018.09 and powering off, the sd card with U-Boot 2019.04 loads as expected, displays splash message and boots from sd card

Why would the older U-Boot load and the newer U-Boot fail? My thoughts right now is that the EEPROM is either empty or contains a board id that U-Boot doesn’t recognize, and either way U-Boot has had changes between these two versions that don’t provide a fallback.

diff’s between board/ti/common/board_detect.c show changes to the i2c eeprom read that could be causing this behavior, specifically the removal of method ti_i2c_set_alen. Unfortunately I don’t see a reason in the new code why my board would not be loaded. What do you suggest to debug this? Is there a way to specify a default board id to load from EEPROM if a problem is encountered reading the EEPROM?

Thank you,
Ryan

Can you share the u-boot log from these situations that works? (From power on to … booting kernel… message…) In my u-boot patch there are a few debug routines for eeprom/etc that ‘might’ help give us some clues…

Regards,

Robert,

Thanks for the quick reply. Here are the u-boot logs, I notice 2019.04 shows an error probing EEPROM versus 2018.09:

U-Boot SPL 2018.09-00003-gaa563917cb (Sep 10 2018 - 19:42:46 -0500)
Trying to boot from MMC1
Loading Environment from EXT4... ** File not found /boot/uboot.env **

** Unable to read "/boot/uboot.env" from mmc0:1 **


U-Boot 2018.09-00003-gaa563917cb (Sep 10 2018 - 19:42:46 -0500), Build: jenkins-github_Bootloader-Builder-65

CPU  : AM335X-GP rev 2.1
I2C:   ready
DRAM:  1 GiB
No match for driver 'omap_hsmmc'
No match for driver 'omap_hsmmc'
Some drivers were not found
Reset Source: Power-on reset has occurred.
RTC 32KCLK Source: External.
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from EXT4... ** File not found /boot/uboot.env **

** Unable to read "/boot/uboot.env" from mmc0:1 **
Board: BeagleBone Black
<ethaddr> not set. Validating first E-fuse MAC
BeagleBone Black:
BeagleBone: cape eeprom: i2c_probe: 0x54:
BeagleBone: cape eeprom: i2c_probe: 0x55:
BeagleBone: cape eeprom: i2c_probe: 0x56:
BeagleBone: cape eeprom: i2c_probe: 0x57:
Net:   eth0: MII MODE
cpsw, usb_ether
Press SPACE to abort autoboot in 2 seconds
board_name=[A335BNLT] ...
board_rev=[] ...
switch to partitions #0, OK
mmc0 is current device
SD/MMC found on device 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
gpio: pin 56 (gpio 56) value is 0
gpio: pin 55 (gpio 55) value is 0
gpio: pin 54 (gpio 54) value is 0
gpio: pin 53 (gpio 53) value is 1
switch to partitions #0, OK
mmc0 is current device
gpio: pin 54 (gpio 54) value is 1
Checking for: /uEnv.txt ...
Checking for: /boot.scr ...
Checking for: /boot/boot.scr ...
Checking for: /boot/uEnv.txt ...
gpio: pin 55 (gpio 55) value is 1
2056 bytes read in 20 ms (99.6 KiB/s)
Loaded environment from /boot/uEnv.txt
debug: [dtb=xxxxx.dtb] ...
Using: dtb=xxxxx.dtb ...
Checking if uname_r is set in /boot/uEnv.txt...
gpio: pin 56 (gpio 56) value is 1
Running uname_boot ...
loading /boot/vmlinuz-4.14.164-bone31 ...
8593920 bytes read in 561 ms (14.6 MiB/s)
debug: [enable_uboot_overlays=1] ...
uboot_overlays: dtb=xxxxx.dtb is set in /boot/uEnv.txt, unable to use [am335x-boneblack-uboot-univ.dtb or am335x-boneblack-uboot.dtb] ...
uboot_overlays: disabling [enable_uboot_overlays=1] as dtb=xxxxx.dtb is set in /boot/uEnv.txt ...
loading /boot/dtbs/4.14.164-bone31/xxxxx.dtb ...
65246 bytes read in 84 ms (757.8 KiB/s)
uboot_overlays: add [enable_uboot_overlays=1] to /boot/uEnv.txt to enable...
loading /boot/initrd.img-4.14.164-bone31 ...
4597708 bytes read in 311 ms (14.1 MiB/s)
debug: [console=ttyO0,115200n8 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 quiet] ...
debug: [bootz 0x82000000 0x88080000:4627cc 0x88000000] ...
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Ramdisk to 8fb9d000, end 8ffff7cc ... OK
   Loading Device Tree to 8fb8a000, end 8fb9cedd ... OK

Starting kernel ...

U-Boot 2019.04 after booting 2018.09 once:

U-Boot SPL 2019.04-00002-gc9b3922522 (Aug 24 2020 - 16:42:18 -0500)^M
Trying to boot from MMC1^M
Loading Environment from EXT4... ** File not found /boot/uboot.env **^M

** Unable to read "/boot/uboot.env" from mmc0:1 **^M


U-Boot 2019.04-00002-gc9b3922522 (Aug 24 2020 - 16:42:18 -0500), Build: jenkins-github_Bootloader-Builder-144^M

CPU  : AM335X-GP rev 2.1^M
I2C:   ready^M
DRAM:  1 GiB^M
No match for driver 'omap_hsmmc'^M
No match for driver 'omap_hsmmc'^M
Some drivers were not found^M
Reset Source: Power-on reset has occurred.^M
RTC 32KCLK Source: External.^M
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1^M
Loading Environment from EXT4... ** File not found /boot/uboot.env **^M

** Unable to read "/boot/uboot.env" from mmc0:1 **^M
Board: BeagleBone Black^M
<ethaddr> not set. Validating first E-fuse MAC^M
BeagleBone Black:^M
BeagleBone Cape EEPROM: no EEPROM at address: 0x54^M
BeagleBone Cape EEPROM: no EEPROM at address: 0x55^M
BeagleBone Cape EEPROM: no EEPROM at address: 0x56^M
BeagleBone Cape EEPROM: no EEPROM at address: 0x57^M
Net:   eth0: MII MODE^M
cpsw, usb_ether^M
Press SPACE to abort autoboot in 0 seconds^M
board_name=[A335BNLT] ...^M
board_rev=[] ...^M
switch to partitions #0, OK^M
mmc0 is current device^M
SD/MMC found on device 0^M
switch to partitions #0, OK^M
mmc0 is current device^M
Scanning mmc 0:1...^M
Scanning mmc 0:2...^M
gpio: pin 56 (gpio 56) value is 0^M
gpio: pin 55 (gpio 55) value is 0^M
gpio: pin 54 (gpio 54) value is 0^M
gpio: pin 53 (gpio 53) value is 1^M
switch to partitions #0, OK^M
mmc0 is current device^M
gpio: pin 54 (gpio 54) value is 1^M
Checking for: /uEnv.txt ...^M
Checking for: /boot.scr ...^M
Checking for: /boot/boot.scr ...^M
Checking for: /boot/uEnv.txt ...^M
gpio: pin 55 (gpio 55) value is 1^M
1053 bytes read in 60 ms (16.6 KiB/s)^M
Loaded environment from /boot/uEnv.txt^M
debug: [dtb=xxxxx.dtb] ...^M
Using: dtb=xxxxx.dtb ...^M
Checking if uname_r is set in /boot/uEnv.txt...^M
gpio: pin 56 (gpio 56) value is 1^M
Running uname_boot ...^M
loading /boot/vmlinuz-4.19.94-ti-r43 ...^M
10097528 bytes read in 682 ms (14.1 MiB/s)^M
debug: [enable_uboot_overlays=1] ...^M
debug: [enable_uboot_cape_universal=1] ...^M
debug: [uboot_base_dtb_univ=am335x-boneblack-uboot-univ.dtb] ...^M
uboot_overlays: [uboot_base_dtb=am335x-boneblack-uboot-univ.dtb] ...^M
uboot_overlays: Switching too: dtb=am335x-boneblack-uboot-univ.dtb ...^M
loading /boot/dtbs/4.19.94-ti-r43/am335x-boneblack-uboot-univ.dtb ...^M
60334 bytes read in 89 ms (661.1 KiB/s)^M
uboot_overlays: [fdt_buffer=0x60000] ...^M
uboot_overlays: loading /lib/firmware/BB-ADC-00A0.dtbo ...^M
867 bytes read in 866 ms (1000 Bytes/s)^M
uboot_overlays: loading /lib/firmware/BB-BONE-eMMC1-01-00A0.dtbo ...^M
1584 bytes read in 778 ms (2 KiB/s)^M
uboot_overlays: loading /lib/firmware/BB-HDMI-TDA998x-00A0.dtbo ...^M
4915 bytes read in 94 ms (50.8 KiB/s)^M
loading /boot/initrd.img-4.19.94-ti-r43 ...^M
3342665 bytes read in 251 ms (12.7 MiB/s)^M
debug: [console=ttyO0,115200n8 bone_capemgr.uboot_capemgr_enabled=1 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh] ...^M
debug: [bootz 0x82000000 0x88080000:330149 88000000] ...^M
## Flattened Device Tree blob at 88000000^M
   Booting using the fdt blob at 0x88000000^M
   Loading Ramdisk to 8fccf000, end 8ffff149 ... OK^M
   Loading Device Tree to 8fc5c000, end 8fccefff ... OK^M

Starting kernel ...

Ryan

So when looking at your log, we see this:

Which is good, as that’s the eeprom values. If it was blank, my final v2018.09 would report board_rev as EMMC…

I’m thinking it’s either DDR initialization or something weird with the TPS, 1GiB of Ram is not normal in OSD3358 clones… (SanCloud uses TI’s Am335x) are there any OSD3358 shipping devices with 1GB?

Otherwise, looking at your log, eeprom looks good, everything is normal, i’d expect it to boot…

Regards,

So here are the 3 patches from that “day”…

0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
0002-U-Boot-BeagleBone-Cape-Manager.patch
0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch

Regards,

Here are the 2 patches from that day:

Regards,

I’m using these devices from Octavo that have both 512mb and 1gb SKUs: OSD335x-SM Module ARM A8 - TI AM335x System in Package - Octavo Systems

Thank you for identifying the changes since the 2018.09 build; what do you think could explain allowing the 2019.04 u-boot to load successfully after the 2018 build has been booted once?

Ryan