dfu.cmake 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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 "4")
  11. elseif("${target}" STREQUAL "linux")
  12. return()
  13. else()
  14. message(FATAL_ERROR "DFU PID unknown for ${target}")
  15. endif()
  16. idf_build_get_property(python PYTHON)
  17. idf_build_get_property(idf_path IDF_PATH)
  18. add_custom_target(dfu
  19. COMMAND ${python} ${idf_path}/tools/mkdfu.py write
  20. -o "${CMAKE_CURRENT_BINARY_DIR}/dfu.bin"
  21. --json "${CMAKE_CURRENT_BINARY_DIR}/flasher_args.json"
  22. --pid "${dfu_pid}"
  23. DEPENDS gen_project_binary bootloader
  24. VERBATIM
  25. USES_TERMINAL)
  26. add_custom_target(dfu-list
  27. COMMAND ${CMAKE_COMMAND}
  28. -D ESP_DFU_LIST="1"
  29. -P ${idf_path}/tools/cmake/run_dfu_util.cmake
  30. USES_TERMINAL)
  31. add_custom_target(dfu-flash
  32. COMMAND ${CMAKE_COMMAND}
  33. -D ESP_DFU_BIN="${CMAKE_CURRENT_BINARY_DIR}/dfu.bin"
  34. -D ESP_DFU_PID="${dfu_pid}"
  35. -P ${idf_path}/tools/cmake/run_dfu_util.cmake
  36. USES_TERMINAL)
  37. endfunction()