.. _esp32s2_saola: ESP32-S2 ######## Overview ******** ESP32-S2 is a highly integrated, low-power, single-core Wi-Fi Microcontroller SoC, designed to be secure and cost-effective, with a high performance and a rich set of IO capabilities. [1]_ The features include the following: - RSA-3072-based secure boot - AES-XTS-256-based flash encryption - Protected private key and device secrets from software access - Cryptographic accelerators for enhanced performance - Protection against physical fault injection attacks - Various peripherals: - 43x programmable GPIOs - 14x configurable capacitive touch GPIOs - USB OTG - LCD interface - camera interface - SPI - I2S - UART - ADC - DAC System requirements ******************* Build Environment Setup ======================= Some variables must be exported into the environment prior to building this port. Find more information at :ref:`env_vars` on how to keep this settings saved in you environment. .. note:: In case of manual toolchain installation, set :file:`ESPRESSIF_TOOLCHAIN_PATH` accordingly. Otherwise, set toolchain path as below. If necessary. On Linux and macOS: .. code-block:: console export ZEPHYR_TOOLCHAIN_VARIANT="espressif" export ESPRESSIF_TOOLCHAIN_PATH="${HOME}/.espressif/tools/zephyr" On Windows: .. code-block:: console # on CMD: set ESPRESSIF_TOOLCHAIN_PATH=%USERPROFILE%\.espressif\tools\zephyr set ZEPHYR_TOOLCHAIN_VARIANT=espressif # on PowerShell $env:ESPRESSIF_TOOLCHAIN_PATH="$env:USERPROFILE\.espressif\tools\zephyr" $env:ZEPHYR_TOOLCHAIN_VARIANT="espressif" Finally, retrieve required submodules to build this port. This might take a while for the first time: .. code-block:: console west espressif update .. note:: It is recommended running the command above after :file:`west update` so that submodules also get updated. Flashing ======== The usual ``flash`` target will work with the ``esp32s2_saola`` board configuration. Here is an example for the :ref:`hello_world` application. .. zephyr-app-commands:: :zephyr-app: samples/hello_world :board: esp32s2_saola :goals: flash Refer to :ref:`build_an_application` and :ref:`application_run` for more details. It's impossible to determine which serial port the ESP32-S2 board is connected to, as it uses a generic RS232-USB converter. The default of ``/dev/ttyUSB0`` is provided as that's often the assigned name on a Linux machine without any other such converters. The baud rate of 921600bps is recommended. If experiencing issues when flashing, try halving the value a few times (460800, 230400, 115200, etc). All flashing options are now handled by the :ref:`west` tool, including flashing with custom options such as a different serial port. The ``west`` tool supports specific options for the ESP32-S2 board, as listed here: --esp-idf-path ESP_IDF_PATH path to ESP-IDF --esp-device ESP_DEVICE serial port to flash, default $ESPTOOL_PORT if defined. If not, esptool will loop over available serial ports until it finds ESP32 device to flash. --esp-baud-rate ESP_BAUD_RATE serial baud rate, default 921600 --esp-flash-size ESP_FLASH_SIZE flash size, default "detect" --esp-flash-freq ESP_FLASH_FREQ flash frequency, default "40m" --esp-flash-mode ESP_FLASH_MODE flash mode, default "dio" --esp-tool ESP_TOOL if given, complete path to espidf. default is to search for it in [ESP_IDF_PATH]/components/esptool_py/ esptool/esptool.py --esp-flash-bootloader ESP_FLASH_BOOTLOADER Bootloader image to flash --esp-flash-partition_table ESP_FLASH_PARTITION_TABLE Partition table to flash For example, to flash to ``/dev/ttyUSB2``, use the following command after having build the application in the ``build`` directory: .. code-block:: console west flash -d build/ --skip-rebuild --esp-device /dev/ttyUSB2 References ********** .. [1] https://www.espressif.com/en/products/socs/esp32-s2 .. _`ESP32S2 Technical Reference Manual`: https://espressif.com/sites/default/files/documentation/esp32-s2_technical_reference_manual_en.pdf .. _`ESP32S2 Datasheet`: https://www.espressif.com/sites/default/files/documentation/esp32-s2_datasheet_en.pdf