• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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