|
72 | 72 | HDR_IMG_TYPE_APP = 0x0001 |
73 | 73 |
|
74 | 74 | WOLFBOOT_HEADER_SIZE = 256 |
| 75 | +WOLFBOOT_PARTITION_SIZE = 0 |
| 76 | +WOLFBOOT_SECTOR_SIZE = 0 |
75 | 77 |
|
76 | 78 | sign="auto" |
77 | 79 | self_update=False |
@@ -386,6 +388,12 @@ def make_header(image_file, fw_version, extra_fields=[]): |
386 | 388 | val=l.split('=')[1].rstrip('\n') |
387 | 389 | WOLFBOOT_HEADER_SIZE = int(val,0) |
388 | 390 | print("IMAGE_HEADER_SIZE (from .config): " + str(WOLFBOOT_HEADER_SIZE)) |
| 391 | + if "WOLFBOOT_PARTITION_SIZE" in l and "ADDRESS" not in l: |
| 392 | + val=l.split('=')[1].rstrip('\n') |
| 393 | + WOLFBOOT_PARTITION_SIZE = int(val,0) |
| 394 | + if "WOLFBOOT_SECTOR_SIZE" in l: |
| 395 | + val=l.split('=')[1].rstrip('\n') |
| 396 | + WOLFBOOT_SECTOR_SIZE = int(val,0) |
389 | 397 |
|
390 | 398 | l = cfile.readline() |
391 | 399 | cfile.close() |
@@ -704,6 +712,24 @@ def make_header(image_file, fw_version, extra_fields=[]): |
704 | 712 | infile.close() |
705 | 713 | outfile.close() |
706 | 714 |
|
| 715 | +# Check if signed image fits in partition |
| 716 | +if WOLFBOOT_PARTITION_SIZE > 0: |
| 717 | + img_size = os.path.getsize(image_file) |
| 718 | + total_img_sz = WOLFBOOT_HEADER_SIZE + img_size |
| 719 | + # Only subtract sector for trailer when sector < partition. |
| 720 | + # When sector >= partition (e.g. update_ram targets), the |
| 721 | + # entire partition is available for the image. |
| 722 | + if WOLFBOOT_SECTOR_SIZE < WOLFBOOT_PARTITION_SIZE: |
| 723 | + max_img_sz = WOLFBOOT_PARTITION_SIZE - WOLFBOOT_SECTOR_SIZE |
| 724 | + else: |
| 725 | + max_img_sz = WOLFBOOT_PARTITION_SIZE |
| 726 | + if total_img_sz > max_img_sz: |
| 727 | + print("Error: Image size %d (header %d + firmware %d) " |
| 728 | + "exceeds max %d (partition %d - sector %d)" % |
| 729 | + (total_img_sz, WOLFBOOT_HEADER_SIZE, img_size, |
| 730 | + max_img_sz, WOLFBOOT_PARTITION_SIZE, WOLFBOOT_SECTOR_SIZE)) |
| 731 | + sys.exit(1) |
| 732 | + |
707 | 733 | if (encrypt): |
708 | 734 | delta_align=64 |
709 | 735 | else: |
|
0 commit comments