Updating (pre-production) BeagleBoard-X15 RevA2 to Latest Image

Hi there!

I have an early revision of the BeagleBoard-X15 (if I need to look it up to help answer the question let me know) with an old image:

Ubuntu 14.04.3 LTS

rcn-ee.net console Ubuntu Image 2015-12-11

Where should I go to get the latest and greatest Ubuntu (or Debian), kernel, and boot loader?

Thanks,
Joe

Hi @squadron, you can grab monthy snapshots from here: https://forum.beagleboard.org/tag/latest-images

Regards,

1 Like

Thanks @RobertCNelson , I’ll give it a shot on this A2 board!

@RobertCNelson , should I expect these images to output to the serial console on the X15? I have the J3,4,6 jumpers in 2-3, and when rebooting with the SD card inserted I get no output at all. But, booting back to the eMMC I can mount that SD and see /boot/uEnv.txt etc. Confused as to why I can’t see anything on the serial port.

I tried these three images:

am57xx-debian-11.6-iot-armhf-2023-01-02-4gb.img
am57xx-debian-11.6-minimal-armhf-2023-01-02-2gb.img
am57xx-debian-11.6-xfce-armhf-2023-01-02-4gb

none of which would cooperate with providing any output on the serial port.

For grins I flashed a clearly older image (am57xx-debian-9.9-lxqt-armhf-2019-08-03-4gb), and while I get serial output it hangs at:

U-Boot SPL 2019.07-rc4-00001-g607b5b738b (Jul 06 2019 - 21:01:15 -0500)
DRA752-GP ES1.1
Trying to boot from MMC1
no pinctrl state for default mode
no pinctrl state for default mode
spl_start_uboot
CTRL_CORE_PAD_I2C1_SDA:    0x00060000
CTRL_CORE_PAD_I2C1_SCL:    0x00060000
CTRL_CORE_PAD_GPMC_A0:     0x00060007
CTRL_CORE_PAD_GPMC_A1:     0x00060007
CTRL_CORE_PAD_VIN2A_D4:    0x0005000f
CTRL_CORE_PAD_VIN2A_D5:    0x0005000f
CM_L4PER_GPIO7_CLKCTRL:    0x00000001
CM_L4PER_I2C1_CLKCTRL:     0x00000002
CM_L4PER_I2C4_CLKCTRL:     0x00000002
CM_L4PER_L4_PER1_CLKCTRL   0x00000001
PM_L4PER_I2C1_WKDEP        0x0000b000
RM_L4PER_I2C1_CONTEXT      0x00000002
PM_L4PER_I2C4_WKDEP        0x0000b000
RM_L4PER_I2C4_CONTEXT      0x00000001
BeagleBone: cape eeprom: i2c_probe: 0x54
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret -19
BeagleBone: cape eeprom: i2c_probe: 0x55
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret -19
BeagleBone: cape eeprom: i2c_probe: 0x56
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret -19
BeagleBone: cape eeprom: i2c_probe: 0x57
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret -19

That’s not an official BeagleBoard-X15, no BeagleBoard product shipped with end user adjustable jumpers.

What does the silkscreen really say?

On a production board (rev c) am57xx-debian-11.6-minimal-armhf-2023-01-02-2gb.img.xz

U-Boot SPL 2022.04-ge0d31da5 (Aug 23 2022 - 19:11:21 +0000)
DRA752-GP ES2.0
Trying to boot from MMC1
no pinctrl state for default mode
Loading Environment from nowhere... OK


U-Boot 2022.04-ge0d31da5 (Aug 23 2022 - 19:11:21 +0000)

CPU  : DRA752-GP ES2.0
Model: TI AM5728 BeagleBoard-X15 rev C
Board: BeagleBoard X15 REV C.00
DRAM:  2 GiB
Core:  57 devices, 18 uclasses, devicetree: separate
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from nowhere... OK
Net:   eth2: ethernet@48484000
Press SPACE to abort autoboot in 1 seconds
switch to partitions #0, OK
mmc0 is current device

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

