2020-11-10 02:40:01 -05:00
|
|
|
idf_component_register(SRCS "esp_ota_ops.c"
|
2019-06-21 02:29:32 -04:00
|
|
|
"esp_app_desc.c"
|
2019-04-28 03:38:23 -04:00
|
|
|
INCLUDE_DIRS "include"
|
2021-03-08 03:46:37 -05:00
|
|
|
REQUIRES spi_flash partition_table bootloader_support
|
2021-03-19 08:03:13 -04:00
|
|
|
PRIV_REQUIRES esptool_py efuse)
|
2018-08-31 00:30:14 -04:00
|
|
|
|
2019-01-21 22:45:45 -05:00
|
|
|
# esp_app_desc structure is added as an undefined symbol because otherwise the
|
2018-12-05 01:07:41 -05:00
|
|
|
# linker will ignore this structure as it has no other files depending on it.
|
2019-06-04 07:05:33 -04:00
|
|
|
target_link_libraries(${COMPONENT_LIB} INTERFACE "-u esp_app_desc")
|
2018-12-05 01:07:41 -05:00
|
|
|
|
2019-11-27 06:01:40 -05:00
|
|
|
if(CONFIG_APP_PROJECT_VER_FROM_CONFIG)
|
|
|
|
# Ignore current PROJECT_VER (which was set in __project_get_revision()).
|
|
|
|
# Gets the version from the CONFIG_APP_PROJECT_VER.
|
|
|
|
idf_build_set_property(PROJECT_VER "${CONFIG_APP_PROJECT_VER}")
|
|
|
|
endif()
|
|
|
|
|
2018-12-07 11:23:44 -05:00
|
|
|
# cut PROJECT_VER and PROJECT_NAME to required 32 characters.
|
2019-05-09 22:53:08 -04:00
|
|
|
idf_build_get_property(project_ver PROJECT_VER)
|
|
|
|
idf_build_get_property(project_name PROJECT_NAME)
|
|
|
|
string(SUBSTRING "${project_ver}" 0 31 PROJECT_VER_CUT)
|
|
|
|
string(SUBSTRING "${project_name}" 0 31 PROJECT_NAME_CUT)
|
2019-11-27 06:01:40 -05:00
|
|
|
message(STATUS "App \"${PROJECT_NAME_CUT}\" version: ${PROJECT_VER_CUT}")
|
2018-12-07 11:23:44 -05:00
|
|
|
|
2018-10-05 08:29:07 -04:00
|
|
|
set_source_files_properties(
|
|
|
|
SOURCE "esp_app_desc.c"
|
2019-01-21 22:45:45 -05:00
|
|
|
PROPERTIES COMPILE_DEFINITIONS
|
2018-12-07 11:23:44 -05:00
|
|
|
"PROJECT_VER=\"${PROJECT_VER_CUT}\"; PROJECT_NAME=\"${PROJECT_NAME_CUT}\"")
|
2018-10-05 08:29:07 -04:00
|
|
|
|
2019-05-09 22:53:08 -04:00
|
|
|
if(NOT BOOTLOADER_BUILD)
|
2019-01-21 22:45:45 -05:00
|
|
|
partition_table_get_partition_info(otadata_offset "--partition-type data --partition-subtype ota" "offset")
|
|
|
|
partition_table_get_partition_info(otadata_size "--partition-type data --partition-subtype ota" "size")
|
2018-11-11 02:36:10 -05:00
|
|
|
|
2019-01-21 22:45:45 -05:00
|
|
|
# Add custom target for generating empty otadata partition for flashing
|
|
|
|
if(otadata_size AND otadata_offset)
|
2019-05-09 22:53:08 -04:00
|
|
|
idf_build_get_property(build_dir BUILD_DIR)
|
|
|
|
set(blank_otadata_file ${build_dir}/ota_data_initial.bin)
|
|
|
|
|
|
|
|
idf_build_get_property(idf_path IDF_PATH)
|
|
|
|
idf_build_get_property(python PYTHON)
|
2019-09-03 07:41:50 -04:00
|
|
|
|
|
|
|
idf_component_get_property(partition_table_dir partition_table COMPONENT_DIR)
|
|
|
|
|
2019-01-21 22:45:45 -05:00
|
|
|
add_custom_command(OUTPUT ${blank_otadata_file}
|
2019-09-03 07:41:50 -04:00
|
|
|
COMMAND ${python} ${partition_table_dir}/gen_empty_partition.py
|
2019-05-26 23:08:28 -04:00
|
|
|
${otadata_size} ${blank_otadata_file})
|
2019-01-21 22:45:45 -05:00
|
|
|
|
|
|
|
add_custom_target(blank_ota_data ALL DEPENDS ${blank_otadata_file})
|
2019-05-10 01:09:30 -04:00
|
|
|
add_dependencies(flash blank_ota_data)
|
2018-11-15 16:01:15 -05:00
|
|
|
|
2019-05-09 22:53:08 -04:00
|
|
|
set(otatool_py ${python} ${COMPONENT_DIR}/otatool.py)
|
2018-11-15 16:01:15 -05:00
|
|
|
|
2020-10-12 10:12:49 -04:00
|
|
|
set(esptool_args "--esptool-args;before=${CONFIG_ESPTOOLPY_BEFORE};after=${CONFIG_ESPTOOLPY_AFTER}")
|
2020-10-12 10:22:09 -04:00
|
|
|
set(otatool_args "--partition-table-file;${PARTITION_CSV_PATH}"
|
|
|
|
"--partition-table-offset;${PARTITION_TABLE_OFFSET}")
|
2020-10-12 10:12:49 -04:00
|
|
|
idf_component_get_property(esptool_py_dir esptool_py COMPONENT_DIR)
|
2019-03-28 02:08:32 -04:00
|
|
|
|
2019-01-21 22:45:45 -05:00
|
|
|
add_custom_target(read_otadata DEPENDS "${PARTITION_CSV_PATH}"
|
2020-10-12 10:12:49 -04:00
|
|
|
COMMAND ${CMAKE_COMMAND}
|
|
|
|
-D IDF_PATH="${idf_path}"
|
|
|
|
-D SERIAL_TOOL="${otatool_py}"
|
|
|
|
-D SERIAL_TOOL_ARGS="${esptool_args};${otatool_args};read_otadata"
|
|
|
|
-D WORKING_DIRECTORY="${build_dir}"
|
|
|
|
-P ${esptool_py_dir}/run_serial_tool.cmake
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
|
|
USES_TERMINAL
|
|
|
|
)
|
2018-11-15 16:01:15 -05:00
|
|
|
|
2019-01-21 22:45:45 -05:00
|
|
|
add_custom_target(erase_otadata DEPENDS "${PARTITION_CSV_PATH}"
|
2020-10-12 10:12:49 -04:00
|
|
|
COMMAND ${CMAKE_COMMAND}
|
|
|
|
-D IDF_PATH="${idf_path}"
|
|
|
|
-D SERIAL_TOOL="${otatool_py}"
|
|
|
|
-D SERIAL_TOOL_ARGS="${esptool_args};${otatool_args};erase_otadata"
|
|
|
|
-D WORKING_DIRECTORY="${build_dir}"
|
|
|
|
-P ${esptool_py_dir}/run_serial_tool.cmake
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
|
|
USES_TERMINAL
|
|
|
|
)
|
2019-01-21 22:45:45 -05:00
|
|
|
|
2019-12-19 20:55:02 -05:00
|
|
|
idf_component_get_property(main_args esptool_py FLASH_ARGS)
|
|
|
|
idf_component_get_property(sub_args esptool_py FLASH_SUB_ARGS)
|
|
|
|
esptool_py_flash_target(otadata-flash "${main_args}" "${sub_args}")
|
|
|
|
esptool_py_flash_target_image(otadata-flash otadata "${otadata_offset}" "${blank_otadata_file}")
|
|
|
|
|
|
|
|
esptool_py_flash_target_image(flash otadata "${otadata_offset}" "${blank_otadata_file}")
|
2019-01-21 22:45:45 -05:00
|
|
|
endif()
|
|
|
|
endif()
|