Skip to content

Commit

Permalink
enhance development environment (#1841)
Browse files Browse the repository at this point in the history
* add sdkconfig.defaults per environment 

platformio/platform-espressif32#638

* add env to platformio

* add sdkconfig.<pioenv>.defaults

* Update platformio.ini

* Update .gitignore

* Delete sdkconfig.esp32cam-cpu-freq-240.defaults

* Delete sdkconfig.esp32cam-dev-himem.defaults

* Delete sdkconfig.esp32cam-dev.defaults

* Delete sdkconfig.esp32cam-no-softap.defaults

* Add files via upload

* Update sdkconfig.esp32cam-cpu-freq-240.defaults

* Update platformio.ini

* Update platformio.ini

* Update CMakeLists.txt

* Update sdkconfig.esp32cam-dev.defaults

* Update platformio.ini
  • Loading branch information
nliaudat authored Jan 15, 2023
1 parent bf44745 commit 284f7b1
Show file tree
Hide file tree
Showing 9 changed files with 267 additions and 54 deletions.
7 changes: 7 additions & 0 deletions code/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,10 @@
version.cpp
sdkconfig.esp32cam
sdkconfig.esp32cam-dev
sdkconfig.esp32cam-debug
sdkconfig.esp32cam-board-rev3
sdkconfig.esp32cam-cpu-freq-240
sdkconfig.esp32cam-board-rev3-cpu-freq-240
sdkconfig.esp32cam-dev-himem
sdkconfig.esp32cam-dev-task-analysis
sdkconfig.esp32cam-no-softap
13 changes: 11 additions & 2 deletions code/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.13.4)
cmake_minimum_required(VERSION 3.16.0)

list(APPEND EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common components/tflite-micro-esp-examples/components/tflite-lib)

Expand All @@ -8,6 +8,15 @@ ADD_CUSTOM_COMMAND(
COMMAND ${CMAKE_COMMAND} -P
${CMAKE_CURRENT_SOURCE_DIR}/version.cmake)

if(EXISTS "${SDKCONFIG}.defaults")
if(EXISTS "sdkconfig.defaults")
set(SDKCONFIG_DEFAULTS "${SDKCONFIG}.defaults;sdkconfig.defaults")
message(STATUS "-- Using defaults: ${SDKCONFIG_DEFAULTS} + sdkconfig.defaults")
else()
set(SDKCONFIG_DEFAULTS "${SDKCONFIG}.defaults")
endif()
message(STATUS "-- Using defaults: ${SDKCONFIG_DEFAULTS}")
endif()

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(esp32cam-server-only)
project(AI-on-the-edge)
184 changes: 132 additions & 52 deletions code/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,6 @@
-DUSE_ESP_IDF
lib_deps =

[common:arduino]
extends = common
lib_deps =
build_flags =
${common.build_flags}
-DUSE_ARDUINO

[common:esp32-idf]
extends = common:idf
platform = platformio/espressif32 @ 5.2.0
Expand All @@ -50,61 +43,54 @@
-Wall
-Wextra
-Wunreachable-code
-Wshadow-compatible-local
;-Wshadow-compatible-local
-fno-exceptions

; The main env - default
[env:esp32cam]
extends = common:esp32-idf
board = esp32cam
framework = espidf
build_flags =
;Add macro definition ENABLE_MQTT, ENABLE_INFLUXDB, DEBUG_DETAIL_ON
;if ENABLE_SOFTAP = disabled, set CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n in sdkconfig.defaults to save 28k of flash
-D ENABLE_MQTT -D ENABLE_INFLUXDB -D ENABLE_SOFTAP
${common:esp32-idf.build_flags}
${flags:runtime.build_flags}
board_build.partitions = partitions.csv
monitor_speed = 115200
monitor_rts = 0
monitor_dtr = 0


[env:esp32cam-dev]
extends = common:esp32-idf
board = node32s
board_build.flash_mode = qio
board = esp32cam
framework = espidf
build_flags =
; ### common imported :
${common:esp32-idf.build_flags}
${flags:runtime.build_flags}
; ### Sofware options : (can be set in defines.h)
-D ENABLE_MQTT
-D ENABLE_INFLUXDB
-D ENABLE_SOFTAP
board_build.partitions = partitions.csv
monitor_speed = 115200
monitor_rts = 0
monitor_dtr = 0