Part	Start Sector	Num Sectors	UUID		Type
  1	8192      	3678208   	141c4da3-01	83 Boot
Scanning mmc device 0
Checking for: /uEnv.txt ...
Checking for: /boot/uEnv.txt ...
1368 bytes read in 21 ms (63.5 KiB/s)
Loaded environment from /boot/uEnv.txt
Checking if uname_r is set in /boot/uEnv.txt ...
debug: [uname_r=5.10.145-ti-r55] ...
loading /boot/vmlinuz-5.10.145-ti-r55 ...
10514944 bytes read in 474 ms (21.2 MiB/s)
loading /boot/dtbs/5.10.145-ti-r55/am57xx-beagle-x15-revc.dtb ...
204246 bytes read in 31 ms (6.3 MiB/s)
uboot_overlays: [fdt_buffer=0x60000] ...
loading /boot/initrd.img-5.10.145-ti-r55 ...
6498981 bytes read in 301 ms (20.6 MiB/s)
debug: [console=ttyS2,115200n8 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 rng_core.default_quality=100 quiet] ...
debug: [bootz 0x82000000 0x88080000:632aa5 0x88000000] ...
Kernel image @ 0x82000000 [ 0x000000 - 0xa07200 ]
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Ramdisk to 8f9cd000, end 8ffffaa5 ... OK
   Loading Device Tree to 8f998000, end 8f9ccdd5 ... OK

Starting kernel ...

Official BeagleBoard X15’s did not have these populated…

TI’s evm am57x_evm utilized them (clone of the x15 design), one would have to scrub both schematic’s to see what other changes TI made to there “evm”…

Regards,

Hi @RobertCNelson , the board I have was given to me by one of the original board designers. Here is the version and jumpers on it:

Here’s the old patch, against v2019.07-rc4 Bootloader-Builder/0001-am57xx_evm-fixes.patch at master · RobertCNelson/Bootloader-Builder · GitHub

I’m betting the eeprom was never set, looking at this: Bootloader-Builder/0001-am57xx_evm-fixes.patch at master · RobertCNelson/Bootloader-Builder · GitHub I never documented the A2 eeprom, since it failed FCC it was to never be sold to customers.

Rev B1 = A2 (ES1.1) + (ES2.0) Silicon…
Rev C = Production, redesigned to pass FCC…

With your old u-boot, you could try:

run eeprom_dump

To see if it’s blank or not…

Regards,

Thanks as always @RobertCNelson , unfortunately I didn’t have the foresight to copy the old u-boot off before inadvertently writing over it.

I was able to compile u-boot with your patch, and make some progress:

U-Boot SPL 2019.07-rc4-dirty (Jan 24 2023 - 15:10:41 -0600)
DRA752-GP ES1.1
Trying to boot from MMC1
no pinctrl state for default mode
no pinctrl state for default mode

Unfortunately that’s as far as it gets before stopping. Is it possible to break into these u-boots and get a prompt?

Well, I’ve always said I wanted to learn more about how to bring up a “new board” and suppose this is one way to learn.

Maybe try: Index of /rootfs/bb.org/testing/2019-12-02/stretch-iot i’ve got older then that…

Regards,

1 Like

Thanks @RobertCNelson . We get through spl_start_uboot but back to stopping at

