U-Boot not being loaded/ reset led blinking

Hello everybody,

I tried to change the eMMC boot part from mmcblk0boot0 to mmcblk0boot1 but can’t get my board to boot now anymore, instead of showing output for the serial console the tx and reset out led blink red in ~5s intervals.

The procedure I did was the following:

  1. disable write protection of mmcblk0b00t1: echo 0 > /sys/block/mmcblk0boot1
  2. flash the bootloader: dd if=imx-boot of=/dev/mmcblk0boot1 seek=0
  3. enable write protection again
  4. set the boot partition of the eMMC module to boot1: mmc bootpart enable 2 0 /dev/mmcblk0
  5. reboot

The bootloader I used is the same I used many times before so it should not be the issue.
I can get back into the operating system by going into recovery mode and loading u-boot (the same one I flashed to mmcblk0b00t1 ) with UUU (not flashing it) that way.

Are there some kind of default settings for the eMMC module registers (BOOT_BUS_CONDITIONS, PARTITION_CONFIG)? Switching back with mmc bootpart enable 1 0 /dev/mmcblk0 to boot0 did not result in a bootable system.

best regards,
Sven

Greetings @svenk!

Can you please explain a little bit more about your need to change the eMMC boot partition? Can you also share the partition table you’re currently using?

Thanks!

Sorry for the late response,

There isnt really a need per se, It was more to test out two different u-boot version on the same board.

I dont think there is a issue with the partition table, as the problem persists after using tezi to reset the board and install a torizon image.

colibri-imx8x-v10b-06614295:/var/rootdirs/home/torizon# lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0      179:0    0  3.6G  0 disk
`-mmcblk0p1  179:1    0  3.6G  0 part /sysroot
mmcblk0boot0 179:32   0   16M  1 disk
mmcblk0boot1 179:64   0   16M  1 disk

If you did not mess with any other fuses/settings then just resetting mmc bootpart should cut it. Anyway, as follows them eMMC settings we are using by default (however, this are them U-Boot commands):

# 8-bit, reset bus width, DDR
mmc bootbus 0 2 0 2
# booting from boot area partition 1, send acknowledge
mmc partconf 0 1 1 0
# eMMC hardware reset
mmc rst-function 0 1

Plus to double-check them SoC fuses:

enable eMMC0 boot

fuse sense 0 18
0x00000002

fast boot, send acknowledge, high speed, 8-bit DDR

fuse sense 0 19
0x00000027

And last but not least them RAM ID fuses:

fuse read 0 765

Please provide textual output of above commands for us to analyse what may have gone wrong. Thanks!

Colibri iMX8QXP 2GB V1.0B

Please note that this is an early access sample with an early SoC silicon revision. Later silicon will require different SECO firmware so boot containers are incompatible.

Thank you Marcel, resetting the eMMC has fixed my issue, can you explain a little bit about the mmc rst-function command? I havent used that one previously, and that might have been the missing link? As far as I understand it, this should have been set at factory already?

That one is actually one-time programmable only anyway and we already do/did set that during our factory production programming. Full explanation you may find in the eMMC spec. Basically, the reset pin of an eMMC part is not functional by default unless this configuration is done. Thanks for your feedback!