[OpenWrt-Devel] [PATCH 1/4] uboot-imx6: Add support for Toradex Apalis board family

Petr Štetiar ynezz at true.cz
Thu Apr 4 09:10:32 EDT 2019


I'm adding SDP filesize patch as I plan to use recovery/factory flashing
with imx_usb and SDP.

Signed-off-by: Petr Štetiar <ynezz at true.cz>
---
 package/boot/uboot-imx6/Makefile                   |   7 ++
 ...apalis-Make-the-boot-process-more-generic.patch | 127 +++++++++++++++++++++
 2 files changed, 134 insertions(+)
 create mode 100644 package/boot/uboot-imx6/patches/0001-imx6-apalis-Make-the-boot-process-more-generic.patch

diff --git a/package/boot/uboot-imx6/Makefile b/package/boot/uboot-imx6/Makefile
index 25d68bf..f431afc 100644
--- a/package/boot/uboot-imx6/Makefile
+++ b/package/boot/uboot-imx6/Makefile
@@ -20,6 +20,12 @@ define U-Boot/Default
   UBOOT_IMAGE:=u-boot.imx
 endef
 
+define U-Boot/apalis_imx6
+  NAME:=Toradex Apalis
+  UBOOT_IMAGE:=SPL u-boot.img u-boot-with-spl.imx
+  UBOOT_MAKE_FLAGS:=SPL u-boot.img u-boot-with-spl.imx
+endef
+
 define U-Boot/mx6cuboxi
    NAME:=SolidRun Cubox-i boards
    UBOOT_IMAGE:=SPL u-boot.img
@@ -62,6 +68,7 @@ define U-Boot/wandboard
 endef
 
 UBOOT_TARGETS := \
+	apalis_imx6 \
 	mx6cuboxi \
 	mx6sabresd \
 	nitrogen6dl \