U-Boot SPL 2019.07-rc4-00001-g607b5b738b (Jul 06 2019 - 21:01:15 -0500)
DRA752-GP ES1.1
Trying to boot from MMC1
no pinctrl state for default mode
no pinctrl state for default mode
spl_start_uboot
CTRL_CORE_PAD_I2C1_SDA:    0x00060000
CTRL_CORE_PAD_I2C1_SCL:    0x00060000
CTRL_CORE_PAD_GPMC_A0:     0x00060007
CTRL_CORE_PAD_GPMC_A1:     0x00060007
CTRL_CORE_PAD_VIN2A_D4:    0x0005000f
CTRL_CORE_PAD_VIN2A_D5:    0x0005000f
CM_L4PER_GPIO7_CLKCTRL:    0x00000001
CM_L4PER_I2C1_CLKCTRL:     0x00000002
CM_L4PER_I2C4_CLKCTRL:     0x00000002
CM_L4PER_L4_PER1_CLKCTRL   0x00000001
PM_L4PER_I2C1_WKDEP        0x0000b000
RM_L4PER_I2C1_CONTEXT      0x00000002
PM_L4PER_I2C4_WKDEP        0x0000b000
RM_L4PER_I2C4_CONTEXT      0x00000001
BeagleBone: cape eeprom: i2c_probe: 0x54
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret -19
BeagleBone: cape eeprom: i2c_probe: 0x55
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret -19
BeagleBone: cape eeprom: i2c_probe: 0x56
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret -19
BeagleBone: cape eeprom: i2c_probe: 0x57
Checking (ret 1 bus works) I2C1 bus. ret 1
Checking (ret 1 bus works) I2C4 bus. ret -19

So I went back to Index of /rootfs/bb.org/testing/2018-10-05/stretch-iot and grabbed the bbx15 image. At least I made it to “Starting kernel” but it stopped there. Will keep going back in time to see if I can get to a login.

U-Boot SPL 2017.01-00360-gc604741cb3 (Aug 11 2017 - 15:47:09)
DRA752-GP ES1.1
Trying to boot from MMC1

** Unable to use mmc 0:1 for loading the env **
Using default environment



U-Boot 2017.01-00360-gc604741cb3 (Aug 11 2017 - 15:47:09 -0500), Build: jenkins-github_Bootloader-Builder-592

CPU  : DRA752-GP ES1.1
Model: TI AM5728 BeagleBoard-X15
Board: UNKNOWN(BeagleBoard X15?) REV UNKNOWN
DRAM:  2 GiB
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1

** Unable to use mmc 0:1 for loading the env **
Using default environment

I2C chip 50: requested alen 2 does not match chip offset_len 1
ti_i2c_eeprom_init failed -99
setup_board_eeprom_env: NULL
SCSI:  SATA link 0 timeout.
AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst 
scanning bus for devices...
Found 0 device(s).
Net:   <ethaddr> not set. Validating first E-fuse MAC
cpsw
Press SPACE to abort autoboot in 2 seconds
WARNING: Could not determine device tree to use
usb_boot is currently disabled
scsi_boot is currently disabled
switch to partitions #0, OK
mmc0 is current device
Scanning mmc device 0
Checking for: /uEnv.txt ...
Checking for: /boot/uEnv.txt ...
568 bytes read in 23 ms (23.4 KiB/s)
Loaded environment from /boot/uEnv.txt
Checking if uname_r is set in /boot/uEnv.txt ...
debug: [uname_r=4.14.71-ti-r80] ...
loading /boot/vmlinuz-4.14.71-ti-r80 ...
10416640 bytes read in 476 ms (20.9 MiB/s)

unable to find undefined ...
booting legacy ...
debug: [console=ttyO2,115200n8 root=PARTUUID=33ecaad0-01 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 quiet] ...
debug: [bootz 0x82000000] ...

Starting kernel ...

Yeap, probally blank eeprom…

hit space to enter u-boot prompt:

run eeprom_dump

Sure thing @RobertCNelson . I did go back further to bbx15-debian-8.6-console-armhf-2016-10-02-2gb, and it did boot all the way. However, here’s from stopping u-boot and running eeprom_dump.

=> run eeprom_dump
## Error: "eeprom_dump" not defined
Debian GNU/Linux 8 BeagleBoard-X15 ttyS2

BeagleBoard.org Debian Image 2016-10-02

Support/FAQ: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian

default username:password is [debian:temppwd]

BeagleBoard-X15 login: 

If I should roll forward to see where eeprom_dump comes in I can.

Since I can login, is this helpful?

root@BeagleBoard-X15:/sys/devices/platform/44000000.ocp/48070000.i2c/i2c-0/0-0050# hexdump eeprom
0000000 ffff ffff ffff ffff ffff ffff ffff ffff
*
0008000

Hacked a bit to get the goods:

