From 3eec6b92552edcc6ef132ddc326d45481a758a81 Mon Sep 17 00:00:00 2001 From: Han Xu Date: Wed, 26 Jul 2023 15:29:51 -0500 Subject: [PATCH] Add new built-in command to burn images to spi-nand Support to burn boot images to spi-nand with u-boot fspinand cmd. Signed-off-by: Han Xu --- msvc/uuu-static-link.vcxproj | 12 ++++++++++++ msvc/uuu.vcxproj | 12 ++++++++++++ uuu/CMakeLists.txt | 1 + uuu/buildincmd.cpp | 5 +++++ uuu/fspinand_burn_loader.lst | 36 ++++++++++++++++++++++++++++++++++++ 5 files changed, 66 insertions(+) create mode 100644 uuu/fspinand_burn_loader.lst diff --git a/msvc/uuu-static-link.vcxproj b/msvc/uuu-static-link.vcxproj index f8bc371f..be7ac51e 100644 --- a/msvc/uuu-static-link.vcxproj +++ b/msvc/uuu-static-link.vcxproj @@ -128,6 +128,9 @@ echo )####^" >> $(SolutionDir)\..\uuu\emmc_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\qspi_burn_loader.clst type $(SolutionDir)\..\uuu\qspi_burn_loader.lst >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst echo )####^" >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst +echo R^"####( > $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +type $(SolutionDir)\..\uuu\fspinand_burn_loader.lst >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +echo )####^" >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\nvme_burn_all.clst type $(SolutionDir)\..\uuu\nvme_burn_all.lst >> $(SolutionDir)\..\uuu\nvme_burn_all.clst echo )####^" >> $(SolutionDir)\..\uuu\nvme_burn_all.clst @@ -181,6 +184,9 @@ echo )####^" >> $(SolutionDir)\..\uuu\emmc_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\qspi_burn_loader.clst type $(SolutionDir)\..\uuu\qspi_burn_loader.lst >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst echo )####^" >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst +echo R^"####( > $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +type $(SolutionDir)\..\uuu\fspinand_burn_loader.lst >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +echo )####^" >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\nvme_burn_all.clst type $(SolutionDir)\..\uuu\nvme_burn_all.lst >> $(SolutionDir)\..\uuu\nvme_burn_all.clst echo )####^" >> $(SolutionDir)\..\uuu\nvme_burn_all.clst @@ -237,6 +243,9 @@ echo )####^" >> $(SolutionDir)\..\uuu\emmc_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\qspi_burn_loader.clst type $(SolutionDir)\..\uuu\qspi_burn_loader.lst >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst echo )####^" >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst +echo R^"####( > $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +type $(SolutionDir)\..\uuu\fspinand_burn_loader.lst >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +echo )####^" >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\nvme_burn_all.clst type $(SolutionDir)\..\uuu\nvme_burn_all.lst >> $(SolutionDir)\..\uuu\nvme_burn_all.clst echo )####^" >> $(SolutionDir)\..\uuu\nvme_burn_all.clst @@ -293,6 +302,9 @@ echo )####^" >> $(SolutionDir)\..\uuu\emmc_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\qspi_burn_loader.clst type $(SolutionDir)\..\uuu\qspi_burn_loader.lst >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst echo )####^" >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst +echo R^"####( > $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +type $(SolutionDir)\..\uuu\fspinand_burn_loader.lst >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +echo )####^" >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\nvme_burn_all.clst type $(SolutionDir)\..\uuu\nvme_burn_all.lst >> $(SolutionDir)\..\uuu\nvme_burn_all.clst echo )####^" >> $(SolutionDir)\..\uuu\nvme_burn_all.clst diff --git a/msvc/uuu.vcxproj b/msvc/uuu.vcxproj index 714bb460..03767a64 100644 --- a/msvc/uuu.vcxproj +++ b/msvc/uuu.vcxproj @@ -124,6 +124,9 @@ echo )####^" >> $(SolutionDir)\..\uuu\emmc_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\qspi_burn_loader.clst type $(SolutionDir)\..\uuu\qspi_burn_loader.lst >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst echo )####^" >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst +echo R^"####( > $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +type $(SolutionDir)\..\uuu\fspinand_burn_loader.lst >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +echo )####^" >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\nvme_burn_all.clst type $(SolutionDir)\..\uuu\nvme_burn_all.lst >> $(SolutionDir)\..\uuu\nvme_burn_all.clst echo )####^" >> $(SolutionDir)\..\uuu\nvme_burn_all.clst @@ -177,6 +180,9 @@ echo )####^" >> $(SolutionDir)\..\uuu\emmc_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\qspi_burn_loader.clst type $(SolutionDir)\..\uuu\qspi_burn_loader.lst >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst echo )####^" >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst +echo R^"####( > $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +type $(SolutionDir)\..\uuu\fspinand_burn_loader.lst >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +echo )####^" >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\nvme_burn_all.clst type $(SolutionDir)\..\uuu\nvme_burn_all.lst >> $(SolutionDir)\..\uuu\nvme_burn_all.clst echo )####^" >> $(SolutionDir)\..\uuu\nvme_burn_all.clst @@ -235,6 +241,9 @@ echo )####^" >> $(SolutionDir)\..\uuu\emmc_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\qspi_burn_loader.clst type $(SolutionDir)\..\uuu\qspi_burn_loader.lst >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst echo )####^" >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst +echo R^"####( > $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +type $(SolutionDir)\..\uuu\fspinand_burn_loader.lst >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +echo )####^" >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\nvme_burn_all.clst type $(SolutionDir)\..\uuu\nvme_burn_all.lst >> $(SolutionDir)\..\uuu\nvme_burn_all.clst echo )####^" >> $(SolutionDir)\..\uuu\nvme_burn_all.clst @@ -293,6 +302,9 @@ echo )####^" >> $(SolutionDir)\..\uuu\emmc_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\qspi_burn_loader.clst type $(SolutionDir)\..\uuu\qspi_burn_loader.lst >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst echo )####^" >> $(SolutionDir)\..\uuu\qspi_burn_loader.clst +echo R^"####( > $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +type $(SolutionDir)\..\uuu\fspinand_burn_loader.lst >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst +echo )####^" >> $(SolutionDir)\..\uuu\fspinand_burn_loader.clst echo R^"####( > $(SolutionDir)\..\uuu\nvme_burn_all.clst type $(SolutionDir)\..\uuu\nvme_burn_all.lst >> $(SolutionDir)\..\uuu\nvme_burn_all.clst echo )####^" >> $(SolutionDir)\..\uuu\nvme_burn_all.clst diff --git a/uuu/CMakeLists.txt b/uuu/CMakeLists.txt index a2fb5ba8..d8d222de 100644 --- a/uuu/CMakeLists.txt +++ b/uuu/CMakeLists.txt @@ -28,6 +28,7 @@ set(LSTS emmc_burn_all.lst fat_write.lst qspi_burn_loader.lst + fspinand_burn_loader.lst sd_burn_loader.lst spl_boot.lst sd_burn_all.lst diff --git a/uuu/buildincmd.cpp b/uuu/buildincmd.cpp index 40e79bce..f2f22655 100644 --- a/uuu/buildincmd.cpp +++ b/uuu/buildincmd.cpp @@ -337,6 +337,11 @@ static constexpr BuiltInScriptRawData g_builtin_cmd[] = #include "qspi_burn_loader.clst" ,"burn boot loader to qspi nor flash" }, + { + "spi_nand", +#include "fspinand_burn_loader.clst" + ,"burn boot loader to spi nand flash" + }, { "sd", #include "sd_burn_loader.clst" diff --git a/uuu/fspinand_burn_loader.lst b/uuu/fspinand_burn_loader.lst new file mode 100644 index 00000000..2a31f63e --- /dev/null +++ b/uuu/fspinand_burn_loader.lst @@ -0,0 +1,36 @@ +uuu_version 1.2.39 + +# @_flexspi.bin | bootloader +# @_image [_flexspi.bin] | image burn to fspinand, default is the same as bootloader + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flexspi.bin + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM, skip QSPI header +SDPS: boot -f _flexspi.bin -skipfhdr + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flexspi.bin -offset 0x10000 -skipfhdr +SDPU: jump +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flexspi.bin -skipspl -skipfhdr +SDPV: jump +# } + +FB: ucmd setenv fastboot_buffer ${loadaddr} +FB: download -f _image + +FB: ucmd if test ! -n "$fastboot_bytes"; then setenv fastboot_bytes $filesize; else true; fi + +FB[-t 60000]: ucmd fspinand init spi-nand0 ${fastboot_buffer} ${fastboot_bytes} + +FB: done