[OpenWrt-Devel] [PATCH 4/9] sunxi: switch to lzma compressed fit image

Oskari Lemmela oskari at lemmela.net
Mon Jan 14 12:54:24 EST 2019


Use LZMA compressed fit image to load kernel and dtb.
Fit image can be used load kernel and dtb from SPI flash.

Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
---
 package/boot/uboot-sunxi/uEnv-a64.txt      |  5 ++-
 package/boot/uboot-sunxi/uEnv-default.txt  |  5 ++-
 package/boot/uboot-sunxi/uEnv-pangolin.txt |  5 ++-
 target/linux/sunxi/Makefile                |  2 +-
 target/linux/sunxi/cortexa53/target.mk     |  1 -
 target/linux/sunxi/image/Makefile          | 17 +++++++---
 target/linux/sunxi/image/cortex-a53.mk     | 25 ++++-----------
 target/linux/sunxi/image/cortex-a7.mk      | 36 +++++++++++-----------
 target/linux/sunxi/image/cortex-a8.mk      | 11 ++++---
 9 files changed, 49 insertions(+), 58 deletions(-)

diff --git a/package/boot/uboot-sunxi/uEnv-a64.txt b/package/boot/uboot-sunxi/uEnv-a64.txt
index 7a717fdc0f..713f4fbdc3 100644
--- a/package/boot/uboot-sunxi/uEnv-a64.txt
+++ b/package/boot/uboot-sunxi/uEnv-a64.txt
@@ -1,5 +1,4 @@
-setenv loadkernel fatload mmc 0 \$kernel_addr_r uImage
-setenv loaddtb fatload mmc 0 \$fdt_addr_r dtb
+setenv loadkernel fatload mmc 0 \$ramdisk_addr_r uImage
 setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait earlycon=uart,mmio32,0x01c28000
-setenv uenvcmd run loadkernel \&\& run loaddtb \&\& booti \$kernel_addr_r - \$fdt_addr_r
+setenv uenvcmd run loadkernel \&\& bootm \$ramdisk_addr_r
 run uenvcmd
diff --git a/package/boot/uboot-sunxi/uEnv-default.txt b/package/boot/uboot-sunxi/uEnv-default.txt
index e024954516..ac478f9635 100644
--- a/package/boot/uboot-sunxi/uEnv-default.txt
+++ b/package/boot/uboot-sunxi/uEnv-default.txt
@@ -1,6 +1,5 @@
 setenv fdt_high ffffffff
-setenv loadkernel fatload mmc 0 \$kernel_addr_r uImage
-setenv loaddtb fatload mmc 0 \$fdt_addr_r dtb
+setenv loadkernel fatload mmc 0 \$ramdisk_addr_r uImage
 setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
-setenv uenvcmd run loadkernel \&\& run loaddtb \&\& bootm \$kernel_addr_r - \$fdt_addr_r
+setenv uenvcmd run loadkernel \&\& bootm \$ramdisk_addr_r
 run uenvcmd
diff --git a/package/boot/uboot-sunxi/uEnv-pangolin.txt b/package/boot/uboot-sunxi/uEnv-pangolin.txt
index 9c4fa11220..2d4651c7a9 100644
--- a/package/boot/uboot-sunxi/uEnv-pangolin.txt
+++ b/package/boot/uboot-sunxi/uEnv-pangolin.txt
@@ -1,6 +1,5 @@
 setenv fdt_high ffffffff
-setenv loadkernel fatload mmc 0 \$kernel_addr_r uImage
-setenv loaddtb fatload mmc 0 \$fdt_addr_r dtb
+setenv loadkernel fatload mmc 0 \$ramdisk_addr_r uImage
 setenv bootargs console=ttyS2,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
-setenv uenvcmd run loadkernel \&\& run loaddtb \&\& bootm \$kernel_addr_r - \$fdt_addr_r
+setenv uenvcmd run loadkernel \&\& bootm \$ramdisk_addr_r
 run uenvcmd
diff --git a/target/linux/sunxi/Makefile b/target/linux/sunxi/Makefile
index 8d09d4e939..b024f5e3a2 100644
--- a/target/linux/sunxi/Makefile
+++ b/target/linux/sunxi/Makefile
@@ -15,7 +15,7 @@ SUBTARGETS:=cortexa8 cortexa7 cortexa53
 MAINTAINER:=Zoltan HERPAI <wigyori at uid0.hu>
 
 KERNEL_PATCHVER:=4.14