root@BeagleBoard-X15:/opt/scripts/device/x15# ./show-eeprom.sh
/sys/bus/i2c/devices/0-0050/eeprom
eeprom: [ffffffffffffffff*]
eeprom raw: [00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|]
eeprom raw: [00000010  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|]
eeprom raw: [00000020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|]

I gleaned the location from the flasher script, which won’t run at the moment:

Checking for Valid x15/X15_B1-eeprom header
Invalid EEPROM header detected
Writing header to EEPROM
dd: error writing '/sys/devices/platform/44000000.ocp/48070000.i2c/i2c-0/0-0050/eeprom': Connection timed out

Can I take the

root@BeagleBoard-X15:/opt/scripts/device/x15# hexdump X15_B1-eeprom.dump

and write it directly (I’m just looking at the flasher script itself)?

JB

You’ll need to enable the write-protect. beagleboard-x15/BEAGLEBOARD_X15_REV_B1.pdf at master · beagleboard/beagleboard-x15 · GitHub

TP4, just ground it…

Looking at: u-boot/board.c at master · u-boot/u-boot · GitHub

#define board_is_x15()		board_ti_is("BBRDX15_")
#define board_is_x15_revb1()	(board_ti_is("BBRDX15_") && \
				 !strncmp("B.10", board_ti_get_rev(), 3))
#define board_is_x15_revc()	(board_ti_is("BBRDX15_") && \
				 !strncmp("C.00", board_ti_get_rev(), 3))

So just make sure, BBRDX15_ is in eeprrom and “change the B.10 → A.20” so it doesn’t use the B.10 path in u-boot…

Both revb1/c are ES2.0 vs your ES1.1, so after you flash the B.10 eeprom, just edit it to A.20…

Regards,

Thanks again, @RobertCNelson .

I grounded TP4 and started the eeprom-blank.sh script - things are looking good.

root@BeagleBoard-X15:/opt/scripts/device/x15# ./show-eeprom.sh
/sys/bus/i2c/devices/0-0050/eeprom
eeprom: [00000000*]
eeprom raw: [00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|]
eeprom raw: [00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|]

I’ll review the above code, and I see what you are saying:

root@BeagleBoard-X15:/opt/scripts/device/x15# hexdump -C X15_B1-eeprom.dump
00000000  aa 55 33 ee 42 42 52 44  58 31 35 5f 42 2e 31 30  |.U3.BBRDX15_B.10|
00000010  57 57 59 59 34 50 35 35  30 30 30 30              |WWYY4P550000|
0000001c

I should be able to hexedit this up and I’m assuming the WWYY business can remain.

Oh, and once the EEPROM is flashed accordingly should I expect to be able to go back to the “latest image”? My guess is yes!

After updating the EEPROM:

U-Boot 2016.05-00419-g80bbf03 (Sep 09 2016 - 14:22:33 -0500), Build: jenkins-github_Bootloader-Builder-446

CPU  : DRA752-GP ES1.1
Board: UNKNOWN(BeagleBoard X15?) REV UNKNOWN
U-Boot 2016.05-00419-g80bbf03 (Sep 09 2016 - 14:22:33 -0500), Build: jenkins-github_Bootloader-Builder-446

CPU  : DRA752-GP ES1.1
Board: BeagleBoard X15 REV A.20

And now to test the Debian 11 image - more to come.

And, success!

U-Boot SPL 2022.04-ge0d31da5 (Aug 23 2022 - 19:11:21 +0000)
DRA752-GP ES1.1
Trying to boot from MMC1
no pinctrl state for default mode
Loading Environment from nowhere... OK


U-Boot 2022.04-ge0d31da5 (Aug 23 2022 - 19:11:21 +0000)

CPU  : DRA752-GP ES1.1
Model: TI AM5728 BeagleBoard-X15
Board: BeagleBoard X15 REV A.20

...

Debian GNU/Linux 11 BeagleBone ttyS2

BeagleBoard.org Debian Bullseye Xfce Image 2023-01-02
Support: https://bbb.io/debian

Final Fantasy fanfare music.

Thanks again, @RobertCNelson .