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.

SK-AM62: If eMMC boot0 fails to boot, uboot will automatically boot from boot1

Part Number: SK-AM62

Hi,

Is there a configuration inside u-boot that allows u-boot to boot from boot1 automatically if it detects that boot0 is corrupted and unable to boot?

For now, I have configured u-boot to boot from boot0 by using command mmc partconf 0 1 1 1. If boot0 is unbootable, how do I make u-boot boot from boot1 without me going into u-boot and type mmc partconf 0 1 2 1 to change to boot from boot1 manually?

Thanks.

  • Hello,
    From u-boot binary (tiboot3.bin/tispl.bin/u-boot.img) in the boot flow, which file(s) is discussed here?
    Best,
    -Hong

  • Correct me if I am wrong, but from my understanding, if one of the three files is corrupted, u-boot will not boot, right? So, all 3 files are discussed.

    Initially, I have flashed the 3 files into both boot partitions boot0 and boot1 and successfully boot from them. I have simulated the corruption by erasing one of the boot partitions. So the task now that I am trying to achieve is to automatically boot from another boot partition when it detects that one of the boot partitions is unbootable.

  • Hello,
    Please refer to this e2e post first.
    e2e.ti.com/.../4487355
    On your user case, bootrom supports booting R5 BL from any one of eMMC partitions:
    A/. boot partition#1: raw
    B/. boot partition#2: raw
    C/. UDA: raw/fs
    bootrom reads/boots R5 BL from one of eMMC A/B/C partitions based on
    (1). BOOTMODE pins => eMMC
    (2). eMMC EXTCSD non-volatile register pre-setup => which one of eMMC partitions A/B/C, bus width etc...
    For example, the following cmd @u-boot pre-configures eMMC EXTCSD non-volatile registers as noted.

    Fullscreen
    1
    2
    3
    4
    => mmc partconf 0 1 1 1
    Boot configuration bytes [PARTITION_CONFIG: 0x48] @EXTCSD[179] => boot from BOOT#1, and ack
    => mmc bootbus 0 2 0 0
    Boot bus Conditions [BOOT_BUS_CONDITIONS: 0x02] @EXTCSD[177] => x8 (sdr/ddr) bus width in boot operation mode
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    There's bootrom recovery support on booting from eMMC UDA raw mode, where it is possible to have two copies of R5 BL (one @0x0, and redundant one @0x400000).

    Best,
    -Hong

  • Hi Hong,

    Thanks for the reply. However, I still have some doubts.

    From this e2e post https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1190507/sk-am62-bootmode-switch-to-backup-mode-automatically/4487355#4487355, it mentioned something about R5 redundant boot at offset 0x400000. Also, in your previous reply, I am not quite sure about the last sentence "There's bootrom recovery support on booting from eMMC UDA raw mode, where it is possible to have two copies of R5 BL (one @0x0, and redundant one @0x400000).". 

    What is this redundant boot? I don't seem do find this in the TRM. Is there any documentation about this that I can refer to?

    Where and how do I configure this redundant boot / bootrom recovery support at 0x400000?

    Another thing, from this thread https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1015011/tda4vm-can-tda4-boot-into-emmc-boot1-when-boot0-is-invalid, it seems that it might not be possible for ROM to jump into another boot partition during runtime. The only way to change boot partition is by modifying u-boot. Is this the same for AM62?

    Regards,

    Chee

  • Hello Chee,
    Please refer to this FAQ on redundant/recovery boot support in Rom-Boot-Loader (RBL) loading R5F-BL(BootLoader) in K3 SoCs, i.e. AM64x, AM62x, AM62A...
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1190873/faq-am64x-am62x-soc-redundant-recovery-boot-support-in-onchip-rom-boot-loader-rbl-booting-r5f-bl-bootloader

    On your user case, bootrom supports booting R5 BL from any one of eMMC partitions:
    A/. boot partition#1: raw
    B/. boot partition#2: raw
    C/. UDA: raw/fs
    bootrom reads/boots R5 BL from one of eMMC A/B/C partitions based on
    (1). BOOTMODE pins => eMMC
    (2). eMMC EXTCSD non-volatile register pre-setup => which one of eMMC partitions A/B/C, bus width etc...

    - It is not possible for RBL to auto-switch to boot from another partition (i.e. boot partition#2) when RBL fails on the integrity check on the R5-BL from the current partition (i.e. boot partition#1). This is due to the fact that which eMMC partition to boot from is determined by eMMC EXTCSD non-volatile register pre-setup.

    There's bootrom recovery support on booting from eMMC UDA raw mode, where it is possible to have two copies of R5 BL (one @0x0, and redundant one @0x400000).

    - When eMMC is configured as UDA-raw by BOOTMODE pins, RBL does support redundant/recovery boot from the primary offset @0x0 OR the redundant offset @0x400000 from UDA-raw. Note that there's no eMMC boot partition switch for this case.
    - Once R5-BL starts to run, it is perfectly possible for R5-BL code to switch OR read from any partition (A/B/C as listed above) as needed after re-configuring eMMC EXTCSD non-volatile registers.

    Best,

    -Hong