From bceec35d0ee543c8c3f43c0013ed80583d965cf4 Mon Sep 17 00:00:00 2001 From: Renz Christian Bagaporo Date: Fri, 16 Nov 2018 05:01:15 +0800 Subject: [PATCH] cmake: use otatool and parttool for build --- components/app_update/CMakeLists.txt | 17 +++++++-- components/app_update/project_include.cmake | 3 +- tools/idf.py | 42 +++++++++++---------- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/components/app_update/CMakeLists.txt b/components/app_update/CMakeLists.txt index 8eac369358..e559ef1020 100644 --- a/components/app_update/CMakeLists.txt +++ b/components/app_update/CMakeLists.txt @@ -7,12 +7,21 @@ set(COMPONENT_PRIV_REQUIRES bootloader_support) register_component() # Add custom target for generating empty otadata partition for flashing -if(OTADATA_PARTITION_OFFSET AND IDF_BUILD_ARTIFACTS) +if(OTADATA_PARTITION_OFFSET AND OTADATA_PARTITION_SIZE) add_custom_command(OUTPUT "${IDF_BUILD_ARTIFACTS_DIR}/${BLANK_OTADATA_FILE}" - COMMAND ${PYTHON} ${CMAKE_CURRENT_SOURCE_DIR}/gen_empty_partition.py - --size ${OTADATA_PARTITION_SIZE} "${IDF_BUILD_ARTIFACTS_DIR}/${BLANK_OTADATA_FILE}") + COMMAND ${PYTHON} ${IDF_PATH}/components/partition_table/parttool.py + --partition-type data --partition-subtype ota -q + --partition-table-file ${PARTITION_CSV_PATH} generate_blank_partition_file + --output "${IDF_BUILD_ARTIFACTS_DIR}/${BLANK_OTADATA_FILE}") add_custom_target(blank_ota_data ALL DEPENDS "${IDF_BUILD_ARTIFACTS_DIR}/${BLANK_OTADATA_FILE}") - add_dependencies(flash blank_ota_data) endif() + +set(otatool_py ${PYTHON} ${COMPONENT_PATH}/otatool.py) + +add_custom_target(read_otadata DEPENDS "${PARTITION_CSV_PATH}" + COMMAND ${otatool_py} --partition-table-file ${PARTITION_CSV_PATH} read_otadata) + +add_custom_target(erase_otadata DEPENDS "${PARTITION_CSV_PATH}" + COMMAND ${otatool_py} --partition-table-file ${PARTITION_CSV_PATH} erase_otadata) diff --git a/components/app_update/project_include.cmake b/components/app_update/project_include.cmake index 8d959bd7cb..0f7001056a 100644 --- a/components/app_update/project_include.cmake +++ b/components/app_update/project_include.cmake @@ -3,6 +3,7 @@ # partition table # (NB: because of component dependency, we know partition_table # project_include.cmake has already been included.) -if(OTADATA_PARTITION_OFFSET AND IDF_BUILD_ARTIFACTS) + +if(OTADATA_PARTITION_OFFSET AND OTADATA_PARTITION_SIZE AND IDF_BUILD_ARTIFACTS) set(BLANK_OTADATA_FILE "ota_data_initial.bin") endif() diff --git a/tools/idf.py b/tools/idf.py index 830ff97133..5d61d3ec52 100755 --- a/tools/idf.py +++ b/tools/idf.py @@ -386,27 +386,29 @@ def print_closing_message(args): ACTIONS = { # action name : ( function (or alias), dependencies, order-only dependencies ) - "all" : ( build_target, [], [ "reconfigure", "menuconfig", "clean", "fullclean" ] ), - "build": ( "all", [], [] ), # build is same as 'all' target - "clean": ( clean, [], [ "fullclean" ] ), - "fullclean": ( fullclean, [], [] ), - "reconfigure": ( reconfigure, [], [ "menuconfig" ] ), - "menuconfig": ( build_target, [], [] ), + "all" : ( build_target, [], [ "reconfigure", "menuconfig", "clean", "fullclean" ] ), + "build": ( "all", [], [] ), # build is same as 'all' target + "clean": ( clean, [], [ "fullclean" ] ), + "fullclean": ( fullclean, [], [] ), + "reconfigure": ( reconfigure, [], [ "menuconfig" ] ), + "menuconfig": ( build_target, [], [] ), "defconfig": ( build_target, [], [] ), - "confserver": ( build_target, [], [] ), - "size": ( build_target, [ "app" ], [] ), - "size-components": ( build_target, [ "app" ], [] ), - "size-files": ( build_target, [ "app" ], [] ), - "bootloader": ( build_target, [], [] ), - "bootloader-clean": ( build_target, [], [] ), - "bootloader-flash": ( flash, [ "bootloader" ], [ "erase_flash"] ), - "app": ( build_target, [], [ "clean", "fullclean", "reconfigure" ] ), - "app-flash": ( flash, [ "app" ], [ "erase_flash"]), - "partition_table": ( build_target, [], [ "reconfigure" ] ), - "partition_table-flash": ( flash, [ "partition_table" ], [ "erase_flash" ]), - "flash": ( flash, [ "all" ], [ "erase_flash" ] ), - "erase_flash": ( erase_flash, [], []), - "monitor": ( monitor, [], [ "flash", "partition_table-flash", "bootloader-flash", "app-flash" ]), + "confserver": ( build_target, [], [] ), + "size": ( build_target, [ "app" ], [] ), + "size-components": ( build_target, [ "app" ], [] ), + "size-files": ( build_target, [ "app" ], [] ), + "bootloader": ( build_target, [], [] ), + "bootloader-clean": ( build_target, [], [] ), + "bootloader-flash": ( flash, [ "bootloader" ], [ "erase_flash"] ), + "app": ( build_target, [], [ "clean", "fullclean", "reconfigure" ] ), + "app-flash": ( flash, [ "app" ], [ "erase_flash"]), + "partition_table": ( build_target, [], [ "reconfigure" ] ), + "partition_table-flash": ( flash, [ "partition_table" ], [ "erase_flash" ]), + "flash": ( flash, [ "all" ], [ "erase_flash" ] ), + "erase_flash": ( erase_flash, [], []), + "monitor": ( monitor, [], [ "flash", "partition_table-flash", "bootloader-flash", "app-flash" ]), + "erase_otadata": ( build_target, [], []), + "read_otadata": ( build_target, [], []), } def get_commandline_options():