; full standalone dev mode
; As sample, the board is nod32s instead of esp32cam (do not change nothing in fact :)
; You can test newer platform_packages
; or flash mode (board_build.flash_mode = qio)
[env:esp32cam-dev]
extends = common:esp32-idf
board = esp32cam ; node32s
;board_build.flash_mode = qio ;generate SPI_FAST_FLASH_BOOT boot loop
build_flags =
; ### common imported :
${common:esp32-idf.build_flags}
${flags:clangtidy.build_flags}
; ### Sofware options :
; ### Sofware options : (can be set in defines.h)
-D ENABLE_MQTT
-D ENABLE_INFLUXDB
;-D ENABLE_SOFTAP
;### test options
; ### Debug options :
;-D DEBUG_DETAIL_ON
;-D DEBUG_DISABLE_BROWNOUT_DETECTOR
;-D DEBUG_ENABLE_SYSINFO
;-D DEBUG_ENABLE_PERFMON
;-D DEBUG_HIMEM_MEMORY_CHECK
;### test options
-D CONFIG_ESP_TASK_WDT
;-D CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL
-D CONFIG_SPIRAM
-D CONFIG_ESP_TASK_WDT_TIMEOUT_S ; fix for CONFIG_ESP_INT_WDT_TIMEOUT_MS
; ### Debug options :
-D DEBUG_DETAIL_ON
;-D DEBUG_DISABLE_BROWNOUT_DETECTOR
-D DEBUG_ENABLE_SYSINFO
-D DEBUG_ENABLE_PERFMON
;Task analysis
-D TASK_ANALYSIS_ON
-D CONFIG_FREERTOS_USE_TRACE_FACILITY
-D CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
-D CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID
;#### enable support for 8Mb SPIRAM_ ; testing : https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/himem.html
-DBOARD_HAS_PSRAM
-mfix-esp32-psram-cache-issue
-D CONFIG_SPIRAM_TYPE_AUTO
-D CONFIG_SPIRAM_USE_CAPS_ALLOC
-D CONFIG_SPIRAM_USE_MALLOC
;-D CONFIG_SPIRAM_BANKSWITCH_ENABLE=y
-D CONFIG_SPIRAM_BANKSWITCH_RESERVE=8
;-D CONFIG_SPIRAM_BANKSWITCH_RESERVE=4
;-D USE_HIMEM_IF_AVAILABLE
framework = espidf
lib_ldf_mode = deep+
platform = platformio/espressif32 @ 5.2.0
Expand All @@ -114,17 +100,111 @@ platform_packages =
;platformio/tool-cmake @ 3.16.4
;platformio/tool-cmake@^3.21.3
;platformio/tool-esptoolpy @ 1.40201.0 (4.2.1)
platformio/tool-esptoolpy@^1.40400.0
;platformio/tool-esptoolpy@^1.40400.0
;platformio/tool-idf @ 1.0.1
;platformio/tool-mconf @ 1.4060000.20190628 (406.0.0)
;platformio/tool-ninja @ 1.9.0
;platformio/tool-ninja @ 1.10.2
;platformio/toolchain-esp32ulp @ 1.22851.191205 (2.28.51)
espressif/toolchain-esp32ulp @ 2.35.0-20220830
;platformio/toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3
;espressif/toolchain-esp32ulp @ 2.35.0-20220830
;platformio/toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
;platformio/toolchain-xtensa-esp32 @ 11.2.0+2022r1


; platformio/espressif32 @ 5.3.0 dependencies :
;platformio/framework-espidf @ 3.40403.0
;platformio/tool-cmake @ 3.16.4
;platformio/tool-esptoolpy@^1.40400.0
;platformio/tool-idf @ 1.0.1
;platformio/tool-mconf @ 1.4060000.20190628
;platformio/tool-ninja @ 1.9.0
;espressif/toolchain-esp32ulp @ 2.35.0-20220830
;;;;espressif/toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
board_build.partitions = partitions.csv
monitor_speed = 115200
monitor_rts = 0
monitor_dtr = 0


