diff options
| author | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-02-19 22:16:31 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-02-19 22:16:31 +0000 |
| commit | fd455b44c4e20de31dcfab6d2f455188831ce341 (patch) | |
| tree | 6f4ab2eae7754c40d6031e9a4e715ef1b2c288b4 | |
| parent | 48b87d437ae105df2aaf964748509e16af56b4b6 (diff) | |
| parent | 3d4b008e62aca6ac055c53356079b7af966079e7 (diff) | |
unpack_bootimg: accomodate multi-page vendor boot headers am: 3d4b008e62
Change-Id: I6956fce410f0ec7779926ff2e9129337a73f727d
| -rw-r--r-- | include/bootimg/bootimg.h | 15 | ||||
| -rwxr-xr-x | unpack_bootimg.py | 8 |
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 |
