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-AM62B-P1: Flashing the eMMC RFS via USB-DFU tool - ti-processor-sdk-linux-rt-am62xx-evm-09.00.00.03/ Error: Request would exceed designated area!

Part Number: SK-AM62B-P1
Other Parts Discussed in Thread: AM625

Hi All,

I'm a bit confused by an issue placing the RFS on the TI SK-AM62B-P1 board.

It appears that the RFS is too large for the targeted space.

The instructions in the link below say to create a file that will contain the RFS Thus:

dd if=/dev/null of=tisdk-base.ext4 bs=1M seek=300                                      (creating a block of zero filled contiguous space on my HDD)

mkfs.ext4 -RF tisdk-base.ext4                                                                       (creates a ext4 FS in this space (this space is like a mini disk dev))

mkdir mnt_fs                                                                                                 (create a mount point for this ext4 space)

 -t ext4 tisdk-base.ext4 mnt_fs                                                                       (mounts it to the mount point)

Then we expand a tarball of the file system inside this folder

cd mnt_fs

1st Issue :

sudo tar xvf ../am62xx-evm/tisdk-base-image-am62xx-evm.tar.xz             (This was too BIG for the 300 MB above and failed)

change introduced:

recreated the tisdk-base.ext5  as 500 MB so the tar xvf would not fail.      (This worked and df -H indicated 482 MB)

At this point I have both the usb-dfu configured r5/a53 image and the emmc r5/a53 images

First load the usb-dfu that contains tiboot3.bin that will look for usb-dfu tools to images from:

  • sudo dfu-util -R -a bootloader -D tiboot3.bin
  • sudo dfu-util -R -a tispl.bin -D tispl.bin
  • sudo dfu-util -R -a u-boot.img -D u-boot.img

The next steps are in u-boot (=>) interface:

=> setenv dfu_alt_info ${dfu_alt_info_emmc}
=> dfu 0 mmc 0

The USB driver then mounts and shows a target list of images you can now program in the eMMc space:

TABLE1

Found DFU: [0451:6165] ver=0223, devnum=46, cfg=1, intf=0, alt=6, name="sysfw.itb.raw", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=46, cfg=1, intf=0, alt=5, name="u-env.raw", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=46, cfg=1, intf=0, alt=4, name="u-boot.img.raw", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=46, cfg=1, intf=0, alt=3, name="tispl.bin.raw", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=46, cfg=1, intf=0, alt=2, name="tiboot3.bin.raw", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=46, cfg=1, intf=0, alt=1, name="rootfs", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=46, cfg=1, intf=0, alt=0, name="rawemmc", serial="0000000000000449"

Then I performed the USB-DFU steps 

D:\Tools\usb-dfu\mmcimage>dfu-util-static.exe -a tiboot3.bin.raw -D r5\tiboot3.bin
D:\Tools\usb-dfu\mmcimage>dfu-util-static.exe -a tisbl.bin.raw -D a53\tispl.bin
D:\Tools\usb-dfu\mmcimage>dfu-util-static.exe -a u-boot.img.raw -D a53\u-boot.img
D:\Tools\usb-dfu\mmcimage>dfu-util-static.exe -a rootfs -D tisdk-base.ext4

This failed as the tisdk-base.ext4 image is TOO BIG

Looking back at dfu_alt_info_emmc that is assigned to dfu_alt_info that creates TABLE1 above.

=> printenv dfu_alt_info_emmc
dfu_alt_info_emmc=rawemmc raw 0 0x800000 mmcpart 1; rootfs part 0 1; tiboot3.bin.raw raw 0x0 0x400 mmcpart 1; tispl.bin.raw raw 0x400 0x1000 mmcpart 1; u-boot.img.raw raw 0x1400 0x2000 mmcpart 1; u-env.raw raw 0x3400 0x100 mmcpart 1; sysfw.itb.raw raw 0x3600 0x800 mmcpart 1

OR for readability (not actual) 

dfu_alt_info_emmc=

rawemmc raw 0 0x800000 mmcpart 1;

rootfs part 0 1;

