This is an automated email from the ASF dual-hosted git repository. utzig pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-mcumgr.git
commit c8151d8023f2f985c66a9dcecb4e741cf5306393 Author: Dominik Ermel <dominik.er...@nordicsemi.no> AuthorDate: Thu Feb 11 12:08:22 2021 +0000 zephyr: Rely on img_mgmt_find_best_area_id to select update partition The img_mgmt_find_best_area_id is supposed to figure out the best, which also means possible, partition for software update. Unfortunately in the code in many places the direct reference the to FLASH_AREA_ID(image_1) is used, which may cause image_1 being overwritten, even if other partition would be selected as the "best". Signed-off-by: Dominik Ermel <dominik.er...@nordicsemi.no> --- cmd/img_mgmt/port/zephyr/src/zephyr_img_mgmt.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cmd/img_mgmt/port/zephyr/src/zephyr_img_mgmt.c b/cmd/img_mgmt/port/zephyr/src/zephyr_img_mgmt.c index d6169b8..ef72c1e 100644 --- a/cmd/img_mgmt/port/zephyr/src/zephyr_img_mgmt.c +++ b/cmd/img_mgmt/port/zephyr/src/zephyr_img_mgmt.c @@ -194,14 +194,16 @@ img_mgmt_impl_erase_slot(void) bool empty; int rc; - rc = zephyr_img_mgmt_flash_check_empty(FLASH_AREA_ID(image_1), - &empty); + /* Select non-active slot */ + const int best_id = img_mgmt_find_best_area_id(); + + rc = zephyr_img_mgmt_flash_check_empty(best_id, &empty); if (rc != 0) { return MGMT_ERR_EUNKNOWN; } if (!empty) { - rc = boot_erase_img_bank(FLASH_AREA_ID(image_1)); + rc = boot_erase_img_bank(best_id); if (rc != 0) { return MGMT_ERR_EUNKNOWN; } @@ -328,7 +330,7 @@ img_mgmt_impl_erase_image_data(unsigned int off, unsigned int num_bytes) goto end; } - rc = flash_area_open(FLASH_AREA_ID(image_1), &fa); + rc = flash_area_open(img_mgmt_find_best_area_id(), &fa); if (rc != 0) { LOG_ERR("Can't bind to the flash area (err %d)", rc); rc = MGMT_ERR_EUNKNOWN;