我正在尝试使用 i.MX6Q 从我的定制板上的 SPI-NOR 存储设备启动,但似乎有几件事我不太明白。
1. 我是使用 mtdparts 还是 devicetree 对我的旋量内存进行分区?有什么区别?
2. 当我使用 sf write 将我的文件加载到我的闪存中时,我能否写入特定分区?还是必须是静态地址?
3. Yocto 默认为 sd/emmc 内存设备生成一个 wic 文件。SPI-NOR 内存有类似的东西吗?fi
timages 有用吗?
4. 由于 uuu 强制 bootcmd=fastboot 0,我如何将其更改为从我的 SPI-NOR 闪存加载?我需要 2 个不同版本的 u-boot 吗?一个运行 uuu,另一个让
开发板通过 SPI-NOR 启动。
我目前正在使用 IMAGE_FSTYPES="cpio" 生成 cpio rootfs。
我只能在 RAM 中通过 USB 从 u-boot 启动。
我设法使用设备树对我的 SPI-NOR 内存进行分区,我可以在我的 /dev 文件夹中看到 mtdblock0-2
我应该如何继续从 SPI-NOR 启动,而不是一直依赖 USB 启动?
这是我的 UUU 脚本:
uuu_version 1.2.39
# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ
SDP: boot -f u-boot.imx
# Initialize SPI Flash
FB: ucmd sf probe ${spi_bus}
# Bootloader
FB: ucmd setenv fastboot_buffer ${loadaddr}
FB: download -f u-boot.imx
FB[-t 1000000]: ucmd sf write ${fastboot_buffer} 0x400 0x${filesize}
FB: ucmd echo uboot done
# zImage
FB: ucmd setenv fastboot_buffer ${loadaddr}
FB: download -f zImage.bin
FB[-t 1000000]: ucmd sf write ${fastboot_buffer} 0x100000 0x${filesize}
FB: ucmd echo zImage done
# Device Tree
FB: ucmd setenv fastboot_buffer ${fdt_addr}
FB: download -f imx6q-spw.dtb
FB[-t 1000000]: ucmd sf write ${fastboot_buffer} 0xB00000 0x${fastboot_bytes}
FB: ucmd echo dtb done
# RootFS
FB: ucmd setenv fastboot_buffer 0x12C000000
FB: download -f rfs.rootfs.cpio
FB[-t 1000000]: ucmd sf write ${fastboot_buffer} 0xC00000 0x${fastboot_bytes}
FB: ucmd echo rootfs done
# Boot
FB[-t 1000000]: ucmd sf read ${loadaddr} 0x100000 0x68b2e8
FB[-t 1000000]: ucmd sf read ${fdt_addr} 0xB00000 0x84e7
FB[-t 1000000]: ucmd sf read ${ramdisk_addr} 0xC00000 0x1a14440
#FB: acmd bootz ${loadaddr} - ${fdt_addr}
FB: acmd bootz ${loadaddr} ${ramdisk_addr} ${fdt_addr}