esp.conf 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. ESP_KCONFIGS=
  2. ESP_KCONFIGS_PROJBUILD=
  3. ESP_LDFRAGMENTS=
  4. ESP_SDKCONFIG_RENAMES=
  5. macro ESP_KCONFIG(Kconfig) {
  6. SET_APPEND(ESP_KCONFIGS \${input;hide:$Kconfig})
  7. SET_APPEND(ESP_KCONFIGS_GLOBAL ${pre=$ARCADIA_ROOT/$MODDIR/:Kconfig})
  8. }
  9. macro ESP_KCONFIG_PROJBUILD(Kconfig) {
  10. SET_APPEND(ESP_KCONFIGS_PROJBUILD \${input;hide:$Kconfig})
  11. SET_APPEND(ESP_KCONFIGS_PROJBUILD_GLOBAL ${pre=$ARCADIA_ROOT/$MODDIR/:Kconfig})
  12. }
  13. macro ESP_LDFRAGMENTS(Fragments...) {
  14. SET_APPEND(ESP_LDFRAGMENTS ${pre=\$\{input\;hide\:\";suf=\"\}:Fragments})
  15. SET_APPEND(ESP_LDFRAGMENTS_GLOBAL ${pre=$ARCADIA_ROOT/$MODDIR/:Fragments})
  16. }
  17. macro ESP_SDKCONFIG_RENAME(Rename) {
  18. SET_APPEND(ESP_SDKCONFIG_RENAMES \${input;hide:$Rename})
  19. SET_APPEND(ESP_SDKCONFIG_RENAMES_GLOBAL ${pre=$ARCADIA_ROOT/$MODDIR/:Rename})
  20. }
  21. ESP_LINK_LIB=$LINK_LIB $ESP_KCONFIGS $ESP_KCONFIGS_PROJBUILD $ESP_LDFRAGMENTS $ESP_SDKCONFIG_RENAMES
  22. ESP_CONFIG=contrib/libs/esp-idf/config
  23. module ESP_LIBRARY: LIBRARY {
  24. .CMD=ESP_LINK_LIB
  25. .GLOBAL=ESP_KCONFIGS ESP_KCONFIGS_PROJBUILD ESP_LDFRAGMENTS ESP_SDKCONFIG_RENAMES
  26. ADDINCL(GLOBAL $ESP_CONFIG)
  27. }
  28. ESP_KCONFIGS_CMD=$WRITER_PY --file ${tmp:"kconfigs.in"} -m ${pre="source \"";suf="\"":ESP_KCONFIGS_GLOBAL}
  29. ESP_KCONFIGS_PROJBUILD_CMD=$WRITER_PY --file ${tmp:"kconfigs_projbuild.in"} -m ${pre="source \"";suf="\"":ESP_KCONFIGS_PROJBUILD_GLOBAL}
  30. ESP_SDKCONFIG_DEFAULTS=contrib/libs/esp-idf/sdkconfig.defaults
  31. macro _ESP_CONFGEN_DEFAULTS_HELPER(Defaults...) {
  32. .CMD=${pre=--defaults :Defaults}
  33. }
  34. macro _ESP_CONFGEN_DEFAULTS_ARGS(Defaults...) {
  35. .CMD=$_ESP_CONFGEN_DEFAULTS_HELPER(${input:Defaults})
  36. }
  37. ESP_CONFGEN_CMD= \
  38. ${tool:"contrib/libs/esp-idf/tools/kconfig_new/confgen"} \
  39. $_ESP_CONFGEN_DEFAULTS_ARGS($ESP_SDKCONFIG_DEFAULTS) \
  40. --kconfig ${input:"contrib/libs/esp-idf/Kconfig"} \
  41. --sdkconfig-rename ${input:"contrib/libs/esp-idf/sdkconfig.rename"} \
  42. --env IDF_CMAKE=y \
  43. --env IDF_TARGET=esp32c3 \
  44. --env IDF_ENV_FPGA= \
  45. --env IDF_PATH=$ARCADIA_ROOT/contrib/libs/esp-idf \
  46. --env COMPONENT_KCONFIGS_SOURCE_FILE=${tmp:"kconfigs.in"} \
  47. --env COMPONENT_KCONFIGS_PROJBUILD_SOURCE_FILE=${tmp:"kconfigs_projbuild.in"} \
  48. --env COMPONENT_SDKCONFIG_RENAMES=${join=" ":ESP_SDKCONFIG_RENAMES_GLOBAL} \
  49. --output config ${output:"sdkconfig"} \
  50. --output header ${output:"sdkconfig.h"}
  51. ESP_LIBRARIES_CMD=$WRITER_PY --file ${tmp:"ldgen_libraries"} -m $PEERS
  52. ESP_LDGEN_CMD= \
  53. ${tool:"contrib/libs/esp-idf/tools/ldgen"} \
  54. --config ${tmp:"sdkconfig"} \
  55. --fragments $ESP_LDFRAGMENTS_GLOBAL \
  56. --input ${input:"contrib/libs/esp-idf/components/esp_system/ld/esp32c3/sections.ld.in"} \
  57. --output ${output:"sections.ld"} \
  58. --kconfig ${input:"contrib/libs/esp-idf/Kconfig"} \
  59. --env IDF_CMAKE=y \
  60. --env IDF_TARGET=esp32c3 \
  61. --env IDF_ENV_FPGA= \
  62. --env IDF_PATH=$ARCADIA_ROOT/contrib/libs/esp-idf \
  63. --env COMPONENT_KCONFIGS_SOURCE_FILE=${tmp:"kconfigs.in"} \
  64. --env COMPONENT_KCONFIGS_PROJBUILD_SOURCE_FILE=${tmp:"kconfigs_projbuild.in"} \
  65. --libraries-file ${tmp:"ldgen_libraries"} \
  66. --objdump $OBJDUMP_TOOL
  67. ESP_FLASH_SIZE=4MB
  68. macro _ESP_ELF2IMAGE(Elf, Args...) {
  69. .CMD=${cwd:BINDIR} ${tool:"contrib/tools/esptool/esptool"} --chip esp32c3 elf2image $Args --flash_mode dio --flash_freq 80m --flash_size $ESP_FLASH_SIZE --min-rev 3 -o ${output;noext:Elf.bin} $Elf
  70. }
  71. ESP_PARTITION_TABLE_OFFSET=0x8000
  72. ESP_PARTITION_TABLE=partitions.csv
  73. ESP_GEN_ESP32PART_CMD= \
  74. ${tool:"contrib/libs/esp-idf/components/partition_table/gen_esp32part"} \
  75. --flash-size $ESP_FLASH_SIZE \
  76. --offset $ESP_PARTITION_TABLE_OFFSET \
  77. --secure \
  78. ${input:ESP_PARTITION_TABLE} \
  79. ${output:"partition-table.bin"}
  80. ESP_LINK_EXE= \
  81. && $ESP_KCONFIGS_CMD \
  82. && $ESP_KCONFIGS_PROJBUILD_CMD \
  83. && $ESP_CONFGEN_CMD \
  84. && $ESP_LIBRARIES_CMD \
  85. && $ESP_LDGEN_CMD \
  86. && $ESP_GEN_ESP32PART_CMD \
  87. && $LINK_EXE \
  88. && $_ESP_ELF2IMAGE($MODULE_PREFIX$REALPRJNAME, "--secure-pad-v2")
  89. ### @usage: ESP_PROGRAM([progname])
  90. ###
  91. ### Program module for Espressif microcontrollers.
  92. ### Converts ELF to binary image file suitable for flashing.
  93. ### Currently, only ESP32-C3 is supported.
  94. module ESP_PROGRAM: PROGRAM {
  95. .CMD=ESP_LINK_EXE
  96. .GLOBAL=ESP_KCONFIGS ESP_KCONFIGS_PROJBUILD ESP_LDFRAGMENTS ESP_SDKCONFIG_RENAMES
  97. ALLOCATOR(FAKE)
  98. NO_PLATFORM()
  99. LINKER_SCRIPT_VALUE+=-T$ARCADIA_BUILD_ROOT/$MODDIR/sections.ld
  100. }
  101. ESP_BOOTLOADER_LINK_EXE= \
  102. && $LINK_EXE \
  103. && $_ESP_ELF2IMAGE($MODULE_PREFIX$REALPRJNAME, "--pad-to-size", "4KB")
  104. module ESP_BOOTLOADER: PROGRAM {
  105. .CMD=ESP_BOOTLOADER_LINK_EXE
  106. ALLOCATOR(FAKE)
  107. NO_PLATFORM()
  108. }
  109. when ($ESP_BOOTLOADER_BUILD == "yes") {
  110. CFLAGS+=-DBOOTLOADER_BUILD -fno-stack-protector
  111. }