blob: 066e8df579b70dec7a01f30daa52d1e8f0ce2ddf [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/usr/bin/env bash
2#
3# Licensed under the terms of the GNU GPL License version 2 or later.
4# Author: Piotr Dymacz <pepe2k@gmail.com>, based on mkits.sh.
5#
6# Qualcomm SDK (QSDK) sysupgrade compatible images for IPQ40xx, IPQ806x
7# and IPQ807x use FIT format together with 'dumpimage' tool from U-Boot
8# for verifying and extracting them. Based on 'images' sections names,
9# corresponding mtd partitions are flashed.
10# This is a simple script for generating FIT images tree source files,
11# compatible with the QSDK sysupgrade format. Resulting images can be
12# used for initial (factory -> OpenWrt) installation and would work
13# both in CLI and GUI. The script is also universal in a way it allows
14# to include as many sections as needed.
15#
16
17usage() {
18 echo "Usage: `basename $0` output img0_name img0_file [[img1_name img1_file] ...]"
19 exit 1
20}
21
22# We need at least 3 arguments
23[ "$#" -lt 3 ] && usage
24
25# Target output file
26OUTPUT="$1"; shift
27
28# Create a default, fully populated DTS file
29echo "\
30/dts-v1/;
31
32/ {
33 description = \"OpenWrt factory image\";
34 #address-cells = <1>;
35
36 images {" > ${OUTPUT}
37
38while [ -n "$1" -a -n "$2" ]; do
39 [ -f "$2" ] || usage
40
41 name="$1"; shift
42 file="$1"; shift
43
44 echo \
45" ${name} {
46 description = \"${name}\";
47 data = /incbin/(\"${file}\");
48 type = \"Firmware\";
49 arch = \"ARM\";
50 compression = \"none\";
51 hash@1 {
52 algo = \"crc32\";
53 };
54 };" >> ${OUTPUT}
55done
56
57echo \
58" };
59};" >> ${OUTPUT}