Difference between revisions of "DESK-MX8M-L/Development/How to create a bootable microSD card"

From DAVE Developer's Wiki
Jump to: navigation, search
(Created page with "{{subst:How to create a bootable SD card | nome-som=ORCA | kit-code=MX8M | kit = mx8 | kit-repo = desk-mx-l}}")
 
Line 7: Line 7:
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
|-
 
|-
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|X.Y.Z
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|1.0.0
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Month Year
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Feb 2022
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|TBD
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|First DESK-MX8M-L release
|-
 
|-
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|[TBD_link X.Y.Z]
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Month Year
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|TBD
 
 
|-
 
|-
 
|}
 
|}
Line 29: Line 24:
 
'''Note:''' Starting from this release the support for the SPL has been introduced in Uboot. Previous versions of this script will no longer produce a fully functional and bootable microSD card. <br>
 
'''Note:''' Starting from this release the support for the SPL has been introduced in Uboot. Previous versions of this script will no longer produce a fully functional and bootable microSD card. <br>
 
   
 
   
The procedure has been tested on a Linux PC running Ubuntu LTS (>=''TBD'') distribution with  
+
The procedure has been tested on a Linux PC running Ubuntu LTS (>=16.04) distribution with  
 
*a 16 GB microSD card [1]
 
*a 16 GB microSD card [1]
*the binary files delivered along with the [[Axel_Embedded_Linux_Kit_(XELK)#Downloadable_binary_images|DESKMX8M-L ''1.x.x'']].
+
*the binary files delivered along with the [[DESK-MX8M-L/General/Release_Notes#Downloadable_binary_images|DESKMX8M-L 2.0.0-rc2]].
The resulting card is partitioned as depicted [[Axel_Embedded_Linux_Kit_(XELK)#XELK_microSD_Layout|here]].
+
The resulting card is partitioned as depicted [[ORCA_SOM/ORCA_Evaluation_Kit/Getting_started/Unboxing#microSD_Layout|here]].
  
 
The script - named <code>mksd.sh</code> - can be realized with the following code:
 
The script - named <code>mksd.sh</code> - can be realized with the following code:
Line 38: Line 33:
 
#!/bin/bash
 
#!/bin/bash
  
if [[ -z $1 || -z $2 || -z $3 || -z $4 || -z $5 ]]
+
if [[ -z $1 || -z $2 || -z $3 || -z $4 ]]
 
then
 
then
 
echo "$0 Usage:"
 
echo "$0 Usage:"
echo " $0 <device> <u-boot.img> <SPL> <binaries directory> <rootfs tar.bz2>"
+
echo " $0 <device> <flash.bin> <binaries directory> <rootfs tar.bz2>"
echo " Example: $0 /dev/sdc u-boot.img SPL binaries/ rootfs.tar.bz2"
+
echo " Example: $0 /dev/sdc flash.bin binaries/ rootfs.tar.bz2"
 
exit
 
exit
 
fi
 
fi
Line 60: Line 55:
 
if ! [[ -e $2 ]]
 
if ! [[ -e $2 ]]
 
then
 
then
echo "Incorrect u-boot.img location!"
+
echo "Incorrect flash.bin location!"
 
exit
 
exit
 
fi
 
fi
  
if ! [[ -e $3 ]]
+
if ! [[ -d $3 ]]
then
 
echo "Incorrect SPL location!"
 
exit
 
fi
 
 
 
if ! [[ -d $4 ]]
 
 
then
 
then
 
echo "Incorrect Binaries location!"
 
echo "Incorrect Binaries location!"
Line 76: Line 65:
 
fi
 
fi
  
if ! [[ -f $5 ]]
+
if ! [[ -f $4 ]]
 
then
 
then
 
echo "Incorrect rootfs location!"
 
echo "Incorrect rootfs location!"
Line 90: Line 79:
 
PART=""
 
PART=""
 
fi
 
fi
UBOOT=$2
+
BOOT=$2
SPL=$3
+
BINARIES=$3
BINARIES=$4
+
RFS=$4
RFS=$5
 
  
 
echo "All data on "$DRIVE" now will be destroyed! Continue? [y/n]"
 
echo "All data on "$DRIVE" now will be destroyed! Continue? [y/n]"
Line 148: Line 136:
 
umount "$DRIVE$PART"2
 
umount "$DRIVE$PART"2
  
echo "[Programming SPL]"
+
echo "[Programming flash.bin]"
dd if=$SPL of=$DRIVE bs=512 seek=2 conv=fsync
+
dd if=$BOOT of=$DRIVE bs=1k seek=32 conv=fsync
 
 
echo "[Programming u-boot.img]"
 
dd if=$UBOOT of=$DRIVE bs=1k seek=69 conv=fsync
 
  
 
echo "[Done]"
 
echo "[Done]"
 
</pre>
 
</pre>
  
Here is an example that shows how to use this script. Let's assume that the binary files were downloaded in the <code>desk</code> subdirectory of the working directory. Before invoking the script, the following files has to be renamed in order to make them compatible with the default U-Boot environment variables:
+
Here is an example that shows how to use this script. Let's assume that the binary files were downloaded in the <code>sdcard</code> subdirectory of the working directory. Before invoking the script, the following files has to be renamed in order to make them compatible with the default U-Boot environment variables:
 
* bootscript: <code>boot.scr</code>
 
* bootscript: <code>boot.scr</code>
* Linux kernel: <code>uImage</code>
+
* Linux kernel: <code>Image</code>
* Device tree blob: <code>''carrier''.dtb</code>.
+
* Device tree blob: <code>imx8mp-mito8mplus-cb1001.dtb</code> or <code>imx8mm-mito8mmini.dtb</code>
  
 
This is the list of the binary files that will be used by the script:
 
This is the list of the binary files that will be used by the script:
 
<pre>
 
<pre>
dvdk@vagrant:~/desk-{{{kit}}}$ ls -la
+
dvdk@vagrant:~/desk-mx-l/sdcard$ ls -laR
...
+
.:
TBD directory listing
+
total 734040
...
+
drwxrwxr-x 3 dvdk dvdk      4096 Feb 16 09:41 .
 +
drwxr-xr-x 7 dvdk dvdk      4096 Feb 16 09:21 ..
 +
drwxrwxr-x 2 dvdk dvdk      4096 Feb 16 09:41 binaries
 +
-rwxrwxr-x 1 dvdk dvdk 743273295 Feb 16 09:34 dave-image-devel-desk-mx8mp.tar.bz2
 +
-rw-r--r-- 1 root root  8355840 Feb 16 09:32 flash.bin
 +
-rwxrwxr-x 1 dvdk dvdk      1908 Feb 16 09:22 mksd.sh
 +
 
 +
./binaries:
 +
total 27604
 +
drwxrwxr-x 2 dvdk dvdk    4096 Feb 16 09:41 .
 +
drwxrwxr-x 3 dvdk dvdk    4096 Feb 16 09:41 ..
 +
-rw-rw-r-- 1 dvdk dvdk      695 Feb 16 09:41 boot.scr
 +
-rw-r--r-- 1 dvdk dvdk 28150272 Feb 16 09:35 Image
 +
-rw-r--r-- 1 dvdk dvdk    40521 Feb 16 09:35 imx8mm-mito8mmini.dtb
 +
-rw-r--r-- 1 dvdk dvdk    58111 Feb 16 09:35 imx8mp-mito8mplus-cb1001.dtb
 +
dvdk@vagrant:~/desk-mx-l/sdcard$
 
</pre>
 
</pre>
 
You can now run the script, by passing the following parameters:
 
You can now run the script, by passing the following parameters:
*Device file of the microSD card (<code>/dev/sdc</code> in the example)
+
*Device file of the microSD card (<code>/dev/sdb</code> in the example)
*U-Boot image
+
*Boot image
*SPL
 
 
*Path of the directory containing the bootscript file, the Linux kernel image, and the device tree blob files
 
*Path of the directory containing the bootscript file, the Linux kernel image, and the device tree blob files
 
*Archive of the target's root file system (compressed as <code>.tar.bz2</code> file).
 
*Archive of the target's root file system (compressed as <code>.tar.bz2</code> file).
 
<pre>
 
<pre>
dvdk@vagrant:~/desk-{{{kit}}}$ ./mksd.sh /dev/sd<x> <u-boot.img> <SPL> <binaries_dir>/ <rfs_filename>
+
dvdk@vagrant:~/desk-mx-l/sdcard$ sudo ./mksd.sh /dev/sdb flash.bin binaries/ dave-image-devel-desk-mx8mp.tar.bz2
...
+
All data on /dev/sdb now will be destroyed! Continue? [y/n]
...
+
y
TBD
+
[Partitioning /dev/sdb...]
...
+
1024+0 records in
...
+
1024+0 records out
 +
1048576 bytes (1.0 MB, 1.0 MiB) copied, 3.03198 s, 346 kB/s
 +
DISK SIZE - 15931539456 bytes
 +
Checking that no-one is using this disk right now ... OK
 +
 
 +
Disk /dev/sdb: 14.9 GiB, 15931539456 bytes, 31116288 sectors
 +
Units: sectors of 1 * 512 = 512 bytes
 +
Sector size (logical/physical): 512 bytes / 512 bytes
 +
I/O size (minimum/optimal): 512 bytes / 512 bytes
 +
 
 +
>>> Created a new DOS disklabel with disk identifier 0xcd2d3b4e.
 +
Created a new partition 1 of type 'W95 FAT32 (LBA)' and of size 8 GiB.
 +
/dev/sdb2: Created a new partition 2 of type 'Linux' and of size 6.9 GiB.
 +
/dev/sdb3:
 +
New situation:
 +
 
 +
Device    Boot    Start      End  Sectors  Size Id Type
 +
/dev/sdb1  *      32768 16777215 16744448    8G  c W95 FAT32 (LBA)
 +
/dev/sdb2      16777216 31116287 14339072  6.9G 83 Linux
 +
 
 +
The partition table has been altered.
 +
Calling ioctl() to re-read partition table.
 +
Syncing disks.
 +
[Making filesystems...]
 +
mkfs.fat 3.0.28 (2015-05-16)
 +
mke2fs 1.42.13 (17-May-2015)
 +
Creating filesystem with 1792384 4k blocks and 448800 inodes
 +
Filesystem UUID: ce8daece-3f58-4b43-bd11-7bafd10bba73
 +
Superblock backups stored on blocks:
 +
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
 +
 
 +
Allocating group tables: done                           
 +
Writing inode tables: done                           
 +
Creating journal (32768 blocks): done
 +
Writing superblocks and filesystem accounting information: done
 +
 
 +
[Copying files...]
 +
'binaries/boot.scr' -> '/mnt/boot.scr'
 +
'binaries/Image' -> '/mnt/Image'
 +
'binaries/imx8mm-mito8mmini.dtb' -> '/mnt/imx8mm-mito8mmini.dtb'
 +
'binaries/imx8mp-mito8mplus-cb1001.dtb' -> '/mnt/imx8mp-mito8mplus-cb1001.dtb'
 +
[Extracting rfs (this may take a while...)]
 +
[Programming flash.bin]
 +
8160+0 records in
 +
8160+0 records out
 +
8355840 bytes (8.4 MB, 8.0 MiB) copied, 24.2775 s, 344 kB/s
 +
[Done]
 +
dvdk@vagrant:~/desk-mx-l/sdcard$
 
</pre>
 
</pre>
 
  
 
[1] In case you have a different size, you'll need to change the <code>sfdisk</code> parameters accordingly.
 
[1] In case you have a different size, you'll need to change the <code>sfdisk</code> parameters accordingly.
  
===bootscr ===
+
===boot.scr ===
  
Once you got the new binaries compiled from your modified sources, they have to be installed on first SD partition preserving the original file names used into <i>boot.scr</i> u-boot bootscript.
+
Once you got the new binaries compiled from your modified sources, they have to be installed on the first SD partition preserving the original file names used into <i>boot.scr</i> u-boot bootscript.
  
 
Here below there is an example on how to create a <code>boot.scr</code> file from the '''bootscript.txt''' for booting from SD card:
 
Here below there is an example on how to create a <code>boot.scr</code> file from the '''bootscript.txt''' for booting from SD card:
  
''TBD: bootscript.txt dump''
+
* for [[ORCA SOM | ORCA SOM]]
 +
<pre>
 +
echo 'bootscript generated with command "mkimage -A ARM -T script -C none -n DESK-MX8M -d bootscript.txt boot.scr"'
  
<pre>
+
setenv fdtfile imx8mp-mito8mplus-cb1001.dtb
echo 'bootscript generated with command "mkimage -A ARM -T script -C none -n AXEL-Lite-DESK-SBCX -d bootscript.txt boot.scr"'
+
setenv bootfile Image
 +
setenv mmc_loadk 'fatload mmc ${sd_dev}:1 ${loadaddr} ${bootfile}'
 +
setenv mmc_loadfdt 'fatload mmc ${sd_dev}:1 ${fdt_addr} ${fdtfile}'
 +
setenv mmcboot 'run mmc_loadk; run mmc_loadfdt; run bootk'
 +
setenv bootargs 'console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200 root=/dev/mmcblk1p2'
 +
setenv bootk 'booti ${loadaddr} - ${fdt_addr}'
  
setenv desk_release 'desk-mx6-l-1.0.0'
+
echo Booting DESK-MX8M via mmcboot with ${fdtfile} as device tree
  
if test 0x${cb_configid#} = 0x00000012;
+
run mmcboot
then
+
 
if test ${cpu} = 6DL; then
+
echo mmcboot FAILURE
setenv fdtfile ${desk_release}_imx6dl-sbcx-cb0012.dtb
+
</pre>
else
 
setenv fdtfile ${desk_release}_imx6q-sbcx-cb0012.dtb
 
fi
 
elif test 0x${cb_configid#} = 0x00000013;
 
then
 
if test ${cpu} = 6DL; then
 
setenv fdtfile ${desk_release}_imx6dl-sbcx-cb0013.dtb
 
else
 
setenv fdtfile ${desk_release}_imx6q-sbcx-cb0013.dtb
 
fi
 
elif test 0x${cb_configid#} = 0xffffffff;
 
then
 
if test ${cpu} = 6DL; then
 
setenv fdtfile ${desk_release}_imx6dl-desk-l-2.0.0.dtb
 
else
 
setenv fdtfile ${desk_release}_imx6q-desk-l-2.0.0.dtb
 
fi
 
else
 
    echo Invalid CB! Autoreset ...
 
    sleep 30
 
reset
 
fi
 
  
setenv bootfile ${desk_release}_uImage
+
* for [[MITO 8M Mini SOM | MITO 8M Mini SOM]]
 +
<pre>
 +
echo 'bootscript generated with command "mkimage -A ARM -T script -C none -n DESK-MX8M -d bootscript.txt boot.scr"'
  
setenv mmc_loadk 'fatload mmc ${mmcdev}:1 ${loadaddr} ${bootfile}'
+
setenv fdtfile imx8mm-mito8mmini.dtb
setenv mmc_loadfdt 'fatload mmc ${mmcdev}:1 ${fdtaddr} ${fdtfile}'
+
setenv bootfile Image
 +
setenv mmc_loadk 'fatload mmc ${sd_dev}:1 ${loadaddr} ${bootfile}'
 +
setenv mmc_loadfdt 'fatload mmc ${sd_dev}:1 ${fdt_addr} ${fdtfile}'
 +
setenv mmcboot 'run mmc_loadk; run mmc_loadfdt; run bootk'
 +
setenv bootargs 'console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200 root=/dev/mmcblk1p2'
 +
setenv bootk 'booti ${loadaddr} - ${fdt_addr}'
  
echo Booting AxelLite-DESK-SBCX via mmcboot with ${fdtfile} as device tree
+
echo Booting DESK-MX8M via mmcboot with ${fdtfile} as device tree
  
 
run mmcboot
 
run mmcboot
Line 242: Line 279:
  
 
<pre>
 
<pre>
mkimage -A ARM -T script -C none -n AXEL-Lite-DESK-SBCX -d bootscript.txt boot.scr
+
mkimage -A ARM -T script -C none -n DESK-MX8M -d bootscript.txt boot.scr
 
</pre>
 
</pre>
  
Line 249: Line 286:
 
----
 
----
  
[[Category:ORCA]]
+
[[Category:ORCA]] [[Category:MITO 8M Mini]]

Revision as of 08:57, 16 February 2022

History
Version Issue Date Notes
1.0.0 Feb 2022 First DESK-MX8M-L release



How to create a bootable SD card[edit | edit source]

200px-Emblem-important.svg.png

The procedure described here was tested with a physical machine. In case of a virtual machine such as the MVM, it might not work properly. Also, it is worth remembering that USB controller of the MVM is disabled by default. See also this section.


This article shows how to create a bootable microSD for the [[DESK-MX8M-L/General/Release_Notes_(DESK-MX8M-L)|DESK-MX8M-L Release Notes] kit by using a simple bash script.
Note: Starting from this release the support for the SPL has been introduced in Uboot. Previous versions of this script will no longer produce a fully functional and bootable microSD card.

The procedure has been tested on a Linux PC running Ubuntu LTS (>=16.04) distribution with

The resulting card is partitioned as depicted here.

The script - named mksd.sh - can be realized with the following code:

#!/bin/bash

if [[ -z $1 || -z $2 || -z $3 || -z $4 ]]
then
	echo "$0 Usage:"
	echo "	$0 <device> <flash.bin> <binaries directory> <rootfs tar.bz2>"
	echo "	Example: $0 /dev/sdc flash.bin binaries/ rootfs.tar.bz2"
	exit
fi

if [ "$(whoami)" != "root" ]
then
	echo "you must be root to run this script!"
	exit
fi

if ! [[ -b $1 ]]
then
	echo "$1 is not a valid block device!"
	exit
fi

if ! [[ -e $2 ]]
then
	echo "Incorrect flash.bin location!"
	exit
fi

if ! [[ -d $3 ]]
then
	echo "Incorrect Binaries location!"
	exit
fi

if ! [[ -f $4 ]]
then
	echo "Incorrect rootfs location!"
	exit
fi

DRIVE=$1
if [[ "$DRIVE" == *"mmcblk"* ]]
then
	echo "You're using a mmc device, I need to fix partition names"
	PART="p"
else
	PART=""
fi
BOOT=$2
BINARIES=$3
RFS=$4

echo "All data on "$DRIVE" now will be destroyed! Continue? [y/n]"
read ans
if ! [ $ans == 'y' ]
then
	exit
fi

echo "[Partitioning $1...]"

dd if=/dev/zero of=$DRIVE bs=1024 count=1024

SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`

echo DISK SIZE - $SIZE bytes

CYLINDERS=`echo $SIZE/255/63/512 | bc`

# check if we're running an old (e.g. 2.20.x) or new (e.g. 2.24.x) sfdisk
sfdisk --help | grep -- -H

if [ "$?" -eq "0" ]
then
	{
		echo 40,1380,0x0c,*
		echo 1420,,83,-
	} | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE
else
{
    echo 16M,8176M,0x0c,*
    echo 8192M,,83,-
} | sfdisk $DRIVE
fi

partprobe


echo "[Making filesystems...]"
mkfs.vfat -F 32 -n BOOT "$DRIVE$PART"1 #> /dev/null
mkfs.ext3 -F -L ROOTFS "$DRIVE$PART"2 #> /dev/null

echo "[Copying files...]"

binaries_dir=${BINARIES%/}
mount "$DRIVE$PART"1 /mnt
cp -av --no-preserve=ownership $binaries_dir/* /mnt/
umount "$DRIVE$PART"1

echo "[Extracting rfs (this may take a while...)]"
mount "$DRIVE$PART"2 /mnt
tar jxf $RFS -C /mnt > /dev/null
chmod 755 /mnt
umount "$DRIVE$PART"2

echo "[Programming flash.bin]"
dd if=$BOOT of=$DRIVE bs=1k seek=32 conv=fsync

echo "[Done]"

Here is an example that shows how to use this script. Let's assume that the binary files were downloaded in the sdcard subdirectory of the working directory. Before invoking the script, the following files has to be renamed in order to make them compatible with the default U-Boot environment variables:

  • bootscript: boot.scr
  • Linux kernel: Image
  • Device tree blob: imx8mp-mito8mplus-cb1001.dtb or imx8mm-mito8mmini.dtb

This is the list of the binary files that will be used by the script:

dvdk@vagrant:~/desk-mx-l/sdcard$ ls -laR
.:
total 734040
drwxrwxr-x 3 dvdk dvdk      4096 Feb 16 09:41 .
drwxr-xr-x 7 dvdk dvdk      4096 Feb 16 09:21 ..
drwxrwxr-x 2 dvdk dvdk      4096 Feb 16 09:41 binaries
-rwxrwxr-x 1 dvdk dvdk 743273295 Feb 16 09:34 dave-image-devel-desk-mx8mp.tar.bz2
-rw-r--r-- 1 root root   8355840 Feb 16 09:32 flash.bin
-rwxrwxr-x 1 dvdk dvdk      1908 Feb 16 09:22 mksd.sh

./binaries:
total 27604
drwxrwxr-x 2 dvdk dvdk     4096 Feb 16 09:41 .
drwxrwxr-x 3 dvdk dvdk     4096 Feb 16 09:41 ..
-rw-rw-r-- 1 dvdk dvdk      695 Feb 16 09:41 boot.scr
-rw-r--r-- 1 dvdk dvdk 28150272 Feb 16 09:35 Image
-rw-r--r-- 1 dvdk dvdk    40521 Feb 16 09:35 imx8mm-mito8mmini.dtb
-rw-r--r-- 1 dvdk dvdk    58111 Feb 16 09:35 imx8mp-mito8mplus-cb1001.dtb
dvdk@vagrant:~/desk-mx-l/sdcard$ 

You can now run the script, by passing the following parameters:

  • Device file of the microSD card (/dev/sdb in the example)
  • Boot image
  • Path of the directory containing the bootscript file, the Linux kernel image, and the device tree blob files
  • Archive of the target's root file system (compressed as .tar.bz2 file).
dvdk@vagrant:~/desk-mx-l/sdcard$ sudo ./mksd.sh /dev/sdb flash.bin binaries/ dave-image-devel-desk-mx8mp.tar.bz2
All data on /dev/sdb now will be destroyed! Continue? [y/n]
y
[Partitioning /dev/sdb...]
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 3.03198 s, 346 kB/s
DISK SIZE - 15931539456 bytes
Checking that no-one is using this disk right now ... OK

Disk /dev/sdb: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

>>> Created a new DOS disklabel with disk identifier 0xcd2d3b4e.
Created a new partition 1 of type 'W95 FAT32 (LBA)' and of size 8 GiB.
/dev/sdb2: Created a new partition 2 of type 'Linux' and of size 6.9 GiB.
/dev/sdb3: 
New situation:

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sdb1  *       32768 16777215 16744448    8G  c W95 FAT32 (LBA)
/dev/sdb2       16777216 31116287 14339072  6.9G 83 Linux

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
[Making filesystems...]
mkfs.fat 3.0.28 (2015-05-16)
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 1792384 4k blocks and 448800 inodes
Filesystem UUID: ce8daece-3f58-4b43-bd11-7bafd10bba73
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

[Copying files...]
'binaries/boot.scr' -> '/mnt/boot.scr'
'binaries/Image' -> '/mnt/Image'
'binaries/imx8mm-mito8mmini.dtb' -> '/mnt/imx8mm-mito8mmini.dtb'
'binaries/imx8mp-mito8mplus-cb1001.dtb' -> '/mnt/imx8mp-mito8mplus-cb1001.dtb'
[Extracting rfs (this may take a while...)]
[Programming flash.bin]
8160+0 records in
8160+0 records out
8355840 bytes (8.4 MB, 8.0 MiB) copied, 24.2775 s, 344 kB/s
[Done]
dvdk@vagrant:~/desk-mx-l/sdcard$ 

[1] In case you have a different size, you'll need to change the sfdisk parameters accordingly.

boot.scr[edit | edit source]

Once you got the new binaries compiled from your modified sources, they have to be installed on the first SD partition preserving the original file names used into boot.scr u-boot bootscript.

Here below there is an example on how to create a boot.scr file from the bootscript.txt for booting from SD card:

echo 'bootscript generated with command "mkimage -A ARM -T script -C none -n DESK-MX8M -d bootscript.txt boot.scr"'

setenv fdtfile imx8mp-mito8mplus-cb1001.dtb
setenv bootfile Image
setenv mmc_loadk 'fatload mmc ${sd_dev}:1 ${loadaddr} ${bootfile}'
setenv mmc_loadfdt 'fatload mmc ${sd_dev}:1 ${fdt_addr} ${fdtfile}'
setenv mmcboot 'run mmc_loadk; run mmc_loadfdt; run bootk'
setenv bootargs 'console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200 root=/dev/mmcblk1p2'
setenv bootk 'booti ${loadaddr} - ${fdt_addr}'

echo Booting DESK-MX8M via mmcboot with ${fdtfile} as device tree

run mmcboot

echo mmcboot FAILURE
echo 'bootscript generated with command "mkimage -A ARM -T script -C none -n DESK-MX8M -d bootscript.txt boot.scr"'

setenv fdtfile imx8mm-mito8mmini.dtb
setenv bootfile Image
setenv mmc_loadk 'fatload mmc ${sd_dev}:1 ${loadaddr} ${bootfile}'
setenv mmc_loadfdt 'fatload mmc ${sd_dev}:1 ${fdt_addr} ${fdtfile}'
setenv mmcboot 'run mmc_loadk; run mmc_loadfdt; run bootk'
setenv bootargs 'console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200 root=/dev/mmcblk1p2'
setenv bootk 'booti ${loadaddr} - ${fdt_addr}'

echo Booting DESK-MX8M via mmcboot with ${fdtfile} as device tree

run mmcboot

echo mmcboot FAILURE

and compile it using:

mkimage -A ARM -T script -C none -n DESK-MX8M -d bootscript.txt boot.scr

Then copy the boot.scr into the <binaries_dir> directories used by the script to create the SD card.