diff --git a/package/boot/uboot-imx6/patches/0001-imx6-apalis-Make-the-boot-process-more-generic.patch b/package/boot/uboot-imx6/patches/0001-imx6-apalis-Make-the-boot-process-more-generic.patch
new file mode 100644
index 0000000..b8e532c
--- /dev/null
+++ b/package/boot/uboot-imx6/patches/0001-imx6-apalis-Make-the-boot-process-more-generic.patch
@@ -0,0 +1,127 @@
+From 42cc2cffb6d550fbb21dad033d2564d4da571015 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz at true.cz>
+Date: Sat, 1 Dec 2018 12:46:37 +0100
+Subject: [PATCH] imx6: apalis: Make the boot process more generic
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+I'm preparing support for Apalis imx6 boards in OpenWrt and I've ended
+up with quite huge patchset against upstream U-Boot 2018.03, so I'm
+trying to propose more generic way of boot process handling.
+
+In OpenWrt we usually have kernel, dtbs and U-Boot boot script in boot
+partition with ext4fs, so for some use cases it would be handy to be
+able to replace some of the files in the boot partion, that's why I've
+added write support to the ext4.
+
+I've added `set_blkcnt` environment variable which is needed for every
+`mmc write` command as we need to always specify size in block count.
+This is copy&pasted from official Toradex's flashing scripts, so all the
+credits for this work belongs to them.
+
+Currently the rootfs location is passed via mmcblk number and the
+problem with this approach is that the mmcblk number for the boot device
+changes depending on the kernel version and imx6 SoC type.  In order to
+avoid such issues, use the UUID method to specify the rootfs location.
+
+I've added new boot sequence, where we first try to load and run boot
+script defined in the new `script` variable, so the boot process could
+be more generic and overridden by the distro. When the boot script isn't
+loaded, it will use the previous boot sequence so it should be backward
+compatible.
+
+For the recovery purposes and better end user experience I've added boot
+from SDP as the last boot command if every other boot option fails. I
+plan to use SDP as official flashing/recovery procedure in OpenWrt for
+Apalis imx6 boards.
+
+I've copy&pasted almost everything from the `f086812a mx6sxsabresd: Use
+PARTUUID to specify the rootfs location` commit, so credits for the rest
+of this patch belongs to Fabio.
+
+Cc: Stefan Agner <stefan.agner at toradex.com>
+Cc: Max Krummenacher <max.krummenacher at toradex.com>
+Signed-off-by: Petr Štetiar <ynezz at true.cz>
+---
+ configs/apalis_imx6_defconfig |  2 ++
+ include/configs/apalis_imx6.h | 26 +++++++++++++++++++++-----
+ 2 files changed, 23 insertions(+), 5 deletions(-)
+
+diff --git a/configs/apalis_imx6_defconfig b/configs/apalis_imx6_defconfig
+index 133fc1a..279d39f 100644
+--- a/configs/apalis_imx6_defconfig
++++ b/configs/apalis_imx6_defconfig
+@@ -39,6 +39,7 @@ CONFIG_CMD_DFU=y
+ CONFIG_CMD_GPIO=y
+ CONFIG_CMD_I2C=y
+ CONFIG_CMD_MMC=y
++CONFIG_CMD_PART=y
+ CONFIG_CMD_USB=y
+ CONFIG_CMD_USB_SDP=y
+ CONFIG_CMD_USB_MASS_STORAGE=y
+@@ -48,6 +49,7 @@ CONFIG_CMD_PING=y
+ CONFIG_CMD_BMP=y
+ CONFIG_CMD_CACHE=y
+ CONFIG_CMD_EXT4=y
++CONFIG_CMD_EXT4_WRITE=y
+ CONFIG_CMD_FAT=y
+ CONFIG_CMD_FS_GENERIC=y
+ CONFIG_ENV_IS_IN_MMC=y
+diff --git a/include/configs/apalis_imx6.h b/include/configs/apalis_imx6.h
+index 135b3c9..3601891 100644
+--- a/include/configs/apalis_imx6.h
++++ b/include/configs/apalis_imx6.h
+@@ -142,9 +142,9 @@
+ 	"imx6q-colibri-cam-eval-v3.dtb fat 0 1"
+ 
+ #define EMMC_BOOTCMD \
+-	"emmcargs=ip=off root=/dev/mmcblk0p2 rw,noatime rootfstype=ext3 " \
++	"emmcargs=ip=off root=PARTUUID=${uuid} rw,noatime rootfstype=ext3 " \
+ 		"rootwait\0" \
+-	"emmcboot=run setup; " \
++	"emmcboot=run setup; run finduuid;" \
+ 		"setenv bootargs ${defargs} ${emmcargs} ${setupargs} " \
+ 		"${vidargs}; echo Booting from internal eMMC chip...; "	\
+ 		"run emmcdtbload; load mmc 0:1 ${kernel_addr_r} " \
+@@ -201,10 +201,17 @@
+ #define FDT_FILE "imx6q-apalis_v1_0-eval.dtb"
+ #endif
+ #define CONFIG_EXTRA_ENV_SETTINGS \
+-	"bootcmd=run emmcboot ; echo ; echo emmcboot failed ; " \
++	"script=boot.scr\0" \
++	"finduuid=part uuid mmc 0:2 uuid\0" \
++	"loadbootscript=" \
++		"load mmc 0:1 ${loadaddr} ${script};\0" \
++	"bootscript=echo Running bootscript from mmc ...; " \
++		"source\0" \
++	"bootcmd_default=run emmcboot ; echo ; echo emmcboot failed ; " \
+ 		"run nfsboot ; echo ; echo nfsboot failed ; " \
+ 		"usb start ;" \
+-		"setenv stdout serial,vga ; setenv stdin serial,usbkbd\0" \
++		"setenv stdout serial,vga ; setenv stdin serial,usbkbd;" \
++		"sdp 0\0" \
+ 	"boot_file=uImage\0" \
+ 	"console=ttymxc0\0" \
+ 	"defargs=enable_wait_mode=off vmalloc=400M\0" \
+@@ -232,7 +239,16 @@
+ 	"vidargs=mxc_hdmi.only_cea=1 " \
+ 		"video=mxcfb0:dev=hdmi,1920x1080M at 60,if=RGB24 " \
+ 		"video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off " \
+-		"fbmem=32M\0 "
++		"fbmem=32M\0 " \
++	"set_blkcnt=setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt ${blkcnt} / 0x200\0"
++
++#define CONFIG_BOOTCOMMAND \
++	   "mmc dev 0;" \
++	   "if run loadbootscript; then " \
++		   "run bootscript; " \
++	   "else " \
++		   "run bootcmd_default; " \
++	   "fi; "
+ 
+ /* Miscellaneous configurable options */
+ #undef CONFIG_SYS_CBSIZE
+-- 
+1.9.1
+
-- 
1.9.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list