tiboot3.bin.raw raw 0x0 0x400 mmcpart 1;

tispl.bin.raw raw 0x400 0x1000 mmcpart 1;

u-boot.img.raw raw 0x1400 0x2000 mmcpart 1;

u-env.raw raw 0x3400 0x100 mmcpart 1;

sysfw.itb.raw raw 0x3600 0x800 mmcpart 1           starts at 3600 and is 0x800 long.

This seemed way too short for a 500MB image, so I changed it to 200000

setenv dfu_alt_info_emmc 'rawemmc raw 0 0x800000 mmcpart 1; rootfs part 0 1; tiboot3.bin.raw raw 0x0 0x400 mmcpart 1; tispl.bin.raw raw 0x400 0x1000 mmcpart 1; u-boot.img.raw raw 0x1400 0x2000 mmcpart 1; u-env.raw raw 0x3400 0x100 mmcpart 1; sysfw.itb.raw raw 0x3600 0x200000 mmcpart 1'

 

HOWEVER,

D:\Tools\usb-dfu\mmcimage>dfu-util-static.exe -l
dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Found DFU: [0451:6165] ver=0223, devnum=13, cfg=1, intf=0, alt=6, name="sysfw.itb.raw", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=13, cfg=1, intf=0, alt=5, name="u-env.raw", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=13, cfg=1, intf=0, alt=4, name="u-boot.img.raw", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=13, cfg=1, intf=0, alt=3, name="tispl.bin.raw", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=13, cfg=1, intf=0, alt=2, name="tiboot3.bin.raw", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=13, cfg=1, intf=0, alt=1, name="rootfs", serial="0000000000000449"
Found DFU: [0451:6165] ver=0223, devnum=13, cfg=1, intf=0, alt=0, name="rawemmc", serial="0000000000000449"

D:\Tools\usb-dfu\mmcimage>dfu-util-static.exe -a tiboot3.bin.raw -D r5\tiboot3.bin
dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 0451:6165
Run-time device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Setting #2 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 4096
Copying data from PC to DFU device
Download [=========================] 100% 293818 bytes
Download done.
state(7) = dfuMANIFEST, status(0) = No error condition is present
state(2) = dfuIDLE, status(0) = No error condition is present
Done!

D:\Tools\usb-dfu\mmcimage>dfu-util-static.exe -a tispl.bin.raw -D a53\tispl.bin
dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 0451:6165
Run-time device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Setting #3 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 4096
Copying data from PC to DFU device
Download [=========================] 100% 1137779 bytes
Download done.
state(7) = dfuMANIFEST, status(0) = No error condition is present
state(2) = dfuIDLE, status(0) = No error condition is present
Done!

D:\Tools\usb-dfu\mmcimage>dfu-util-static.exe -a u-boot.img.raw -D a53\u-boot.img
dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 0451:6165
Run-time device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Setting #4 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 4096
Copying data from PC to DFU device
Download [=========================] 100% 947251 bytes
Download done.
state(7) = dfuMANIFEST, status(0) = No error condition is present
state(2) = dfuIDLE, status(0) = No error condition is present
Done!

D:\Tools\usb-dfu\mmcimage>dfu-util-static.exe -a rootfs -D tisdk-base.ext4
dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 0451:6165
Run-time device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Setting #1 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 4096
Copying data from PC to DFU device
Download [ ] 2% 15216640 bytes failed!
state(10) = dfuERROR, status(14) = Something went wrong, but the device does not know what it was

The serial dump during load is:

setenv dfu_alt_info_emmc 'rawemmc raw 0 0x800000 mmcpart 1; rootfs part 0 1; tiboot3.bin.raw raw 0x0 0x400 mmcpart 1; tispl.bin.raw raw 0x400 0x1000 mmcpart 1; u-boot.img.raw raw 0x1400 0x2000 mmcpart 1; u-env.raw raw 0x3400 0x100 mmcpart 1; sysfw.itb.raw raw 0x3600 0x200000 mmcpart 1'
=>
=> setenv dfu_alt_info ${dfu_alt_info_emmc}
=> dfu 0 mmc 0
generic_phy_get_bulk : no phys property
###############DOWNLOAD ... OK
Ctrl+C to exit ...
########################################################DOWNLOAD ... OK
Ctrl+C to exit ...
###############################################DOWNLOAD ... OK
Ctrl+C to exit ...
###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################Request would exceed designated area!
#

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1127618/faq-sk-am62-how-to-flash-emmc-using-usb-dfu-on-am62x-sk-e2

