@@ -125,30 +125,48 @@ zephyr_library_sources(
125
125
)
126
126
endif ()
127
127
128
- if (CONFIG_SINGLE_APPLICATION_SLOT OR CONFIG_SINGLE_APPLICATION_SLOT_RAM_LOAD )
129
- zephyr_library_sources (
130
- ${BOOT_DIR} /zephyr/single_loader.c
131
- )
132
- zephyr_library_include_directories (${BOOT_DIR} /bootutil/src )
128
+ if (CONFIG_SINGLE_APPLICATION_SLOT )
129
+ zephyr_library_sources (
130
+ ${BOOT_DIR} /zephyr/single_loader.c
131
+ )
132
+ zephyr_library_include_directories (${BOOT_DIR} /bootutil/src )
133
+ elseif (CONFIG_SINGLE_APPLICATION_SLOT OR CONFIG_SINGLE_APPLICATION_SLOT_RAM_LOAD )
134
+ zephyr_library_sources (
135
+ ${BOOT_DIR} /zephyr/single_loader.c
136
+ ${BOOT_DIR} /bootutil/src/ram_load.c
137
+ )
138
+ zephyr_library_include_directories (${BOOT_DIR} /bootutil/src )
133
139
elseif (CONFIG_BOOT_FIRMWARE_LOADER )
134
- zephyr_library_sources (
135
- ${BOOT_DIR} /zephyr/firmware_loader.c
136
- )
137
- zephyr_library_include_directories (${BOOT_DIR} /bootutil/src )
140
+ zephyr_library_sources (
141
+ ${BOOT_DIR} /zephyr/firmware_loader.c
142
+ )
143
+ zephyr_library_include_directories (${BOOT_DIR} /bootutil/src )
138
144
else ()
139
- zephyr_library_sources (
140
- ${BOOT_DIR} /bootutil/src/loader.c
141
- ${BOOT_DIR} /bootutil/src/swap_misc.c
142
- ${BOOT_DIR} /bootutil/src/swap_scratch.c
143
- ${BOOT_DIR} /bootutil/src/swap_move.c
144
- ${BOOT_DIR} /bootutil/src/caps.c
145
- )
146
- endif ()
147
-
148
- if (CONFIG_BOOT_RAM_LOAD OR CONFIG_SINGLE_APPLICATION_SLOT_RAM_LOAD )
149
145
zephyr_library_sources (
150
- ${BOOT_DIR} /bootutil/src/ram_load.c
146
+ ${BOOT_DIR} /bootutil/src/loader.c
147
+ ${BOOT_DIR} /bootutil/src/swap_misc.c
148
+ ${BOOT_DIR} /bootutil/src/caps.c
151
149
)
150
+
151
+ if (CONFIG_BOOT_SWAP_USING_MOVE )
152
+ zephyr_library_sources (
153
+ ${BOOT_DIR} /bootutil/src/swap_move.c
154
+ )
155
+ elseif (CONFIG_BOOT_SWAP_USING_OFFSET )
156
+ zephyr_library_sources (
157
+ ${BOOT_DIR} /bootutil/src/swap_offset.c
158
+ )
159
+ else ()
160
+ zephyr_library_sources (
161
+ ${BOOT_DIR} /bootutil/src/swap_scratch.c
162
+ )
163
+
164
+ if (CONFIG_BOOT_RAM_LOAD OR CONFIG_SINGLE_APPLICATION_SLOT_RAM_LOAD )
165
+ zephyr_library_sources (
166
+ ${BOOT_DIR} /bootutil/src/ram_load.c
167
+ )
168
+ endif ()
169
+ endif ()
152
170
endif ()
153
171
154
172
if (CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256 OR CONFIG_BOOT_ENCRYPT_EC256 )
@@ -427,7 +445,7 @@ dt_get_parent(slot0_flash)
427
445
dt_prop (erase_size_slot0 PATH "${slot0_flash} " PROPERTY "erase-block-size" )
428
446
dt_prop (write_size_slot0 PATH "${slot0_flash} " PROPERTY "write-block-size" )
429
447
430
- if (CONFIG_BOOT_SWAP_USING_MOVE )
448
+ if (CONFIG_BOOT_SWAP_USING_MOVE OR CONFIG_BOOT_SWAP_USING_OFFSET )
431
449
if (DEFINED erase_size_slot0 )
432
450
zephyr_compile_definitions ("MCUBOOT_SLOT0_EXPECTED_ERASE_SIZE=${erase_size_slot0} " )
433
451
endif ()
@@ -445,7 +463,7 @@ if(NOT CONFIG_SINGLE_APPLICATION_SLOT AND NOT CONFIG_SINGLE_APPLICATION_SLOT_RAM
445
463
dt_prop (erase_size_slot1 PATH "${slot1_flash} " PROPERTY "erase-block-size" )
446
464
dt_prop (write_size_slot1 PATH "${slot1_flash} " PROPERTY "write-block-size" )
447
465
448
- if (CONFIG_BOOT_SWAP_USING_MOVE )
466
+ if (CONFIG_BOOT_SWAP_USING_MOVE OR CONFIG_BOOT_SWAP_USING_OFFSET )
449
467
if (DEFINED erase_size_slot1 )
450
468
zephyr_compile_definitions ("MCUBOOT_SLOT1_EXPECTED_ERASE_SIZE=${erase_size_slot1} " )
451
469
endif ()
@@ -487,12 +505,12 @@ if(CONFIG_BOOT_MAX_IMG_SECTORS_AUTO)
487
505
endif ()
488
506
endif ()
489
507
490
- if ((CONFIG_BOOT_SWAP_USING_SCRATCH OR CONFIG_BOOT_SWAP_USING_MOVE ) AND (DEFINED write_size_slot0 OR DEFINED write_size_slot1 ))
508
+ if ((CONFIG_BOOT_SWAP_USING_SCRATCH OR CONFIG_BOOT_SWAP_USING_MOVE OR CONFIG_BOOT_SWAP_USING_OFFSET ) AND (DEFINED write_size_slot0 OR DEFINED write_size_slot1 ))
491
509
zephyr_library_sources (flash_check.c )
492
510
endif ()
493
511
494
512
if (SYSBUILD )
495
- if (CONFIG_SINGLE_APPLICATION_SLOT OR CONFIG_BOOT_FIRMWARE_LOADER OR CONFIG_BOOT_SWAP_USING_SCRATCH OR CONFIG_BOOT_SWAP_USING_MOVE OR CONFIG_BOOT_UPGRADE_ONLY OR CONFIG_BOOT_DIRECT_XIP OR CONFIG_BOOT_RAM_LOAD )
513
+ if (CONFIG_SINGLE_APPLICATION_SLOT OR CONFIG_BOOT_FIRMWARE_LOADER OR CONFIG_BOOT_SWAP_USING_SCRATCH OR CONFIG_BOOT_SWAP_USING_MOVE OR CONFIG_BOOT_SWAP_USING_OFFSET OR CONFIG_BOOT_UPGRADE_ONLY OR CONFIG_BOOT_DIRECT_XIP OR CONFIG_BOOT_RAM_LOAD )
496
514
# TODO: RAM LOAD support
497
515
dt_nodelabel (slot0_flash NODELABEL "slot0_partition" )
498
516
dt_get_parent (slot0_flash )
@@ -617,6 +635,17 @@ if(SYSBUILD)
617
635
math (EXPR boot_status_data_size "128 * (3 * ${write_size} )" )
618
636
endif ()
619
637
endif ()
638
+ elseif (CONFIG_BOOT_SWAP_USING_OFFSET )
639
+ if (CONFIG_BOOT_MAX_IMG_SECTORS_AUTO AND DEFINED slot_min_sectors AND "${slot_min_sectors} " GREATER "0" )
640
+ math (EXPR boot_status_data_size "${slot_min_sectors} * (2 * ${write_size} )" )
641
+ else ()
642
+ if (CONFIG_BOOT_MAX_IMG_SECTORS )
643
+ math (EXPR boot_status_data_size "${CONFIG_BOOT_MAX_IMG_SECTORS} * (2 * ${write_size} )" )
644
+ else ()
645
+ message (WARNING "CONFIG_BOOT_MAX_IMG_SECTORS is not defined, falling back to 128 sector default. Please set CONFIG_BOOT_MAX_IMG_SECTORS to the required value" )
646
+ math (EXPR boot_status_data_size "128 * (2 * ${write_size} )" )
647
+ endif ()
648
+ endif ()
620
649
else ()
621
650
set (boot_status_data_size 0 )
622
651
endif ()
@@ -634,6 +663,10 @@ if(SYSBUILD)
634
663
if (CONFIG_BOOT_SWAP_USING_MOVE )
635
664
math (EXPR required_size "${required_size} + ${erase_size} " )
636
665
math (EXPR required_upgrade_size "${required_upgrade_size} + ${erase_size} " )
666
+ elseif (CONFIG_BOOT_SWAP_USING_OFFSET )
667
+ #todo: check how different slot sizes are...
668
+ # math(EXPR required_size "${required_size} + ${erase_size}")
669
+ # math(EXPR required_upgrade_size "${required_upgrade_size} + ${erase_size}")
637
670
endif ()
638
671
else ()
639
672
set (required_size 0 )
0 commit comments