dfu.cmake 1.6 KB

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