-KERNELNAME:=zImage dtbs
+KERNELNAME:=Image dtbs
 
 # A10: Cortex-A8
 # A13: Cortex-A8
diff --git a/target/linux/sunxi/cortexa53/target.mk b/target/linux/sunxi/cortexa53/target.mk
index 6715d00bda..4e2c320bc0 100644
--- a/target/linux/sunxi/cortexa53/target.mk
+++ b/target/linux/sunxi/cortexa53/target.mk
@@ -10,4 +10,3 @@ include $(TOPDIR)/rules.mk
 ARCH:=aarch64
 BOARDNAME:=Allwinner A64
 CPU_TYPE:=cortex-a53
-KERNELNAME:=Image dtbs
diff --git a/target/linux/sunxi/image/Makefile b/target/linux/sunxi/image/Makefile
index 8f95c61906..b24cf70928 100644
--- a/target/linux/sunxi/image/Makefile
+++ b/target/linux/sunxi/image/Makefile
@@ -11,14 +11,11 @@ include $(INCLUDE_DIR)/image.mk
 FAT32_BLOCK_SIZE=1024
 FAT32_BLOCKS=$(shell echo $$(($(CONFIG_SUNXI_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE))))
 
-KERNEL_LOADADDR:=0x40008000
-
 define Build/sunxi-sdcard
 	rm -f $@.boot
 	mkfs.fat $@.boot -C $(FAT32_BLOCKS)
 
 	mcopy -i $@.boot $(STAGING_DIR_IMAGE)/$(DEVICE_NAME)-boot.scr ::boot.scr
-	mcopy -i $@.boot $(DTS_DIR)/$(SUNXI_DTS).dtb ::dtb
 	mcopy -i $@.boot $(IMAGE_KERNEL) ::uImage
 	./gen_sunxi_sdcard_img.sh $@ \
 		$@.boot \
@@ -33,12 +30,22 @@ endef
 define Device/Default
   PROFILES := Default
   DEVICE_VARS := SUNXI_DTS SUNXI_UBOOT
-  KERNEL_NAME := zImage
-  KERNEL := kernel-bin | uImage none
+  KERNEL_NAME := Image
+  SUNXI_DTS := $(1)
   IMAGES := sdcard.img.gz
   IMAGE/sdcard.img.gz := sunxi-sdcard | append-metadata | gzip
 endef
 
+define Device/FitImageLzma
+  KERNEL_LOADADDR:=0x42000000
+  KERNEL = kernel-bin | lzma | fit lzma $$(DTS_DIR)/$$(SUNXI_DTS).dtb
+endef
+
+define Device/FitImageLzma64
+  KERNEL_LOADADDR:=0x40080000
+  KERNEL = kernel-bin | lzma | fit lzma $$(DTS_DIR)/allwinner/$$(SUNXI_DTS).dtb
+endef
+
 include cortex-a7.mk
 include cortex-a8.mk
 include cortex-a53.mk
diff --git a/target/linux/sunxi/image/cortex-a53.mk b/target/linux/sunxi/image/cortex-a53.mk
index 65551407ce..c7f3fa5733 100644
--- a/target/linux/sunxi/image/cortex-a53.mk
+++ b/target/linux/sunxi/image/cortex-a53.mk
@@ -8,62 +8,49 @@
 ifeq ($(SUBTARGET),cortexa53)
 
 define Device/sun50i-h5-nanopi-neo-plus2
+  $(call Device/FitImageLzma64)
   DEVICE_TITLE:=Nanopi NEO Plus2 (H5)
   SUPPORTED_DEVICES:=nanopi-neo-plus2
-  SUNXI_DTS:=allwinner/sun50i-h5-nanopi-neo-plus2
-  KERNEL_NAME := Image
-  KERNEL := kernel-bin
 endef
 
 TARGET_DEVICES += sun50i-h5-nanopi-neo-plus2
 
 define Device/sun50i-h5-nanopi-neo2
+  $(call Device/FitImageLzma64)
   DEVICE_TITLE:=Nanopi NEO2 (H5)
   SUPPORTED_DEVICES:=nanopi-neo2
-  SUNXI_DTS:=allwinner/sun50i-h5-nanopi-neo2
-  KERNEL_NAME := Image
-  KERNEL := kernel-bin
 endef
 
 TARGET_DEVICES += sun50i-h5-nanopi-neo2
 
 define Device/sun50i-a64-pine64-plus
+  $(call Device/FitImageLzma64)
   DEVICE_TITLE:=Pine64 Plus A64
   SUPPORTED_DEVICES:=pine64,pine64-plus
