1# 2# Copyright (c) 2022 FuZhou Lockzhiner Electronic Co., Ltd. All rights reserved. 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14# 15 16BOARD=$(hb env | grep "board:" | awk -F' ' '{print $4}') 17PRODUCT=$(hb env | grep "product:" | awk -F' ' '{print $4}') 18ROOT_DIR=$(hb env | grep "root path" | awk -F' ' '{print $5}') 19SDK_DIR=${ROOT_DIR}/device/soc/rockchip/rk2206/sdk_liteos 20OUT_DIR=${ROOT_DIR}/out/${BOARD}/${PRODUCT} 21IMAGE_DIR=${OUT_DIR}/images 22TOOLS_DIR=${SDK_DIR}/../tools/package 23LOADER_DIR=${SDK_DIR}/loader 24 25# Partitions address, unit: blocks (1 block = 512B) 26# System partition 27PART_SYSTEM_OFFSET=0x00 28PART_SYSTEM_BLOCKS=$1 29# UserPart1 for loader 30PART_LOADER_OFFSET=$[${PART_SYSTEM_OFFSET} + ${PART_SYSTEM_BLOCKS}] 31PART_LOADER_BLOCKS=$2 32# UserPart2 for liteos 33PART_LITEOS_OFFSET=$[${PART_LOADER_OFFSET} + ${PART_LOADER_BLOCKS}] 34PART_LITEOS_BLOCKS=$3 35# UserPart3 for rootfs 36PART_ROOTFS_OFFSET=$[${PART_LITEOS_OFFSET} + ${PART_LITEOS_BLOCKS}] 37PART_ROOTFS_BLOCKS=$4 38# UserPart4 for userfs 39PART_USERFS_OFFSET=$[${PART_ROOTFS_OFFSET} + ${PART_ROOTFS_BLOCKS}] 40PART_USERFS_BLOCKS=$5 41 42LOADER1_BIN=rk2206_psram.bin 43LOADER2_BIN=rk2206_loader.bin 44LITEOS_BIN=liteos.bin 45ROOTFS_BIN=rootfs_vfat.img 46USERFS_BIN=userfs_vfag.img 47 48LOADER_IMAGE=${LOADER_DIR}/rk2206_db_loader.bin 49FIRMWARE_IMAGE=${OUT_DIR}/Firmware.img 50FIRMWARE_MD5=${OUT_DIR}/Firmware.md5 51 52SETTING_INI=${OUT_DIR}/setting.ini 53CONFIG_JSON=${OUT_DIR}/config.json 54function make_setting_ini() 55{ 56 echo "[System]" 57 echo "FwVersion=1.0" 58 echo "Gpt_Enable=" 59 echo "Backup_Partition_Enable=" 60 echo "Nano=" 61 echo "Loader_Encrypt=0" 62 echo "Chip=" 63 echo "Model=" 64 echo "[UserPart1]:" 65 echo "Name=IDBlock" 66 echo "Type=0x2" 67 echo "PartOffset=${PART_LOADER_OFFSET}" 68 echo "PartSize=${PART_LOADER_BLOCKS}" 69 echo "Flag=" 70 echo "File=${LOADER_DIR}/${LOADER1_BIN},${LOADER_DIR}/${LOADER2_BIN}" 71 echo "[UserPart2]" 72 echo "Name=liteos" 73 echo "Type=0x8" 74 echo "PartOffset=${PART_LITEOS_OFFSET}" 75 echo "PartSize=${PART_LITEOS_BLOCKS}" 76 echo "Flag=" 77 echo "File=${OUT_DIR}/${LITEOS_BIN}" 78 echo "[UserPart3]" 79 echo "Name=rootfs" 80 echo "Type=" 81 echo "PartOffset=${PART_ROOTFS_OFFSET}" 82 echo "PartSize=${PART_ROOTFS_BLOCKS}" 83 echo "Flag=1" 84 echo "File=${OUT_DIR}/${ROOTFS_BIN}" 85 echo "[UserPart4]" 86 echo "Name=userfs" 87 echo "Type=" 88 echo "PartOffset=${PART_USERFS_OFFSET}" 89 echo "PartSize=${PART_USERFS_BLOCKS}" 90 echo "Flag=1" 91 echo "File=${OUT_DIR}/${USERFS_BIN}" 92} 93 94function make_config_json() 95{ 96 echo "{" 97 echo " \"MAGIC\": \"RESC\"," 98 echo " \"CHIP\": \"rk2206\"," 99 echo " \"MODEL\": \"${PRODUCT}\"," 100 echo " \"DESC\": \"rk2206 OpenHarmony\"," 101 echo " \"VERSION\": \"2.00.0000\"," 102 echo " \"DIGEST\": \"JSHASH\"" 103 echo "}" 104} 105 106function main() 107{ 108 mkdir -p ${IMAGE_DIR} 109 110 make_config_json > ${CONFIG_JSON} 111 make_setting_ini > ${SETTING_INI} 112 ${TOOLS_DIR}/resource_header_tool pack --json ${CONFIG_JSON} ${OUT_DIR}/${LITEOS_BIN} 113 ${TOOLS_DIR}/firmware_merger -p ${SETTING_INI} ${IMAGE_DIR} 114 cp ${LOADER_IMAGE} ${IMAGE_DIR}/ 115} 116 117if [ $# -ne 5 ]; then 118 echo Please input partitions block size! 119 exit 1 120fi 121 122if [ ! -d ${ROOT_DIR} ] || [ ! -d ${OUT_DIR} ] || [ ! -d ${SDK_DIR} ]; then 123 echo Root/out/board directions are not exist! 124 exit 1 125fi 126 127main "$@" 128 129