; Activate all debug mode
; Cannot be used alone, but must be added at the end of extends = env:esp32cam-dev, esp32cam-debug
;If multiple items specified in the extends field then only values from the latter one will be used in the final configuration
;https://docs.platformio.org/en/stable/projectconf/section_env_advanced.html
[env:esp32cam-debug] ; activate all debug
;extends nothing, only apply sdkconfig.esp32-debug.defaults, enable debug options and clangtidy
build_flags =
; ### clangtidy build flags:
${flags:clangtidy.build_flags}
; ### Debug options :
-D DEBUG_DETAIL_ON
;-D DEBUG_DISABLE_BROWNOUT_DETECTOR
-D DEBUG_ENABLE_SYSINFO
-D DEBUG_ENABLE_PERFMON
;-D DEBUG_HIMEM_MEMORY_CHECK
;-D USE_HIMEM_IF_AVAILABLE
lib_ldf_mode = deep+

; Power management enabled
;https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/power_management.html
;https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/kconfig.html#config-pm-enable
[env:esp32cam-power-management]
build_flags =
-D TCONFIG_PM_ENABLE
-D CONFIG_PM_DFS_INIT_AUTO
-D CONFIG_FREERTOS_USE_TICKLESS_IDLE
;-D FREERTOS_IDLE_TIME_BEFORE_SLEEP=3

;**********************
; next section use modified version CMakeLists.txt of to use sdkconfig.<pioenv>.defaults + sdkconfig.defaults
; https://github.com/platformio/platform-espressif32/issues/638


; set board to rev3
[env:esp32cam-board-rev3]
extends = env:esp32cam-dev, esp32cam-debug

; set CPU frequency to 240 instead of 160 default
[env:esp32cam-cpu-freq-240]
extends = env:esp32cam-dev, esp32cam-debug
; sdkconfig.esp32cam-board-rev3.defaults override some sdkconfig.defaults

; set board to rev3 + CPU frequency to 240
; look at the extends : it takes esp32cam-dev and add env:esp32cam-board-rev3, env:esp32cam-cpu-freq-240 , esp32cam-debug parameters
[env:esp32cam-board-rev3-cpu-freq-240]
extends = env:esp32cam-dev, env:esp32cam-board-rev3, env:esp32cam-cpu-freq-240 , esp32cam-debug

; set board to rev3 + CPU frequency to 240 + power management
[env:esp32cam-board-rev3-cpu-freq-240-pow]
extends = env:esp32cam-dev, env:esp32cam-board-rev3, env:esp32cam-cpu-freq-240 , env:esp32cam-power-management, esp32cam-debug

; Enable use of 8 MB PSRAM boards
;https://github.com/espressif/esp-idf/blob/master/examples/system/himem/README.md
[env:esp32cam-dev-himem]
extends = env:esp32cam-dev, esp32cam-debug
; sdkconfig.esp32cam-dev-himem.defaults override some sdkconfig.defaults
build_flags =
-DBOARD_HAS_PSRAM
;-D DEBUG_HIMEM_MEMORY_CHECK
;-D USE_HIMEM_IF_AVAILABLE