-  SUNXI_DTS:=allwinner/sun50i-a64-pine64-plus
-  KERNEL_NAME := Image
-  KERNEL := kernel-bin
 endef
 
 TARGET_DEVICES += sun50i-a64-pine64-plus
 
 define Device/sun50i-a64-sopine-baseboard
+  $(call Device/FitImageLzma64)
   DEVICE_TITLE:=Pine64 Sopine
   SUPPORTED_DEVICES:=pine64,sopine-baseboard
-  SUNXI_DTS:=allwinner/sun50i-a64-sopine-baseboard
-  KERNEL_NAME := Image
-  KERNEL := kernel-bin
 endef
 
 TARGET_DEVICES += sun50i-a64-sopine-baseboard
 
-
 define Device/sun50i-h5-orangepi-zero-plus
+  $(call Device/FitImageLzma64)
   DEVICE_TITLE:=Xunlong Orange Pi Zero Plus
   SUPPORTED_DEVICES:=xunlong,orangepi-zero-plus
-  SUNXI_DTS:=allwinner/sun50i-h5-orangepi-zero-plus
-  KERNEL_NAME := Image
-  KERNEL := kernel-bin
 endef
 
 TARGET_DEVICES += sun50i-h5-orangepi-zero-plus
 
 define Device/sun50i-h5-orangepi-pc2
+  $(call Device/FitImageLzma64)
   DEVICE_TITLE:=Xunlong Orange Pi PC2
   SUPPORTED_DEVICES:=xunlong,orangepi-pc2
-  SUNXI_DTS:=allwinner/sun50i-h5-orangepi-pc2
-  KERNEL_NAME := Image
-  KERNEL := kernel-bin
 endef
 
 TARGET_DEVICES += sun50i-h5-orangepi-pc2
diff --git a/target/linux/sunxi/image/cortex-a7.mk b/target/linux/sunxi/image/cortex-a7.mk
index 969864bb76..30b137a117 100644
--- a/target/linux/sunxi/image/cortex-a7.mk
+++ b/target/linux/sunxi/image/cortex-a7.mk
@@ -9,180 +9,180 @@
 ifeq ($(SUBTARGET),cortexa7)
 
 define Device/sun7i-a20-olinuxino-lime
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Olimex A20-OLinuXino-LIME
   DEVICE_PACKAGES:=kmod-ata-core kmod-ata-sunxi kmod-rtc-sunxi
   SUPPORTED_DEVICES:=olimex,a20-olinuxino-lime
-  SUNXI_DTS:=sun7i-a20-olinuxino-lime
 endef
 
 TARGET_DEVICES += sun7i-a20-olinuxino-lime
 
 
 define Device/sun7i-a20-olinuxino-lime2
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Olimex A20-OLinuXino-LIME2
   DEVICE_PACKAGES:=kmod-ata-core kmod-ata-sunxi kmod-rtc-sunxi kmod-usb-hid
   SUPPORTED_DEVICES:=olimex,a20-olinuxino-lime2
-  SUNXI_DTS:=sun7i-a20-olinuxino-lime2
 endef
 
 TARGET_DEVICES += sun7i-a20-olinuxino-lime2
 
 
 define Device/sun7i-a20-olinuxino-lime2-emmc
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Olimex A20-OLinuXino-LIME2-eMMC
   DEVICE_PACKAGES:=kmod-ata-core kmod-ata-sunxi kmod-rtc-sunxi kmod-usb-hid
   SUPPORTED_DEVICES:=olimex,a20-olinuxino-lime2-emmc
-  SUNXI_DTS:=sun7i-a20-olinuxino-lime2-emmc
 endef
 
 TARGET_DEVICES += sun7i-a20-olinuxino-lime2-emmc
 
 
 define Device/sun7i-a20-olinuxino-micro
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Olimex A20-Olinuxino Micro
   DEVICE_PACKAGES:=kmod-ata-core kmod-ata-sunxi kmod-sun4i-emac kmod-rtc-sunxi
   SUPPORTED_DEVICES:=olimex,a20-olinuxino-micro
-  SUNXI_DTS:=sun7i-a20-olinuxino-micro
 endef
 
 TARGET_DEVICES += sun7i-a20-olinuxino-micro
 
 
 define Device/sun7i-a20-bananapi
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=LeMaker Banana Pi
   DEVICE_PACKAGES:=kmod-rtc-sunxi kmod-ata-core kmod-ata-sunxi
   SUPPORTED_DEVICES:=lemaker,bananapi
