]> granicus.if.org Git - esp-idf/commitdiff
cmake/partitions: Apply offset to partition table metadata correctly
authorAngus Gratton <angus@espressif.com>
Mon, 20 Aug 2018 08:24:18 +0000 (18:24 +1000)
committerAngus Gratton <gus@projectgus.com>
Wed, 29 Aug 2018 12:22:55 +0000 (20:22 +0800)
Also warn if the parttool.py has an error

components/esptool_py/flasher_args.json.in
components/partition_table/CMakeLists.txt
components/partition_table/parttool.py
components/partition_table/project_include.cmake

index ca591617adadc17004a86f558ae8f064ec04d91b..4ec3a8c243424173b970ab01af9236cce6affeda 100644 (file)
@@ -5,7 +5,7 @@
     "flash_files" : {
         "0x1000" : "bootloader/bootloader.bin",
         "${PARTITION_TABLE_OFFSET}" : "partition_table/partition-table.bin",
-        "${CONFIG_APP_OFFSET}" : "${PROJECT_NAME}.bin",
+        "${APP_PARTITION_OFFSET}" : "${PROJECT_NAME}.bin",
         "${PHY_PARTITION_OFFSET}" : "${PHY_PARTITION_BIN_FILE}"
     },
     "bootloader" :      { "offset" : "0x1000",
index aa835c704b6918e8ab1e2afbe8fd3cc9164d9679..a97080c4cd1d34876a8a635a01c9a0c8e20c9bca 100644 (file)
@@ -23,7 +23,7 @@ if(CONFIG_ESPTOOLPY_FLASHSIZE)
 endif()
 
 add_custom_command(OUTPUT "${unsigned_partition_bin}"
-    COMMAND "${PYTHON}" "${CMAKE_CURRENT_SOURCE_DIR}/gen_esp32part.py" -q ${md5_opt} ${flashsize_opt}
+    COMMAND "${PYTHON}" "${CMAKE_CURRENT_SOURCE_DIR}/gen_esp32part.py" -q --offset ${PARTITION_TABLE_OFFSET} ${md5_opt} ${flashsize_opt}
     ${partition_csv} ${unsigned_partition_bin}
     DEPENDS ${partition_csv} "${CMAKE_CURRENT_SOURCE_DIR}/gen_esp32part.py"
     VERBATIM)
index 8188dfe3dd0c22927b6c587b2eff72620360ecd0..145fb8d3c55153e3235e603f852c216157a20c7b 100755 (executable)
@@ -49,6 +49,8 @@ def main():
 
     parser.add_argument('--quiet', '-q', help="Don't print status messages to stderr", action='store_true')
 
+    parser.add_argument('--partition-table-offset', help='The offset of the partition table in flash. Only consulted if partition table is in CSV format.', type=str, default='0x8000')
+
     search_type = parser.add_mutually_exclusive_group()
     search_type.add_argument('--partition-name', '-p', help='The name of the required partition', type=str, default=None)
     search_type.add_argument('--type', '-t', help='The type of the required partition', type=str, default=None)
@@ -74,6 +76,8 @@ def main():
 
     quiet = args.quiet
 
+    gen.offset_part_table = int(args.partition_table_offset, 0)
+
     input = args.input.read()
     input_is_binary = input[0:2] == gen.PartitionDefinition.MAGIC_BYTES
     if input_is_binary:
index b09ffd358e07083317b30212ea00f3376709e0fd..8af1e0ee923175fb0b5db6c9a52099216875ef4d 100644 (file)
@@ -9,7 +9,8 @@ if(CONFIG_PARTITION_TABLE_CUSTOM)
     get_filename_component(PARTITION_CSV_PATH "${CONFIG_PARTITION_TABLE_FILENAME}" ABSOLUTE BASE_DIR "${PROJECT_PATH}")
 
     if(NOT EXISTS "${PARTITION_CSV_PATH}")
-        message(FATAL_ERROR "Partition table CSV file ${PARTITION_CSV_PATH} not found. Change custom partition CSV path in menuconfig.")
+        message(WARNING "Partition table CSV file ${PARTITION_CSV_PATH} not found. "
+            "Change custom partition CSV path in menuconfig.")
     endif()
 else()
     # Other .csv files are always in the component directory
@@ -27,9 +28,17 @@ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${PARTITION_CSV_P
 function(get_partition_info variable get_part_info_args)
     separate_arguments(get_part_info_args)
     execute_process(COMMAND
-        ${COMPONENT_PATH}/parttool.py -q ${get_part_info_args} ${PARTITION_CSV_PATH}
+        ${COMPONENT_PATH}/parttool.py -q
+        --partition-table-offset ${PARTITION_TABLE_OFFSET}
+        ${get_part_info_args}
+        ${PARTITION_CSV_PATH}
         OUTPUT_VARIABLE result
+        RESULT_VARIABLE exit_code
         OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if(NOT ${exit_code} EQUAL 0 AND NOT ${exit_code} EQUAL 1)
+        # can't fail here as it would prevent the user from running 'menuconfig' again
+        message(WARNING "parttool.py execution failed (${result}), problem with partition CSV file (see above)")
+    endif()
     set(${variable} ${result} PARENT_SCOPE)
 endfunction()