I believe the problem is in how the eMMC is partitioned but this looks OK to me:

mmc@fa10000: 0
mmc@fa00000: 1

=> mmc part

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

Part    Start Sector    Num Sectors     UUID            Type
  1     2048            32768           7f9a6a4a-01     0e Boot
  2     34816           31045632        7f9a6a4a-02     83
=> mmc info
=> mmc info
Device: mmc@fa10000 <This is the eMMC>
Manufacturer ID: 13
OEM: 4e
Name: S0J56X
Bus Speed: 200000000
Mode: HS200 (200MHz)
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 14.8 GiB
Bus Width: 8-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 14.8 GiB WRREL
Boot Capacity: 31.5 MiB ENH
RPMB Capacity: 4 MiB ENH
Boot area 0 is not write protected
Boot area 1 is not write protected
What I'm looking into next is how u-boot environment variables are read on boot
and if this changed does what I think it should do. If I'm of in the weeds, please do tell.

setenv dfu_alt_info_emmc 'rawemmc raw 0 0x800000 mmcpart 1; rootfs part 0 1; tiboot3.bin.raw raw 0x0 0x400 mmcpart 1; tispl.bin.raw raw 0x400 0x1000 mmcpart 1; u-boot.img.raw raw 0x1400 0x2000 mmcpart 1; u-env.raw raw 0x3400 0x100 mmcpart 1; sysfw.itb.raw raw 0x3600 0x200000 mmcpart 1'
=>
=> setenv dfu_alt_info ${dfu_alt_info_emmc}
=> dfu 0 mmc 0