-  SUNXI_DTS:=sun7i-a20-bananapi
 endef
 
 TARGET_DEVICES += sun7i-a20-bananapi
 
 
 define Device/sun7i-a20-bananapro
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=LeMaker Banana Pro
   DEVICE_PACKAGES:=kmod-rtc-sunxi kmod-ata-core kmod-ata-sunxi kmod-brcmfmac
   SUPPORTED_DEVICES:=lemaker,bananapro
-  SUNXI_DTS:=sun7i-a20-bananapro
 endef
 
 TARGET_DEVICES += sun7i-a20-bananapro
 
 
 define Device/sun7i-a20-cubieboard2
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Cubietech Cubieboard2
   DEVICE_PACKAGES:=kmod-ata-core kmod-ata-sunxi kmod-sun4i-emac kmod-rtc-sunxi
   SUPPORTED_DEVICES:=cubietech,cubieboard2
-  SUNXI_DTS:=sun7i-a20-cubieboard2
 endef
 
 TARGET_DEVICES += sun7i-a20-cubieboard2
 
 
 define Device/sun7i-a20-cubietruck
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Cubietech Cubietruck
   DEVICE_PACKAGES:=kmod-ata-core kmod-ata-sunxi kmod-rtc-sunxi kmod-brcmfmac
   SUPPORTED_DEVICES:=cubietech,cubietruck
-  SUNXI_DTS:=sun7i-a20-cubietruck
 endef
 
 TARGET_DEVICES += sun7i-a20-cubietruck
 
 
 define Device/sun7i-a20-lamobo-r1
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Lamobo R1
   DEVICE_PACKAGES:=kmod-ata-sunxi kmod-rtl8192cu swconfig wpad-basic
   SUPPORTED_DEVICES:=lamobo,lamobo-r1
-  SUNXI_DTS:=sun7i-a20-lamobo-r1
 endef
 
 TARGET_DEVICES += sun7i-a20-lamobo-r1
 
 
 define Device/sun6i-a31-m9
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Mele M9 top set box
   DEVICE_PACKAGES:=kmod-sun4i-emac kmod-rtc-sunxi kmod-rtl8192cu
   SUPPORTED_DEVICES:=mele,m9
-  SUNXI_DTS:=sun6i-a31-m9
 endef
 
 TARGET_DEVICES += sun6i-a31-m9
 
 
 define Device/sun8i-h2-plus-orangepi-zero
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Xunlong Orange Pi Zero
   DEVICE_PACKAGES:=kmod-rtc-sunxi
   SUPPORTED_DEVICES:=xunlong,orangepi-zero
-  SUNXI_DTS:=sun8i-h2-plus-orangepi-zero
 endef
 
 TARGET_DEVICES += sun8i-h2-plus-orangepi-zero
 
 
 define Device/sun8i-h2-plus-orangepi-r1
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Xunlong Orange Pi R1
   DEVICE_PACKAGES:=kmod-rtc-sunxi kmod-usb-net kmod-usb-net-rtl8152
   SUPPORTED_DEVICES:=xunlong,orangepi-r1
-  SUNXI_DTS:=sun8i-h2-plus-orangepi-r1
 endef
 
 TARGET_DEVICES += sun8i-h2-plus-orangepi-r1
 
 
 define Device/sun8i-h3-nanopi-m1-plus
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=FriendlyArm NanoPi M1 Plus
   DEVICE_PACKAGES:=kmod-rtc-sunxi \
 	kmod-leds-gpio kmod-ledtrig-heartbeat \
 	kmod-brcmfmac brcmfmac-firmware-43430-sdio wpad-basic
   SUPPORTED_DEVICES:=friendlyarm,nanopi-m1-plus
-  SUNXI_DTS:=sun8i-h3-nanopi-m1-plus
 endef
 
 TARGET_DEVICES += sun8i-h3-nanopi-m1-plus
 
 
 define Device/sun8i-h3-nanopi-neo
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=FriendlyARM NanoPi NEO
   SUPPORTED_DEVICES:=friendlyarm,nanopi-neo
-  SUNXI_DTS:=sun8i-h3-nanopi-neo
 endef
 
 TARGET_DEVICES += sun8i-h3-nanopi-neo
 
 
 define Device/sun8i-h3-orangepi-pc
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Xunlong Orange Pi PC
   DEVICE_PACKAGES:=kmod-rtc-sunxi kmod-gpio-button-hotplug
   SUPPORTED_DEVICES:=xunlong,orangepi-pc
