1*13e8728fSAndroid Build Coastguard Worker#! /bin/bash 2*13e8728fSAndroid Build Coastguard Worker# Copyright (C) 2017 The Android Open Source Project 3*13e8728fSAndroid Build Coastguard Worker# 4*13e8728fSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*13e8728fSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*13e8728fSAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*13e8728fSAndroid Build Coastguard Worker# 8*13e8728fSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*13e8728fSAndroid Build Coastguard Worker# 10*13e8728fSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*13e8728fSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*13e8728fSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*13e8728fSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*13e8728fSAndroid Build Coastguard Worker# limitations under the License. 15*13e8728fSAndroid Build Coastguard Workerset -e 16*13e8728fSAndroid Build Coastguard Worker 17*13e8728fSAndroid Build Coastguard WorkerSRCDIR="data" 18*13e8728fSAndroid Build Coastguard WorkerDTS_LIST=" 19*13e8728fSAndroid Build Coastguard Worker board1v1.dts 20*13e8728fSAndroid Build Coastguard Worker board1v1_1.dts 21*13e8728fSAndroid Build Coastguard Worker board2v1.dts 22*13e8728fSAndroid Build Coastguard Worker" 23*13e8728fSAndroid Build Coastguard WorkerDTB_LIST=( 24*13e8728fSAndroid Build Coastguard Worker "board1v1.dts.dtb" 25*13e8728fSAndroid Build Coastguard Worker "board1v1_1.dts.dtb" 26*13e8728fSAndroid Build Coastguard Worker "board2v1.dts.dtb" 27*13e8728fSAndroid Build Coastguard Worker "board1v1.dts.dtb" 28*13e8728fSAndroid Build Coastguard Worker) 29*13e8728fSAndroid Build Coastguard WorkerCONFIG="${SRCDIR}/mkdtimg.cfg" 30*13e8728fSAndroid Build Coastguard WorkerPYCONFIG="${SRCDIR}/mkdtboimg.cfg" 31*13e8728fSAndroid Build Coastguard Worker 32*13e8728fSAndroid Build Coastguard WorkerALIGN=4 33*13e8728fSAndroid Build Coastguard Worker 34*13e8728fSAndroid Build Coastguard WorkerOUTDIR="out" 35*13e8728fSAndroid Build Coastguard WorkerMKDTIMG_OUT="${OUTDIR}/mkdtimg_out" 36*13e8728fSAndroid Build Coastguard WorkerMKDTIMG_DUMP="${MKDTIMG_OUT}"/dump.dtb 37*13e8728fSAndroid Build Coastguard Worker 38*13e8728fSAndroid Build Coastguard WorkerMKDTBOIMG_OUT="${OUTDIR}/mkdtboimg_out" 39*13e8728fSAndroid Build Coastguard WorkerMKDTBOIMG_OUTCREATE="${MKDTBOIMG_OUT}/create" 40*13e8728fSAndroid Build Coastguard WorkerMKDTBOIMG_OUTCFG="${MKDTBOIMG_OUT}/cfg_create" 41*13e8728fSAndroid Build Coastguard WorkerMKDTBOIMG_CREATEDUMP="${MKDTBOIMG_OUTCREATE}"/dump.dtb 42*13e8728fSAndroid Build Coastguard WorkerMKDTBOIMG_CFGDUMP="${MKDTBOIMG_OUTCFG}"/dump.dtb 43*13e8728fSAndroid Build Coastguard Worker 44*13e8728fSAndroid Build Coastguard Workermkdir -p "$MKDTIMG_OUT" 45*13e8728fSAndroid Build Coastguard Workermkdir -p "$MKDTBOIMG_OUTCREATE" 46*13e8728fSAndroid Build Coastguard Workermkdir -p "$MKDTBOIMG_OUTCFG" 47*13e8728fSAndroid Build Coastguard Worker 48*13e8728fSAndroid Build Coastguard Workerfor dts in ${DTS_LIST}; do 49*13e8728fSAndroid Build Coastguard Worker echo "Building $dts..." 50*13e8728fSAndroid Build Coastguard Worker src_dts="${SRCDIR}/${dts}" 51*13e8728fSAndroid Build Coastguard Worker out_dtb="${OUTDIR}/${dts}.dtb" 52*13e8728fSAndroid Build Coastguard Worker dtc -O dtb -@ -qq -a "$ALIGN" -o "$out_dtb" "$src_dts" 53*13e8728fSAndroid Build Coastguard Workerdone 54*13e8728fSAndroid Build Coastguard Worker 55*13e8728fSAndroid Build Coastguard Workerecho "Creating dtbo image with mkdtbimg" 56*13e8728fSAndroid Build Coastguard Workermkdtimg create ${MKDTIMG_OUT}/create.img --page_size=4096 --id=0x100 --version=1\ 57*13e8728fSAndroid Build Coastguard Worker --rev=0x100 --custom0=0xabc "${OUTDIR}/board1v1.dts.dtb" "${OUTDIR}/board1v1_1.dts.dtb" \ 58*13e8728fSAndroid Build Coastguard Worker --id=0xddccbbaa --rev=0x01000100 "${OUTDIR}/board2v1.dts.dtb" --id=0x200 \ 59*13e8728fSAndroid Build Coastguard Worker --rev=0x201 "${OUTDIR}/board1v1.dts.dtb" --custom0=0xdef \ 60*13e8728fSAndroid Build Coastguard Worker "${OUTDIR}/board1v1.dts.dtb" --custom0=0xdef > /dev/null 61*13e8728fSAndroid Build Coastguard Worker 62*13e8728fSAndroid Build Coastguard Workerecho "Creating dtbo image with mkdtboimg" 63*13e8728fSAndroid Build Coastguard Worker../src/mkdtboimg.py create ${MKDTBOIMG_OUTCREATE}/create.img --page_size=4096 \ 64*13e8728fSAndroid Build Coastguard Worker --id=0x100 --rev=0x100 --flags=0xabc0 --version=1 "${OUTDIR}/board1v1.dts.dtb" \ 65*13e8728fSAndroid Build Coastguard Worker "${OUTDIR}/board1v1_1.dts.dtb" --id=0xddccbbaa --rev=0x01000100 \ 66*13e8728fSAndroid Build Coastguard Worker "${OUTDIR}/board2v1.dts.dtb" --id=0x200 --rev=0x201 \ 67*13e8728fSAndroid Build Coastguard Worker "${OUTDIR}/board1v1.dts.dtb" --flags=0xd01 \ 68*13e8728fSAndroid Build Coastguard Worker "${OUTDIR}/board1v1.dts.dtb" --flags=0xd02 > /dev/null 69*13e8728fSAndroid Build Coastguard Worker 70*13e8728fSAndroid Build Coastguard Workerecho "Creating dtbo image with ${PYCONFIG} config file" 71*13e8728fSAndroid Build Coastguard Worker../src/mkdtboimg.py cfg_create ${MKDTBOIMG_OUTCFG}/create.img ${PYCONFIG} --dtb-dir "${OUTDIR}" 72*13e8728fSAndroid Build Coastguard Worker 73*13e8728fSAndroid Build Coastguard Workerecho "Dumping fragments from mkdtimg tool image" 74*13e8728fSAndroid Build Coastguard Workermkdtimg dump ${MKDTIMG_OUT}/create.img -b "${MKDTIMG_DUMP}"| grep -v 'FDT' > ${MKDTIMG_OUT}/create.dump 75*13e8728fSAndroid Build Coastguard Worker 76*13e8728fSAndroid Build Coastguard Workerecho "Dumping fragments from mkdtboimg.py tool for image generated with 'create'" 77*13e8728fSAndroid Build Coastguard Worker../src/mkdtboimg.py dump ${MKDTBOIMG_OUTCREATE}/create.img --output ${MKDTBOIMG_OUTCREATE}/create.dump -b "${MKDTBOIMG_CREATEDUMP}" --decompress 78*13e8728fSAndroid Build Coastguard Worker 79*13e8728fSAndroid Build Coastguard Workerecho "Dumping fragments from mkdtboimg.py tool for image generated with 'cfg_create'" 80*13e8728fSAndroid Build Coastguard Worker../src/mkdtboimg.py dump ${MKDTBOIMG_OUTCFG}/create.img --output ${MKDTBOIMG_OUTCFG}/create.dump -b "${MKDTBOIMG_CFGDUMP}" --decompress 81*13e8728fSAndroid Build Coastguard Worker 82*13e8728fSAndroid Build Coastguard Workerecho "======================================================================================" 83*13e8728fSAndroid Build Coastguard Workerecho "Testing differences between image created by 'create' for 'mkdtimg' and 'mkdtboimg.py'" 84*13e8728fSAndroid Build Coastguard Workerecho "======================================================================================" 85*13e8728fSAndroid Build Coastguard Workerfor x in `ls -1 ${MKDTIMG_DUMP}.*` 86*13e8728fSAndroid Build Coastguard Workerdo 87*13e8728fSAndroid Build Coastguard Worker file=`basename $x` 88*13e8728fSAndroid Build Coastguard Worker if [ ! -e ${MKDTBOIMG_OUTCREATE}/$file ] 89*13e8728fSAndroid Build Coastguard Worker then 90*13e8728fSAndroid Build Coastguard Worker continue 91*13e8728fSAndroid Build Coastguard Worker fi 92*13e8728fSAndroid Build Coastguard Worker echo "diff $x vs ${MKDTBOIMG_OUTCREATE}/$file" 93*13e8728fSAndroid Build Coastguard Worker diff $x ${MKDTBOIMG_OUTCREATE}/$file 94*13e8728fSAndroid Build Coastguard Workerdone 95*13e8728fSAndroid Build Coastguard Workerecho "==========================================================================================" 96*13e8728fSAndroid Build Coastguard Workerecho "Testing differences between image created by 'cfg_create' for 'mkdtimg' and 'mkdtboimg.py'" 97*13e8728fSAndroid Build Coastguard Workerecho "==========================================================================================" 98*13e8728fSAndroid Build Coastguard Workerfor x in `ls -1 ${MKDTIMG_DUMP}.*` 99*13e8728fSAndroid Build Coastguard Workerdo 100*13e8728fSAndroid Build Coastguard Worker file=`basename $x` 101*13e8728fSAndroid Build Coastguard Worker if [ ! -e ${MKDTBOIMG_OUTCFG}/$file ] 102*13e8728fSAndroid Build Coastguard Worker then 103*13e8728fSAndroid Build Coastguard Worker continue 104*13e8728fSAndroid Build Coastguard Worker fi 105*13e8728fSAndroid Build Coastguard Worker echo "diff $x vs ${MKDTBOIMG_OUTCFG}/$file" 106*13e8728fSAndroid Build Coastguard Worker diff $x ${MKDTBOIMG_OUTCFG}/$file 107*13e8728fSAndroid Build Coastguard Workerdone 108