Thanks All.
  • Hi Robert,

    By default, the DFU_ALT_INFO_EMMC variable is set to flash rootfs in partition no. 1 of eMMC UDA ("rootfs part 0 1"). However, you have partitioned the eMMC UDA with two partitions with the second partition long enough to accomodate the rootfs filesystem.

    So, you would want to update the DFU_ALT_INFO_EMMC to flash rootfs to 2nd partition ("rootfs part 0 2"). The updated DFU_ALT_INFO_EMMC looks like:

    => setenv dfu_alt_info_emmc 'rawemmc raw 0 0x800000 mmcpart 1;rootfs part 0 2;tiboot3.bin.raw raw 0x0 0x400 mmcpart 1;tispl.bin.raw raw 0x400 0x1000 mmcpart 1;u-boot.img.raw raw 0x1400 0x2000 mmcpart 1;u-env.raw raw 0x3400 0x100 mmcpart 1;sysfw.itb.raw raw 0x3600 0x800 mmcpart 1'
    => setenv dfu_alt_info ${dfu_alt_info_emmc}

    After you have successfully flashed the eMMC, you can boot Linux from eMMC UDA's 2nd partition with the following commands:

    => setenv mmcdev 0
    => setenv bootpart 0:2
    => boot

    Regards,

    Prashant

  • Btw, for flashing the R5 SPL (tiboot3.bin), A53 SPL (tispl.bin), A53 U-Boot (u-boot.img) & Rootfs filesystem, only the following entries in the DFU_ALT_INFO_EMMC variable are relevant:

    rootfs part 0 1;
    tiboot3.bin.raw raw 0x0 0x400 mmcpart 1;
    tispl.bin.raw raw 0x400 0x1000 mmcpart 1;
    u-boot.img.raw raw 0x1400 0x2000 mmcpart 1;

  • Thankyou, I was working with base config that came with my SK, I'm not really sure if they are read from the device or are sent as part of the u-boot image. 

    e.g. not sure how dfu_alt_info_emmc is initialized, (codebase, on-board config, or from reading the factory prepped emmc flash) ? 

  • Hi Robert,

    The default `dfu_alt_info_emmc` is set at compile time from the u-boot source code.

    ~/ti/psdk/am62x/09.01.00.08/board-support/ti-u-boot-2023.04+gitAUTOINC+b0d717b732-gb0d717b732
    ❯ grep -n -A10 dfu_alt_info_emmc -- include/environment/ti/k3_dfu.env
    10:dfu_alt_info_emmc=
    11-     rawemmc raw 0 0x800000 mmcpart 1;
    12-     rootfs part 0 1;
    13-     tiboot3.bin.raw raw 0x0 0x400 mmcpart 1;
    14-     tispl.bin.raw raw 0x400 0x1000 mmcpart 1;
    15-     u-boot.img.raw raw 0x1400 0x2000 mmcpart 1;
    16-     u-env.raw raw 0x3400 0x100 mmcpart 1;
    17-     sysfw.itb.raw raw 0x3600 0x800 mmcpart 1
    18-
    19-dfu_alt_info_ospi=
    20-     tiboot3.bin raw 0x0 0x080000;

    For custom `dfu_alt_info_emmc`, you can either directly change the source code or modify the variable at run time like shown previously.

    Regards,

    Prashant

  • Good that I asked that follow up question. 

    Need to update this as well in the eMMC resident u-boot code:

    ~/ti/psdk/am62x/09.01.00.08/board-support/ti-u-boot-2023.04+gitAUTOINC+b0d717b732-gb0d717b732
    ❯ grep -n -A10 dfu_alt_info_emmc -- include/environment/ti/k3_dfu.env
    10:dfu_alt_info_emmc=
    11- rawemmc raw 0 0x800000 mmcpart 1;
    12- rootfs part 0 1;

    12- rootfs part 0 2;    <== Update?

    Or how do these settings persist over a power cycle? Seems setenv values are temporary (I take it they somehow survive warm boots below?)

    => setenv mmcdev 0
    => setenv bootpart 0:2
    => boot

  • Hi Robert,

    Any modifications to the environment variables via setenv of any other method do not persist over the next power cycle. On next power cycle, the environment variables resets to their default values.

    If you want to persistenly save your modifications to the environment variables, you can directly modify the relevant environment files in the U-Boot source. For example,

    1) Update the `dfu_alt_info_emmc` to by default flash rootfs to 2nd partition

    diff --git a/include/environment/ti/k3_dfu.env b/include/environment/ti/k3_dfu.env
    index 3f5739da..16ec6736 100644
    --- a/include/environment/ti/k3_dfu.env
    +++ b/include/environment/ti/k3_dfu.env
    @@ -9,7 +9,7 @@ dfu_alt_info_mmc=
     
     dfu_alt_info_emmc=
     	rawemmc raw 0 0x800000 mmcpart 1;
    -	rootfs part 0 1;
    +	rootfs part 0 2;
     	tiboot3.bin.raw raw 0x0 0x400 mmcpart 1;
     	tispl.bin.raw raw 0x400 0x1000 mmcpart 1;
     	u-boot.img.raw raw 0x1400 0x2000 mmcpart 1;
    

    2) Automatically always boot Linux from eMMC UDA's 2nd partition

    diff --git a/board/ti/am62x/am62x.env b/board/ti/am62x/am62x.env
    index e507ca27..7e2d13b6 100644
    --- a/board/ti/am62x/am62x.env
    +++ b/board/ti/am62x/am62x.env
    @@ -28,8 +28,8 @@ args_all=setenv optargs ${optargs} earlycon=ns16550a,mmio32,0x02800000
     run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}
     
     boot=mmc
    -mmcdev=1
    -bootpart=1:2
    +mmcdev=0
    +bootpart=0:2
     bootdir=/boot
     rd_spec=-
     
    

    Regards,

    Prashant

  • Thanks Prashant, 

    2 questions (and a run on question!):

    1) saveenv not implemented?

    I need to look into implementing a saveenv mechanism. I think that would that require a section of flash to be carved out as well as modifications to u-boot to access that location - mostlikely a 3rd partition of flash towards the top. 

    2) For the the rootfs, in partition 1, why would that have ever been the option (partition 1 fat32 .vs. partition 2 type 83)? If that is a DOS partition for boot, and the second partition is 83 type (and the image of the root fs in the instructions attached make it a EXT4 (journaling 83 type FS).

    It seems to me that the RFS would only belong in the type 83 filesystem space. And for that matter if I'm flashing it to this space, how does the FS know it can grow into this space. And if I want to do a ping/pong image upgrade path how would it limit this RFS from growing into the other application space. Does TI have a good ping/pong example? 

    Seems ping / pong might require the RAW type image and for the second set in Ping/Pong to start at 0x40,0000. Is there an example of building for RAW? And configuring u-boot images to run validation scripts based on either RAW partitions with perhaps a 3rd partition for persistent data?

    Thanks, sorry turning into a design question.

  • caught an error on review:

    mkfs.ext4 -RF tisdk-base.ext4   

    should be 

    mkfs.ext4 -F tisdk-base.ext4   

  • I see I was using the older 09.00.00.03, and we have moved on to 09.01.00.08

    ~/ti-processor-sdk-linux-rt-am62xx-evm-09.01.00.08/board-support
    $ find . -name am62x.env
    ./u-boot-extras-jailhouse/board/ti/am62x/am62x.env
    ./ti-u-boot-2023.04+gitAUTOINC+b0d717b732-gb0d717b732/board/ti/am62x/am62x.env

    I believe jailhouse would be related to network hardening? Thus I should be using the path with a commit hash embedded?

    I made the changes with the older 09.00.00.03 code base, and it failed so I have now updated to the 09.01.00.08 base.

    mkfs.ext4 -RF tisdk-base.ext4   

    Noticed an error above: mkfs.ext4 -F tisdk-base.ext4   

    So the above changes do enable emmc update from usb-dfu.

    And with mmcdev=0 ; bootpart=0:2 

    followed by boot does boot from the eMMC RFS. And that this is my latest RFS.

    However, changing boot mode pins to eMMC primary fails to boot. 

    => ls mmc 0:1 boot
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>       4096 EFI
    <SYM>         29 Image
            20251136 Image-6.1.33-rt11-g685e771524
    <DIR>       4096 dtb
    <SYM>         32 fitImage
             8540358 fitImage-6.1.33-rt11-g685e771524
    => ls mmc 0:2 boot
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>       4096 EFI
    <SYM>         29 Image
            20251136 Image-6.1.33-rt11-g685e771524
    <DIR>       4096 dtb
    <SYM>         32 fitImage
             8540358 fitImage-6.1.33-rt11-g685e771524
                   0 RobWasHere                      <==== updated RFS check

    Reviewing ls mmc 0:1

     I don't see the tiboot3.bin/tisbl.bin/u-boot.img  ....? in mmc 0:1 partition. These should be there based on the prior usb-dfu load to:

     dfu_alt_info_emmc locations. 

    Partition Map for MMC device 0  --   Partition Type: DOS
    
    Part    Start Sector    Num Sectors     UUID            Type
      1     2048            32768           7f9a6a4a-01     0e Boot
      2     34816           31045632        7f9a6a4a-02     83
    => ls mmc 0:1
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>      16384 lost+found
    <DIR>       4096 bin
    <DIR>       4096 boot
    <DIR>       4096 dev

    I think the solution is to move the definition for the RFS partition later:

     dfu_alt_info_emmc=
     	rawemmc raw 0 0x800000 mmcpart 1;
    -	rootfs part 0 1;
     	tiboot3.bin.raw raw 0x0 0x400 mmcpart 1;
     	tispl.bin.raw raw 0x400 0x1000 mmcpart 1;
     	u-boot.img.raw raw 0x1400 0x2000 mmcpart 1;
    +	rootfs part 0 2;
     	

  • I am still able to boot - from this step:

    u-boot already up and running dtb initialized at this point (I believe)

    => setenv mmcdev 0
    => setenv bootpart 0:2
    => boot

    But after cold boot the emmc does not boot.

    I believe it is because I still don't see as FAT32 0e in the boot side of the emmc. 

    I'm just not clear on the * raw files or how to create them. Are these different?

    e.g.:

    rawemmc raw 0 0x800000 mmcpart 1

    and other *.raw files ?

    (make u-boot does not produce .raw images)

  • Hi Robert,

    Okay, so many queries. Let me try to clear the latest ones and then we can go the saveenv & ping/pong query.

    --------------------

    I believe jailhouse would be related to network hardening? Thus I should be using the path with a commit hash embedded?

    Yes, you need to use the later one. The former is for Jailhouse support

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_01_00_08/exports/docs/linux/Foundational_Components_Hypervisor.html

    --------------------

     I don't see the tiboot3.bin/tisbl.bin/u-boot.img  ....? in mmc 0:1 partition. These should be there based on the prior usb-dfu load to:

    This is because you did not flash these images in the eMMC UDA's 1st partition. Please note the eMMC is hardware partitioned like this

    +---------+---------+--------+----------------------------------+
    |  boot0  |  boot1  |  rpmb  |          User Data Area          |
    +---------+---------+--------+----------------------------------+

    So, the default `dfu_alt_info_emmc` flashes the images (tiboot3.bin/tispl.bin/u-boot.img/uEnv.txt) at their defined offsets in the BOOT0 partition and flashes RFS to UDA's 1st logical partition. Since, you had partitioned the UDA differently, you just changed the flashing of RFS to 2nd partition.

    Why the default `default_alt_info_emmc` flashes RFS to 1st partition is because we expect the eMMC UDA is logically partitioned with the following guide:

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_01_00_08/exports/docs/linux/Foundational_Components/U-Boot/UG-Memory.html#partitioning-emmc-from-u-boot

    --------------------

    But after cold boot the emmc does not boot.

    I assume you have flashed the tiboot3.bin, tispl.bin & u-boot.img using the default configuration in `dfu_alt_info_emmc` as also shown in the DFU logs in your very first original reply.

    In that case, the images are there in BOOT0 partiton. You just need to run the following commands to enable the ROM reading the tiboot3.bin from the BOOT0 partition

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_01_00_08/exports/docs/linux/Foundational_Components/U-Boot/UG-Memory.html#booting-tiboot3-bin-tispl-bin-and-u-boot-img-from-emmc-boot-partition-for-k3-class-of-socs

    After running those commands, you should be able to boot from eMMC boot mode.

    Regards,

    Prashant

  • Thanks, Prashant,

    I think it might be best to fix those partition tables first. I did not load those, which may explain the problems I'm having. Although, it is possible I had a typo in a command along the way.

    As I just used command to set the partconf above, then 

    => setenv mmcdev 0
    => setenv bootpart 0:2
    => boot

    It booted again from the on emmc RFS.

    U-Boot 2023.04-dirty (Feb 21 2024 - 00:10:10 -0700)

    SoC: AM62X SR1.0 HS-FS
    Model: Texas Instruments AM625 SK
    EEPROM not available at 80, trying to read at 81
    Board: AM62B-SKEVM-P1 rev A
    DRAM: 2 GiB
    Core: 72 devices, 32 uclasses, devicetree: separate
    MMC: mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In: serial
    Out: serial
    Err: serial
    Net: eth0: ethernet@8000000port@1
    Hit any key to stop autoboot: 0
    => mmc partconf 0 1 1 1
    => mmc bootbus 0 2 0 0
    Set to BOOT_BUS_WIDTH = 0x2, RESET = 0x0, BOOT_MODE = 0x0
    => setenv mmcdev 0
    => setenv bootpart 0:2
    => boot
    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    Can't set block device
    ## Error: "main_cpsw0_qsgmii_phyinit" not defined
    16169472 bytes read in 103 ms (149.7 MiB/s)
    59456 bytes read in 16 ms (3.5 MiB/s)
    Working FDT set to 88000000
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Working FDT set to 88000000
    ERROR: reserving fdt memory region failed (addr=ff700000 size=8ca000 flags=4)
    Loading Device Tree to 000000008feee000, end 000000008fffffff ... OK
    Working FDT set to 8feee000

    Starting kernel ...

    [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [ 0.000000] Linux version 6.1.46-rt13-gb871cdee8c (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP PREEMPT_RT Thu Dec 7 23:52:13 UTC 2023
    [ 0.000000] Machine model: Texas Instruments AM625 SK
    [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [ 0.000000] printk: bootconsole [ns16550a0] enabled
    [ 0.000000] efi: UEFI not found.

    Then I tried warm boot via sudo shutdown, then hit the reset button and no boot.... 

    So RESET button - no restart. Serial log stopped

    But the USB interface comes up (USB Is enabled as my Backup Interface)

    D:\Tools\usb-dfu>dfu-util-static.exe -l
    dfu-util 0.8

    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2014 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to dfu-util@lists.gnumonks.org

    Found DFU: [0451:6165] ver=0200, devnum=53, cfg=1, intf=0, alt=1, name="SocId", serial="01.00.00.00"
    Found DFU: [0451:6165] ver=0200, devnum=53, cfg=1, intf=0, alt=0, name="bootloader", serial="01.00.00.00"

    COLDBOOT: powering off the board via USB disconnect and powering back up worked.

    LOG: #shutdown now 

    ....

    [ 52.190093] systemd-shutdown[1]: All filesystems, swaps, loop devices, MD devices and DM devices detached.
    [ 52.196985] systemd-shutdown[1]: Syncing filesystems and block devices.
    [ 52.198011] systemd-shutdown[1]: Powering off.
    [ 52.281718] reboot: Power down                                                    <== Shutdown expected

    <This is where it froze, and using the RESET button (SW30 had no effect - this was not expected<?>

    U-Boot SPL 2023.04-dirty (Feb 20 2024 - 23:17:16 -0700)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)')
    SPL initial stack usage: 13384 bytes
    Trying to boot from MMC1
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...

    NOTICE: BL31: v2.9(release):v2.9.0-614-gd7a7135d32-dirty
    NOTICE: BL31: Built : 09:34:15, Aug 24 2023

    U-Boot SPL 2023.04-dirty (Feb 20 2024 - 23:17:34 -0700)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)')
    SPL initial stack usage: 1856 bytes
    MMC: no card present
    ** Bad device specification mmc 1 **
    Couldn't find partition mmc 1:1
    Error: could not access storage.
    Trying to boot from MMC1
    Authentication passed
    Authentication passed


    U-Boot 2023.04-dirty (Feb 20 2024 - 23:17:34 -0700)

    SoC: AM62X SR1.0 HS-FS
    Model: Texas Instruments AM625 SK
    EEPROM not available at 80, trying to read at 81
    Board: AM62B-SKEVM-P1 rev A
    DRAM: 2 GiB
    Core: 72 devices, 32 uclasses, devicetree: separate
    MMC: mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In: serial
    Out: serial
    Err: serial
    Net: eth0: ethernet@8000000port@1
    Hit any key to stop autoboot: 0
    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    Can't set block device
    ## Error: "main_cpsw0_qsgmii_phyinit" not defined
    16169472 bytes read in 103 ms (149.7 MiB/s)
    59456 bytes read in 16 ms (3.5 MiB/s)
    Working FDT set to 88000000
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Working FDT set to 88000000
    ERROR: reserving fdt memory region failed (addr=ff700000 size=8ca000 flags=4)
    Loading Device Tree to 000000008feee000, end 000000008fffffff ... OK
    Working FDT set to 8feee000

    Starting kernel ...

    [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [ 0.000000] Linux version 6.1.46-rt13-gb871cdee8c (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP PREEMPT_RT Thu Dec 7 23:52:13 UTC 2023
    [ 0.000000] Machine model: Texas Instruments AM625 SK
    [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (optio

    <BETTER>