summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-02-19 22:27:26 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-02-19 22:27:26 +0000
commit5158b90182bf26ba7eae8abf25cf187d868d5d8a (patch)
tree6f4ab2eae7754c40d6031e9a4e715ef1b2c288b4
parent48b87d437ae105df2aaf964748509e16af56b4b6 (diff)
parentfd455b44c4e20de31dcfab6d2f455188831ce341 (diff)
unpack_bootimg: accomodate multi-page vendor boot headers am: 3d4b008e62 am: fd455b44c4
Change-Id: I38683084644494e74f427a5e1cb9447a0da01b16
-rw-r--r--include/bootimg/bootimg.h15
-rwxr-xr-xunpack_bootimg.py8
2 files changed, 12 insertions, 11 deletions
diff --git a/include/bootimg/bootimg.h b/include/bootimg/bootimg.h
index f032261..09411c6 100644
--- a/include/bootimg/bootimg.h
+++ b/include/bootimg/bootimg.h
@@ -171,9 +171,9 @@ struct boot_img_hdr_v2 : public boot_img_hdr_v1 {
* +---------------------+
* | boot header | 4096 bytes
* +---------------------+
- * | kernel | m
+ * | kernel | m pages
* +---------------------+
- * | ramdisk | n
+ * | ramdisk | n pages
* +---------------------+
*
* m = (kernel_size + 4096 - 1) / 4096
@@ -185,15 +185,16 @@ struct boot_img_hdr_v2 : public boot_img_hdr_v1 {
* required to be present when a v3 boot image is used) is as follows:
*
* +---------------------+
- * | vendor boot header | 1 page
+ * | vendor boot header | o pages
* +---------------------+
- * | vendor ramdisk | o pages
+ * | vendor ramdisk | p pages
* +---------------------+
- * | dtb | p pages
+ * | dtb | q pages
* +---------------------+
- * o = (vendor_ramdisk_size + page_size - 1) / page_size
- * p = (dtb_size + page_size - 1) / page_size
+ * o = (2108 + page_size - 1) / page_size
+ * p = (vendor_ramdisk_size + page_size - 1) / page_size
+ * q = (dtb_size + page_size - 1) / page_size
*
* 0. all entities in the boot image are 4096-byte aligned in flash, all
* entities in the vendor boot image are page_size (determined by the vendor
diff --git a/unpack_bootimg.py b/unpack_bootimg.py
index 5d52646..628c19b 100755
--- a/unpack_bootimg.py
+++ b/unpack_bootimg.py
@@ -24,6 +24,7 @@ from struct import unpack
import os
BOOT_IMAGE_HEADER_V3_PAGESIZE = 4096
+VENDOR_BOOT_IMAGE_HEADER_V3_SIZE = 2108
def create_out_dir(dir_path):
"""creates a directory 'dir_path' if it does not exist"""
@@ -196,11 +197,10 @@ def unpack_vendor_bootimage(args):
ramdisk_size = kernel_ramdisk_info[4]
page_size = kernel_ramdisk_info[1]
- # The first page contains the boot header
- num_boot_header_pages = 1
-
+ # The first pages contain the boot header
+ num_boot_header_pages = get_number_of_pages(VENDOR_BOOT_IMAGE_HEADER_V3_SIZE, page_size)
num_boot_ramdisk_pages = get_number_of_pages(ramdisk_size, page_size)
- ramdisk_offset = page_size * num_boot_header_pages # header occupies a page
+ ramdisk_offset = page_size * num_boot_header_pages
image_info_list = [(ramdisk_offset, ramdisk_size, 'vendor_ramdisk')]
dtb_offset = page_size * (num_boot_header_pages + num_boot_ramdisk_pages