blob: 297db35a5ec458fd0306d151f8d9568c1bfc1649 [file] [log] [blame]
Tim Leedd14a912022-07-29 16:42:15 +08001UBOOT_BINARY := "u-boot.${UBOOT_SUFFIX}"
2BOOTBLOCK = "BootBlockAndHeader.bin"
3ATF_BINARY := "bl31AndHeader.bin"
4OPTEE_BINARY := "teeAndHeader.bin"
5KMT_TIPFW_BINARY := "Kmt_TipFwL0_Skmt_TipFwL1.bin"
6KMT_TIPFW_BB_BINARY = "Kmt_TipFw_BootBlock.bin"
7KMT_TIPFW_BB_BL31_BINARY = "Kmt_TipFw_BootBlock_BL31.bin"
8KMT_TIPFW_BB_BL31_TEE_BINARY = "Kmt_TipFw_BootBlock_BL31_Tee.bin"
9KMT_TIPFW_BB_UBOOT_BINARY = "u-boot.bin.merged"
10FULL_SUFFIX = "full"
11MERGED_SUFFIX = "merged"
Tim Lee3af4d262022-09-27 15:01:43 +080012UBOOT_SUFFIX:append = ".${MERGED_SUFFIX}"
Tim Leedd14a912022-07-29 16:42:15 +080013
14IGPS_DIR = "${STAGING_DIR_NATIVE}/${datadir}/npcm8xx-igps"
Tim Leedd14a912022-07-29 16:42:15 +080015
16# Prepare the Bootblock and U-Boot images using npcm8xx-bingo
17do_prepare_bootloaders() {
18 local olddir="$(pwd)"
19 cd ${DEPLOY_DIR_IMAGE}
20
21 bingo ${IGPS_DIR}/BL31_AndHeader.xml \
22 -o ${DEPLOY_DIR_IMAGE}/${ATF_BINARY}
23
24 bingo ${IGPS_DIR}/OpTeeAndHeader.xml \
25 -o ${DEPLOY_DIR_IMAGE}/${OPTEE_BINARY}
26
27 bingo ${IGPS_DIR}/BootBlockAndHeader_${DEVICE_GEN}_${IGPS_MACHINE}.xml \
28 -o ${DEPLOY_DIR_IMAGE}/${BOOTBLOCK}
29
30 bingo ${IGPS_DIR}/UbootHeader_${DEVICE_GEN}.xml \
31 -o ${UBOOT_BINARY}.${FULL_SUFFIX}
32
33 cd "$olddir"
34}
35
36python do_merge_bootloaders() {
37
38 def Merge_bin_files_and_pad(inF1, inF2, outF, align, padding_at_end):
39 padding_size = 0
40 padding_size_end = 0
41 F1_size = os.path.getsize(inF1)
42 F2_size = os.path.getsize(inF2)
43
44 if ((F1_size % align) != 0):
45 padding_size = align - (F1_size % align)
46
47 if ((F2_size % align) != 0):
48 padding_size_end = align - (F2_size % align)
49
50 with open(outF, "wb") as file3:
51 with open(inF1, "rb") as file1:
52 data = file1.read()
53 file3.write(data)
54
55 file3.write(b'\xFF' * padding_size)
56
57 with open(inF2, "rb") as file2:
58 data = file2.read()
59 file3.write(data)
60
61 file3.write(b'\xFF' * padding_size_end)
62
63 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BINARY',True)),
64 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BOOTBLOCK',True)),
65 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BINARY',True)),
66 0x1000, 0x20)
67
68 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BINARY',True)),
69 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('ATF_BINARY',True)),
70 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BL31_BINARY',True)),
71 0x1000, 0x20)
72
73 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BL31_BINARY',True)),
74 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('OPTEE_BINARY',True)),
75 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BL31_TEE_BINARY',True)),
76 0x1000, 0x20)
77
78 Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_BL31_TEE_BINARY',True)),
79 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s.full' % d.getVar('UBOOT_BINARY',True)),
80 os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_UBOOT_BINARY',True)),
81 0x1000, 0x20)
82}
83
84do_prepare_bootloaders[depends] += " \
85 npcm8xx-tip-fw:do_deploy \
86 npcm8xx-bootblock:do_deploy \
Tim Lee3af4d262022-09-27 15:01:43 +080087 u-boot-nuvoton:do_deploy \
Tim Leedd14a912022-07-29 16:42:15 +080088 trusted-firmware-a:do_deploy \
89 optee-os:do_deploy \
90 npcm7xx-bingo-native:do_populate_sysroot \
91 npcm8xx-igps-native:do_populate_sysroot \
92 "
93
94# link images for we only need to flash partial image with idea name
95do_generate_ext4_tar:append() {
96 cd ${DEPLOY_DIR_IMAGE}
97 ln -sf ${UBOOT_BINARY}.${MERGED_SUFFIX} image-u-boot
98 ln -sf ${DEPLOY_DIR_IMAGE}/${FLASH_KERNEL_IMAGE} image-kernel
99 ln -sf ${S}/ext4/${IMAGE_LINK_NAME}.${FLASH_EXT4_BASETYPE}.zst image-rofs
100 ln -sf ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.rwfs.${FLASH_EXT4_OVERLAY_BASETYPE} image-rwfs
101 ln -sf ${IMAGE_NAME}.rootfs.wic.gz image-emmc.gz
102}
103
104addtask do_prepare_bootloaders before do_generate_static after do_generate_rwfs_static
105addtask do_merge_bootloaders before do_generate_static after do_prepare_bootloaders
106addtask do_merge_bootloaders before do_generate_ext4_tar after do_prepare_bootloaders
107
108# Include the full bootblock and u-boot in the final static image
109python do_generate_static:append() {
110 _append_image(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True),
111 'u-boot.%s' % d.getVar('UBOOT_SUFFIX',True)),
112 int(d.getVar('FLASH_UBOOT_OFFSET', True)),
113 int(d.getVar('FLASH_KERNEL_OFFSET', True)))
114}
115
116do_make_ubi:append() {
117 # Concatenate the uboot and ubi partitions
118 dd bs=1k conv=notrunc seek=${FLASH_UBOOT_OFFSET} \
119 if=${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} \
120 of=${IMGDEPLOYDIR}/${IMAGE_NAME}.ubi.mtd
121}
122
123do_make_ubi[depends] += "${PN}:do_prepare_bootloaders"
124do_generate_ubi_tar[depends] += "${PN}:do_prepare_bootloaders"
125do_generate_ubi_tar[depends] += "${PN}:do_merge_bootloaders"
126do_generate_static_tar[depends] += "${PN}:do_prepare_bootloaders"
127do_generate_static_tar[depends] += "${PN}:do_merge_bootloaders"
128do_generate_ext4_tar[depends] += "${PN}:do_prepare_bootloaders"
129do_generate_ext4_tar[depends] += "${PN}:do_merge_bootloaders"