dfu.cmake 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # Add DFU build and flashing related targets
  2. #
  3. function(__add_dfu_targets)
  4. idf_build_get_property(target IDF_TARGET)
  5. if("${target}" STREQUAL "esp32")
  6. return()
  7. elseif("${target}" STREQUAL "esp32s2")
  8. set(dfu_pid "2")
  9. elseif("${target}" STREQUAL "esp32s3")
  10. set(dfu_pid "9")
  11. elseif("${target}" STREQUAL "esp32c3")
  12. return()
  13. elseif("${target}" STREQUAL "esp32h2")
  14. return()
  15. elseif("${target}" STREQUAL "esp8684")
  16. return()
  17. elseif("${target}" STREQUAL "linux")
  18. return()
  19. else()
  20. message(FATAL_ERROR "DFU PID unknown for ${target}")
  21. endif()
  22. idf_build_get_property(python PYTHON)
  23. idf_build_get_property(idf_path IDF_PATH)
  24. add_custom_target(dfu
  25. COMMAND ${python} ${idf_path}/tools/mkdfu.py write
  26. -o "${CMAKE_CURRENT_BINARY_DIR}/dfu.bin"
  27. --json "${CMAKE_CURRENT_BINARY_DIR}/flasher_args.json"
  28. --pid "${dfu_pid}"
  29. DEPENDS gen_project_binary bootloader
  30. VERBATIM
  31. USES_TERMINAL)
  32. add_custom_target(dfu-list
  33. COMMAND ${CMAKE_COMMAND}
  34. -D ESP_DFU_LIST="1"
  35. -P ${idf_path}/tools/cmake/run_dfu_util.cmake
  36. USES_TERMINAL)
  37. add_custom_target(dfu-flash
  38. COMMAND ${CMAKE_COMMAND}
  39. -D ESP_DFU_BIN="${CMAKE_CURRENT_BINARY_DIR}/dfu.bin"
  40. -D ESP_DFU_PID="${dfu_pid}"
  41. -P ${idf_path}/tools/cmake/run_dfu_util.cmake
  42. USES_TERMINAL)
  43. endfunction()