Qualcomm SDK (QSDK) sysupgrade compatible images for IPQ40xx, IPQ806x and IPQ807x use FIT format together with 'dumpimage' tool from U-Boot for verifying and extracting them. Based on 'images' sections names, corresponding mtd partitions are flashed. For example, in case of NOR-only boards, below mapping is used (section name -> mtd name): hlos* -> 0:HLOS rootfs* -> rootfs And for boards with NAND (kernel inside UBI): ubi* -> rootfs Above mappings come from unmodified QSDK sources and might be wrong for boards running custom or modified QSDK-based firmware. Some of vendors adjust them to meet their modified mtd layout or features like recovery or dual-image support. This adds simple script 'mkits-qsdk-ipq-image.sh' (based on 'mkits.sh') for generating FIT images tree source files, compatible with the QSDK sysupgrade format. Resulting images can be used for initial (factory -> OpenWrt) installation and would work both in CLI and GUI. The script is universal in a way it allows to include as many sections as needed. To make use of it, two generic/basic build recipes for NOR and NAND based boards are also included in 'image-commands.mk': Build/qsdk-ipq-factory-nand Build/qsdk-ipq-factory-nor Example usage for board with UBI in NAND: IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>master
parent
f20fea9dcd
commit
bf4630e5ad
@ -0,0 +1,59 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
# |
||||||
|
# Licensed under the terms of the GNU GPL License version 2 or later. |
||||||
|
# Author: Piotr Dymacz <pepe2k@gmail.com>, based on mkits.sh. |
||||||
|
# |
||||||
|
# Qualcomm SDK (QSDK) sysupgrade compatible images for IPQ40xx, IPQ806x |
||||||
|
# and IPQ807x use FIT format together with 'dumpimage' tool from U-Boot |
||||||
|
# for verifying and extracting them. Based on 'images' sections names, |
||||||
|
# corresponding mtd partitions are flashed. |
||||||
|
# This is a simple script for generating FIT images tree source files, |
||||||
|
# compatible with the QSDK sysupgrade format. Resulting images can be |
||||||
|
# used for initial (factory -> OpenWrt) installation and would work |
||||||
|
# both in CLI and GUI. The script is also universal in a way it allows |
||||||
|
# to include as many sections as needed. |
||||||
|
# |
||||||
|
|
||||||
|
usage() { |
||||||
|
echo "Usage: `basename $0` output img0_name img0_file [[img1_name img1_file] ...]" |
||||||
|
exit 1 |
||||||
|
} |
||||||
|
|
||||||
|
# We need at least 3 arguments |
||||||
|
[ "$#" -lt 3 ] && usage |
||||||
|
|
||||||
|
# Target output file |
||||||
|
OUTPUT="$1"; shift |
||||||
|
|
||||||
|
# Create a default, fully populated DTS file |
||||||
|
echo "\ |
||||||
|
/dts-v1/; |
||||||
|
|
||||||
|
/ { |
||||||
|
description = \"OpenWrt factory image\"; |
||||||
|
#address-cells = <1>; |
||||||
|
|
||||||
|
images {" > ${OUTPUT} |
||||||
|
|
||||||
|
while [ -n "$1" -a -n "$2" ]; do |
||||||
|
[ -f "$2" ] || usage |
||||||
|
|
||||||
|
name="$1"; shift |
||||||
|
file="$1"; shift |
||||||
|
|
||||||
|
echo \ |
||||||
|
" ${name} { |
||||||
|
description = \"${name}\"; |
||||||
|
data = /incbin/(\"${file}\"); |
||||||
|
type = \"Firmware\"; |
||||||
|
arch = \"ARM\"; |
||||||
|
compression = \"none\"; |
||||||
|
hash@1 { |
||||||
|
algo = \"crc32\"; |
||||||
|
}; |
||||||
|
};" >> ${OUTPUT} |
||||||
|
done |
||||||
|
|
||||||
|
echo \ |
||||||
|
" }; |
||||||
|
};" >> ${OUTPUT} |
Loading…
Reference in new issue