This demo for all(bootloader, device tree, Linux kernel, rootfs) in spi.
It uses raw read(sf read)/raw write(sf write in uuu script) to achieve that.
sf probe 0;
sf read ${fdt_addr} 0x500000 0x100000;
sf read ${loadaddr} 0x600000 0x1E00000;
sf read ${initrd_addr} 0x2400000 0x600000;
setenv bootargs console=${console},${baudrate} earlycon=${earlycon},${baudrate} rdinit=/linuxrc;
booti ${loadaddr} ${initrd_addr} ${fdt_addr}
|-- 0001-all-in-spi-demo-lf-5.10.72-2.2.0.patch --- patch for this demo
|-- demo_binary
| |-- flash.b0.bin --- b0 bootloader
| |-- flash.bin --- c0 bootloader
| |-- Image-imx8qxpc0mek.bin --- Linux kernel
| |-- imx8qxp-mek.dtb --- device tree
| |-- uramdisk_boot.rootfs.aarch64.img --- ram disk
| |-- uuu.qspi.all.b0.uuu --- uuu script for b0
| `-- uuu.qspi.all.uuu --- uuu script for c0
`-- readme.txt --- this file
# The spi layout used is:
# - --------- --------------------------------------------
# | | flash.bin | env | dtb | Image |rootfs|
# - --------------- --------------------------------------
# ^ ^ ^ ^ ^ ^ ^
# | | | | | | |
# 0 4kiB 4MiB 5MiB 6MiB 36MiB 42MiB
0x1000 0x400000 0x500000 0x600000 0x2400000
Test:
HW: i.MX8QXP MEK
SW: lf-5.10.72-2.2.0 + 0001-all-in-spi-demo-lf-5.10.72-2.2.0.patch
Test log:
SF: Detected mt35xu512aba with page size 256 Bytes, erase size 128 KiB, total 64 MiB
device 0 offset 0x500000, size 0x100000
SF: 1048576 bytes @ 0x500000 Read: OK
device 0 offset 0x600000, size 0x1e00000
SF: 31457280 bytes @ 0x600000 Read: OK
device 0 offset 0x2400000, size 0x600000
SF: 6291456 bytes @ 0x2400000 Read: OK
[ 4.787552] imx6q-pcie 5f010000.pcie: unable to add pcie port.
[ 4.797467] Freeing unused kernel memory: 2944K
[ 4.807379] Run /linuxrc as init process
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Starting network: OK
/bin/sh: can't access tty; job control turned off
/ #