-  SUNXI_DTS:=sun8i-h3-orangepi-pc
 endef
 
 TARGET_DEVICES += sun8i-h3-orangepi-pc
 
 
 define Device/sun8i-h3-orangepi-plus
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Xunlong Orange Pi Plus
   DEVICE_PACKAGES:=kmod-rtc-sunxi
   SUPPORTED_DEVICES:=xunlong,orangepi-plus
-  SUNXI_DTS:=sun8i-h3-orangepi-plus
 endef
 
 TARGET_DEVICES += sun8i-h3-orangepi-plus
 
 define Device/sun8i-h3-orangepi-2
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Xunlong Orange Pi 2
   DEVICE_PACKAGES:=kmod-rtc-sunxi
   SUPPORTED_DEVICES:=xunlong,orangepi-2
-  SUNXI_DTS:=sun8i-h3-orangepi-2
 endef
 
 TARGET_DEVICES += sun8i-h3-orangepi-2
 
 
 define Device/sun7i-a20-pcduino3
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=LinkSprite pcDuino3
   DEVICE_PACKAGES:=kmod-sun4i-emac kmod-rtc-sunxi kmod-ata-core kmod-ata-sunxi kmod-rtl8xxxu rtl8188eu-firmware
   SUPPORTED_DEVICES:=linksprite,pcduino3
-  SUNXI_DTS:=sun7i-a20-pcduino3
 endef
 
 TARGET_DEVICES += sun7i-a20-pcduino3
diff --git a/target/linux/sunxi/image/cortex-a8.mk b/target/linux/sunxi/image/cortex-a8.mk
index 564a66f938..71a3d97265 100644
--- a/target/linux/sunxi/image/cortex-a8.mk
+++ b/target/linux/sunxi/image/cortex-a8.mk
@@ -8,16 +8,17 @@
 ifeq ($(SUBTARGET),cortexa8)
 
 define Device/sun4i-a10-olinuxino-lime
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Olimex A10-OLinuXino-LIME
   DEVICE_PACKAGES:=kmod-ata-core kmod-ata-sunxi kmod-sun4i-emac kmod-rtc-sunxi
   SUPPORTED_DEVICES:=olimex,a10-olinuxino-lime
-  SUNXI_DTS:=sun4i-a10-olinuxino-lime
 endef
 
 TARGET_DEVICES += sun4i-a10-olinuxino-lime
 
 
 define Device/sun5i-a13-olimex-som
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Olimex A13 SOM
   DEVICE_PACKAGES:=kmod-rtl8192cu
   SUPPORTED_DEVICES:=olimex,a13-olinuxino
@@ -28,40 +29,40 @@ TARGET_DEVICES += sun5i-a13-olimex-som
 
 
 define Device/sun5i-a13-olinuxino
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Olimex A13-Olinuxino
   DEVICE_PACKAGES:=kmod-rtl8192cu
   SUPPORTED_DEVICES:=olimex,a13-olinuxino
-  SUNXI_DTS:=sun5i-a13-olinuxino
 endef
 
 TARGET_DEVICES += sun5i-a13-olinuxino
 
 
 define Device/sun4i-a10-cubieboard
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=Cubietech Cubieboard
   DEVICE_PACKAGES:=kmod-ata-core kmod-ata-sunxi kmod-sun4i-emac kmod-rtc-sunxi
   SUPPORTED_DEVICES:=cubietech,a10-cubieboard
-  SUNXI_DTS:=sun4i-a10-cubieboard
 endef
 
 TARGET_DEVICES += sun4i-a10-cubieboard
 
 
 define Device/sun4i-a10-pcduino
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=LinkSprite pcDuino
   DEVICE_PACKAGES:=kmod-sun4i-emac kmod-rtc-sunxi kmod-rtl8192cu
   SUPPORTED_DEVICES:=linksprite,a10-pcduino
-  SUNXI_DTS:=sun4i-a10-pcduino
 endef
 
 TARGET_DEVICES += sun4i-a10-pcduino
 
 
 define Device/sun4i-a10-marsboard
+  $(call Device/FitImageLzma)
   DEVICE_TITLE:=HAOYU Electronics Marsboard A10
   DEVICE_PACKAGES:=mod-ata-core kmod-ata-sunxi kmod-sun4i-emac kmod-rtc-sunxi sound-soc-sunxi
   SUPPORTED_DEVICES:=marsboard,a10-marsboard
-  SUNXI_DTS:=sun4i-a10-marsboard
 endef
 
 TARGET_DEVICES += sun4i-a10-marsboard
-- 
2.17.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