; set options for task analysis (PR #1751)
[env:esp32cam-dev-task-analysis]
extends = env:esp32cam-dev, esp32cam-debug
; sdkconfig.esp32cam-dev-task-analysis.defaults override some sdkconfig.defaults
build_flags =
;-D DEBUG_DETAIL_ON ; if esp32cam-debug not in extends
-D TASK_ANALYSIS_ON


; Overwrite espcam build_flags to not include ENABLE_SOFTAP
; Nor the -U ENABLE_SOFTAP nor -D ENABLE_SOFTAP=0 works to unset defines actually
; Set CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n in sdkconfig.esp32cam-no-softap.defaults to disable softap in the esp-idf compilation
[env:esp32cam-no-softap] ;CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n saves 28k of flash
extends = env:esp32cam
build_flags =
; ### common imported :
${common:esp32-idf.build_flags}
${flags:clangtidy.build_flags}
; ### Sofware options :
-D ENABLE_MQTT
-D ENABLE_INFLUXDB
;-D ENABLE_SOFTAP ; disabled
7 changes: 7 additions & 0 deletions code/sdkconfig.esp32cam-board-rev3.defaults
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CONFIG_ESP32_REV_MIN_0=n

ESP32_REV_MIN_3=y
CONFIG_ESP32_REV_MIN_3=y

#https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/kconfig.html#config-spiram-cache-workaround
CONFIG_ESP32_DPORT_WORKAROUND=n
4 changes: 4 additions & 0 deletions code/sdkconfig.esp32cam-cpu-freq-240.defaults
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
CONFIG_FREERTOS_UNICORE=n
CONFIG_FREERTOS_HZ=1000
CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y
CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240
33 changes: 33 additions & 0 deletions code/sdkconfig.esp32cam-debug.defaults
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#enable bootloader logging
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE=n
CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2
CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=n
CONFIG_FREERTOS_ASSERT_DISABLE=yn
CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=n
#CONFIG_LOG_DEFAULT_LEVEL_NONE=y
#CONFIG_LOG_DEFAULT_LEVEL=0
CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y
CONFIG_LWIP_ESP_LWIP_ASSERT=n
CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED=n
CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2
# CONFIG_LOG_COLORS is not set

#set default loggin to
CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y
# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set
# CONFIG_BOOTLOADER_LOG_LEVEL_INFO is not set
# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set
# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set
CONFIG_BOOTLOADER_LOG_LEVEL=2

#disable lookup function
CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
# CONFIG_ESP_ERR_TO_NAME_LOOKUP is not set

#no panic message
ESP_SYSTEM_PANIC_SILENT_REBOOT=n

#disable ADC calibration (needed for external sensors)
CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y
CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y
CONFIG_ADC_CAL_LUT_ENABLE=needed
34 changes: 34 additions & 0 deletions code/sdkconfig.esp32cam-dev-himem.defaults
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#### https://github.com/espressif/esp-idf/blob/master/examples/system/himem/sdkconfig.defaults
CONFIG_SPIRAM=y
CONFIG_SPIRAM_SUPPORT=y
CONFIG_SPIRAM_BOOT_INIT=y
CONFIG_SPIRAM_IGNORE_NOTFOUND=n
CONFIG_SPIRAM_USE_MALLOC=y
CONFIG_SPIRAM_TYPE_AUTO=y
CONFIG_SPIRAM_SIZE=-1
CONFIG_SPIRAM_SPEED_40M=y
CONFIG_SPIRAM_MEMTEST=y
CONFIG_SPIRAM_CACHE_WORKAROUND=y
CONFIG_SPIRAM_BANKSWITCH_ENABLE=y
CONFIG_SPIRAM_BANKSWITCH_RESERVE=4

CONFIG_SPIRAM_USE_CAPS_ALLOC=y

/* some references for testing

# https://github.com/platformio/platform-espressif32/issues/185

#define CONFIG_SPIRAM_SUPPORT 1
#define CONFIG_PICO_PSRAM_CS_IO 10
#define CONFIG_ESP32_SPIRAM_SUPPORT 1
#define CONFIG_SPIRAM_BOOT_INIT 1
#define CONFIG_SPIRAM_IGNORE_NOTFOUND 0
#define CONFIG_SPIRAM_TYPE_AUTO 1
#define CONFIG_SPIRAM_SIZE -1
#define CONFIG_SPIRAM_USE_MEMMAP 1
#define CONFIG_SPIRAM_SPEED_40M 1
#define SPIRAM_USE_MALLOC 1
#define CONFIG_SPIRAM_CACHE_WORKAROUND 1
#define CONFIG_SPIRAM_BANKSWITCH_ENABLE 1
#define CONFIG_SPIRAM_BANKSWITCH_RESERVE 8
*/
3 changes: 3 additions & 0 deletions code/sdkconfig.esp32cam-dev-task-analysis.defaults
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
CONFIG_FREERTOS_USE_TRACE_FACILITY=1
CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y
CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y
36 changes: 36 additions & 0 deletions code/sdkconfig.esp32cam-dev.defaults
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
### nothing actually


/* #disabled

#### recommended optimizations to test
#https://docs.espressif.com/projects/esp-at/en/latest/esp32/Compile_and_Develop/How_to_optimize_throughput.html

# System
CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096
CONFIG_FREERTOS_UNICORE=n
CONFIG_FREERTOS_HZ=1000
#CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y
#CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240
#CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
#CONFIG_ESPTOOLPY_FLASHFREQ_80M=y

# LWIP
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534
CONFIG_LWIP_TCP_WND_DEFAULT=65534
CONFIG_LWIP_TCP_RECVMBOX_SIZE=12
CONFIG_LWIP_UDP_RECVMBOX_SIZE=12
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64

# Wi-Fi
#CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=16
#CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=64
#CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=64
#CONFIG_ESP32_WIFI_TX_BA_WIN=32
#CONFIG_ESP32_WIFI_RX_BA_WIN=32
#CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
#CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y

## end of recommended optimizations

*/

0 comments on commit 284f7b1

Please sign in to comment.