@@ -125,30 +125,48 @@ zephyr_library_sources(
125125 )
126126endif ()
127127
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)
133139elseif (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)
138144else ()
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)
149145 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
151149 )
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 ()
152170endif ()
153171
154172if (CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256 OR CONFIG_BOOT_ENCRYPT_EC256)
@@ -427,7 +445,7 @@ dt_get_parent(slot0_flash)
427445dt_prop(erase_size_slot0 PATH "${slot0_flash} " PROPERTY "erase-block-size" )
428446dt_prop(write_size_slot0 PATH "${slot0_flash} " PROPERTY "write-block-size" )
429447
430- if (CONFIG_BOOT_SWAP_USING_MOVE)
448+ if (CONFIG_BOOT_SWAP_USING_MOVE OR CONFIG_BOOT_SWAP_USING_OFFSET )
431449 if (DEFINED erase_size_slot0)
432450 zephyr_compile_definitions("MCUBOOT_SLOT0_EXPECTED_ERASE_SIZE=${erase_size_slot0} " )
433451 endif ()
@@ -445,7 +463,7 @@ if(NOT CONFIG_SINGLE_APPLICATION_SLOT AND NOT CONFIG_SINGLE_APPLICATION_SLOT_RAM
445463 dt_prop(erase_size_slot1 PATH "${slot1_flash} " PROPERTY "erase-block-size" )
446464 dt_prop(write_size_slot1 PATH "${slot1_flash} " PROPERTY "write-block-size" )
447465
448- if (CONFIG_BOOT_SWAP_USING_MOVE)
466+ if (CONFIG_BOOT_SWAP_USING_MOVE OR CONFIG_BOOT_SWAP_USING_OFFSET )
449467 if (DEFINED erase_size_slot1)
450468 zephyr_compile_definitions("MCUBOOT_SLOT1_EXPECTED_ERASE_SIZE=${erase_size_slot1} " )
451469 endif ()
@@ -487,12 +505,12 @@ if(CONFIG_BOOT_MAX_IMG_SECTORS_AUTO)
487505 endif ()
488506endif ()
489507
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))
491509 zephyr_library_sources(flash_check.c)
492510endif ()
493511
494512if (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)
496514 # TODO: RAM LOAD support
497515 dt_nodelabel(slot0_flash NODELABEL "slot0_partition" )
498516 dt_get_parent(slot0_flash)
@@ -617,6 +635,17 @@ if(SYSBUILD)
617635 math (EXPR boot_status_data_size "128 * (3 * ${write_size} )" )
618636 endif ()
619637 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 ()
620649 else ()
621650 set (boot_status_data_size 0)
622651 endif ()
@@ -634,6 +663,10 @@ if(SYSBUILD)
634663 if (CONFIG_BOOT_SWAP_USING_MOVE)
635664 math (EXPR required_size "${required_size} + ${erase_size} " )
636665 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}")
637670 endif ()
638671 else ()
639672 set (required_size 0)
0 commit comments