2 # SPDX-License-Identifier: GPL-2.0+
4 # Written by Guilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
6 # Sanity check for mkimage and dumpimage tools
10 # make O=sandbox sandbox_config
12 # ./test/image/test-imagetools.sh
15 SRCDIR=${BASEDIR}/boot
16 IMAGE_NAME="v1.0-test"
18 IMAGE_FIT_ITS=linux.its
19 IMAGE_FIT_ITB=linux.itb
23 DATAFILES="${DATAFILE0} ${DATAFILE1} ${DATAFILE2}"
25 MKIMAGE=${BASEDIR}/tools/mkimage
26 DUMPIMAGE=${BASEDIR}/tools/dumpimage
27 MKIMAGE_LIST=mkimage.list
28 DUMPIMAGE_LIST=dumpimage.list
30 # Remove all the files we created
35 for file in ${DATAFILES}; do
36 rm -f ${file} ${SRCDIR}/${file}
39 rm -f ${DUMPIMAGE_LIST}
45 # Check that two files are the same
48 if ! diff -u $1 $2; then
55 # Create some test files
61 for file in ${DATAFILES}; do
62 head -c $RANDOM /dev/urandom >${SRCDIR}/${file}
66 # Run a command, echoing it first
75 # Run a command, redirecting output
89 # Write files into an multi-file image
92 local files="${SRCDIR}/${DATAFILE0}:${SRCDIR}/${DATAFILE1}"
93 files+=":${SRCDIR}/${DATAFILE2}"
95 echo -e "\nBuilding multi-file image..."
96 do_cmd ${MKIMAGE} -A x86 -O linux -T multi -n \"${IMAGE_NAME}\" \
97 -d ${files} ${IMAGE_MULTI}
101 # Extract files from an multi-file image
102 extract_multi_image()
104 echo -e "\nExtracting multi-file image contents..."
105 do_cmd ${DUMPIMAGE} -T multi -p 0 -o ${DATAFILE0} ${IMAGE_MULTI}
106 do_cmd ${DUMPIMAGE} -T multi -p 1 -o ${DATAFILE1} ${IMAGE_MULTI}
107 do_cmd ${DUMPIMAGE} -T multi -p 2 -o ${DATAFILE2} ${IMAGE_MULTI}
108 do_cmd ${DUMPIMAGE} -T multi -p 2 -o ${TEST_OUT} ${IMAGE_MULTI}
112 # Write files into a FIT image
118 description = \"FIT image\"; \
119 #address-cells = <1>; \
123 description = \"kernel\"; \
124 data = /incbin/(\"${DATAFILE0}\"); \
126 arch = \"sandbox\"; \
128 compression = \"gzip\"; \
133 description = \"filesystem\"; \
134 data = /incbin/(\"${DATAFILE1}\"); \
135 type = \"ramdisk\"; \
136 arch = \"sandbox\"; \
138 compression = \"none\"; \
143 description = \"device tree\"; \
144 data = /incbin/(\"${DATAFILE2}\"); \
145 type = \"flat_dt\"; \
146 arch = \"sandbox\"; \
147 compression = \"none\"; \
151 default = \"conf@1\"; \
153 kernel = \"kernel@1\"; \
160 echo -e "\nBuilding FIT image..."
161 do_cmd ${MKIMAGE} -f ${IMAGE_FIT_ITS} ${IMAGE_FIT_ITB}
165 # Extract files from a FIT image
168 echo -e "\nExtracting FIT image contents..."
169 do_cmd ${DUMPIMAGE} -T flat_dt -p 0 -o ${DATAFILE0} ${IMAGE_FIT_ITB}
170 do_cmd ${DUMPIMAGE} -T flat_dt -p 1 -o ${DATAFILE1} ${IMAGE_FIT_ITB}
171 do_cmd ${DUMPIMAGE} -T flat_dt -p 2 -o ${DATAFILE2} ${IMAGE_FIT_ITB}
172 do_cmd ${DUMPIMAGE} -T flat_dt -p 2 -o ${TEST_OUT} ${IMAGE_FIT_ITB}
176 # List the contents of a file
183 echo -e "\nListing image contents..."
184 do_cmd_redir ${MKIMAGE_LIST} ${MKIMAGE} -l ${image}
185 do_cmd_redir ${DUMPIMAGE_LIST} ${DUMPIMAGE} -l ${image}
195 # Compress and extract multi-file images, compare the result
198 for file in ${DATAFILES}; do
199 assert_equal ${file} ${SRCDIR}/${file}
201 assert_equal ${TEST_OUT} ${DATAFILE2}
203 # List contents of multi-file image and compares output from tools
204 list_image ${IMAGE_MULTI}
205 assert_equal ${DUMPIMAGE_LIST} ${MKIMAGE_LIST}
207 # Compress and extract FIT images, compare the result
210 for file in ${DATAFILES}; do
211 assert_equal ${file} ${SRCDIR}/${file}
213 assert_equal ${TEST_OUT} ${DATAFILE2}
215 # List contents of FIT image and compares output from tools
216 list_image ${IMAGE_FIT_ITB}
217 assert_equal ${DUMPIMAGE_LIST} ${MKIMAGE_LIST}
219 # Remove files created