dfu.cmake 1.4 KB

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