Initial commit with basic project structure and Firebeetle 2 board definition
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 19 KiB |
BIN
boards/espressif/esp_wrover_kit/doc/img/esp_wrover_kit.jpg
Normal file
|
After Width: | Height: | Size: 53 KiB |
621
boards/espressif/esp_wrover_kit/doc/index.rst
Normal file
@@ -0,0 +1,621 @@
|
||||
.. zephyr:board:: esp_wrover_kit
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
ESP-WROVER-KIT is an ESP32-based development board produced by `Espressif <https://www.espressif.com/>`_.
|
||||
|
||||
ESP-WROVER-KIT features the following integrated components:
|
||||
|
||||
- ESP32-WROVER-E module
|
||||
- LCD screen
|
||||
- MicroSD card slot
|
||||
|
||||
Its another distinguishing feature is the embedded FTDI FT2232HL chip - an advanced multi-interface
|
||||
USB bridge. This chip enables to use JTAG for direct debugging of ESP32 through the USB interface
|
||||
without a separate JTAG debugger. ESP-WROVER-KIT makes development convenient, easy, and
|
||||
cost-effective.
|
||||
|
||||
Most of the ESP32 I/O pins are broken out to the board's pin headers for easy access.
|
||||
|
||||
.. note::
|
||||
|
||||
ESP32's GPIO16 and GPIO17 are used as chip select and clock signals for PSRAM. By default, the two
|
||||
GPIOs are not broken out to the board's pin headers in order to ensure reliable performance.
|
||||
|
||||
For more information, check `ESP32-WROVER-E Datasheet`_ and `ESP32 Datasheet`_.
|
||||
|
||||
Functionality Overview
|
||||
**********************
|
||||
|
||||
The block diagram below shows the main components of ESP-WROVER-KIT and their interconnections.
|
||||
|
||||
.. image:: img/esp-wrover-kit-block-diagram.jpg
|
||||
:align: center
|
||||
:alt: ESP-WROVER-KIT
|
||||
|
||||
Functional Description
|
||||
**********************
|
||||
|
||||
The following two figures and the table below describe the key components, interfaces, and controls
|
||||
of the ESP-WROVER-KIT board.
|
||||
|
||||
.. figure:: img/esp_wrover_kit.jpg
|
||||
:align: center
|
||||
:alt: esp wrover front
|
||||
|
||||
ESP-WROVER-KIT board layout - front
|
||||
|
||||
.. _esp wrover back:
|
||||
|
||||
.. figure:: img/esp-wrover-kit-v4.1-layout-back.jpg
|
||||
:align: center
|
||||
:alt: esp wrover back
|
||||
|
||||
ESP-WROVER-KIT board layout - back
|
||||
|
||||
The table below provides description in the following manner:
|
||||
- Starting from the first picture's top right corner and going clockwise
|
||||
- Then moving on to the second picture
|
||||
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| Key Component | Description |
|
||||
+==================+=========================================================================+
|
||||
| FT2232 | The FT2232 chip serves as a multi-protocol USB-to-serial bridge |
|
||||
| | which can be programmed and controlled via USB to provide |
|
||||
| | communication with ESP32. FT2232 also features USB-to-JTAG |
|
||||
| | interface which is available on channel A of the chip, while USB-to- |
|
||||
| | serial is on channel B. The FT2232 chip enhances user-friendliness in |
|
||||
| | terms of application development and debugging. See `ESP-WROVER-KIT |
|
||||
| | V4.1 schematic |
|
||||
| | <https://dl.espressif.com/dl/schematics/ESP-WROVER-KIT_V4_1.pdf>`_. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| 32.768 kHz | External precision 32.768 kHz crystal oscillator serves as a clock with |
|
||||
| | low-power consumption while the chip is in Deep-sleep mode. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| 0R | Zero-ohm resistor intended as a placeholder for a current shunt, can |
|
||||
| | be desoldered or replaced with a current shunt to facilitate the |
|
||||
| | measurement of ESP32’s current consumption in different modes. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| ESP32-WROVER-E | This ESP32 module features 64-Mbit PSRAM for flexible extended |
|
||||
| module | storage and data processing capabilities. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| Diagnostic LEDs | Four red LEDs connected to the GPIO pins of FT2232. Intended for |
|
||||
| | future use. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| UART | Serial port. The serial TX/RX signals of FT2232 and ESP32 are broken |
|
||||
| | out to the inward and outward sides of JP2 respectively. By default, |
|
||||
| | these pairs of pins are connected with jumpers. To use ESP32’s serial |
|
||||
| | interface, remove the jumpers and connect another external serial |
|
||||
| | device to the respective pins. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| SPI | By default, ESP32 uses its SPI interface to access flash and PSRAM |
|
||||
| | memory inside the module. Use these pins to connect ESP32 to |
|
||||
| | another SPI device. In this case, an extra chip select (CS) signal is |
|
||||
| | needed. Please note that the voltage of this interface is 3.3 V. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| CTS/RTS | Serial port flow control signals: the pins are not connected to the |
|
||||
| | circuitry by default. To enable them, short the respective pins of JP14 |
|
||||
| | with jumpers. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| JTAG | JTAG interface. JTAG signals of FT2232 and ESP32 are broken out to |
|
||||
| | the inward and outward sides of JP2 respectively. By default, these |
|
||||
| | pairs of pins are disconnected. To enable JTAG, short the respective |
|
||||
| | pins with jumpers as shown in Section |
|
||||
| | :ref:`Setup Options<setup options>` |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| USB Port | USB interface. Power supply for the board as well as the |
|
||||
| | communication interface between a computer and the board. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| EN Button | Reset button. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| BOOT Button | Download button. Holding down Boot and then pressing EN initiates |
|
||||
| | Firmware Download mode for downloading firmware through the |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| Power Switch | Power On/Off Switch. Toggling toward the Boot button powers the |
|
||||
| | board on, toggling away from Boot powers the board off. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| Power Selector | Power supply selector interface. The board can be powered either via |
|
||||
| | USB or via the 5V Input interface. Select the power source with a |
|
||||
| | jumper. For more details, see Section Setup Options, jumper header |
|
||||
| | JP7. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| 5V input | 5V power supply interface for a standard coaxial power connector, |
|
||||
| | 5.5 x 2.1 mm, center positive. This interface can be more convenient |
|
||||
| | when the board is operating autonomously (not connected to a |
|
||||
| | computer). |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| 5V Power On LED | This red LED turns on when power is supplied to the board, either |
|
||||
| | from USB or 5V Input. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| LDO | NCP1117(1A). 5V-to-3.3V LDO. NCP1117 can provide a maximum |
|
||||
| | current of 1A. The LDO on the board has a fixed output voltage. |
|
||||
| | Although, the user can install an LDO with adjustable output voltage. |
|
||||
| | For details, please refer to `ESP-WROVER-KIT V4.1 schematic |
|
||||
| | <https://dl.espressif.com/dl/schematics/ESP-WROVER-KIT_V4_1.pdf>`_. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| Camera Connector | Camera interface, a standard OV7670 camera module. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| RGB LED | Red, green and blue (RGB) light emitting diodes (LEDs), can be |
|
||||
| | controlled by pulse width modulation (PWM). |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| I/O Connector | All the pins on the ESP32 module are broken out to pin headers. You |
|
||||
| | can program ESP32 to enable multiple functions, such as PWM, ADC, |
|
||||
| | DAC, I2C, I2S, SPI, etc. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| MicroSD Card | Useful for developing applications that access MicroSD card for data |
|
||||
| Slot | storage and retrieval. |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
| LCD | Support for mounting and interfacing a 3.2” SPI (standard 4-wire |
|
||||
| | Serial Peripheral Interface) LCD, as shown on figure |
|
||||
| | :ref:`ESP-WROVER-KIT board layout - back<esp wrover back>` |
|
||||
+------------------+-------------------------------------------------------------------------+
|
||||
|
||||
.. _setup options:
|
||||
|
||||
Setup Options
|
||||
*************
|
||||
|
||||
There are three jumper blocks available to set up the board functionality. The most frequently
|
||||
required options are listed in the table below.
|
||||
|
||||
.. |jmpextpwr| image:: img/esp-wrover-kit-v4.1-jp7-ext_5v.jpg
|
||||
|
||||
.. |jmpusbpwr| image:: img/esp-wrover-kit-v4.1-jp7-usb_5v.jpg
|
||||
|
||||
.. |jmpjtag| image:: img/esp-wrover-kit-v4.1-jp2-jtag.jpg
|
||||
|
||||
.. |jmpuart| image:: img/esp-wrover-kit-v4.1-jp2-tx-rx.jpg
|
||||
|
||||
.. |jmpctrl| image:: img/esp-wrover-kit-v4.1-jp14.jpg
|
||||
|
||||
+------------------+--------------------------------------------------------------+
|
||||
| Header | Jumper Setting | Description of Functionality |
|
||||
+========+================+=======================================================+
|
||||
| JP7 | |jmpextpwr| | Power ESP-WROVER-KIT via an external power supply |
|
||||
+--------+----------------+-------------------------------------------------------+
|
||||
| JP7 | |jmpusbpwr| | Power ESP-WROVER-KIT via USB |
|
||||
+--------+----------------+-------------------------------------------------------+
|
||||
| JP2 | |jmpjtag| | Enable JTAG functionality |
|
||||
+--------+----------------+-------------------------------------------------------+
|
||||
| JP2 | |jmpuart| | Enable UART communication |
|
||||
+--------+----------------+-------------------------------------------------------+
|
||||
| JP14 | |jmpctrl| | Enable RTS/CTS flow control for serial communication |
|
||||
+--------+----------------+-------------------------------------------------------+
|
||||
|
||||
Allocation of ESP32 Pins
|
||||
************************
|
||||
|
||||
Some pins / terminals of ESP32 are allocated for use with the onboard or external hardware. If
|
||||
that hardware is not used, e.g., nothing is plugged into the Camera (JP4) header, then these
|
||||
GPIOs can be used for other purposes.
|
||||
|
||||
Some of the pins, such as GPIO0 or GPIO2, have multiple functions and some of them are shared
|
||||
among onboard and external peripheral devices. Certain combinations of peripherals cannot work
|
||||
together. For example, it is not possible to do JTAG debugging of an application that is using
|
||||
SD card, because several pins are shared by JTAG and the SD card slot.
|
||||
|
||||
In other cases, peripherals can coexist under certain conditions. This is applicable to, for
|
||||
example, LCD screen and SD card that share only a single pin GPIO21. This pin is used to provide
|
||||
D/C (Data / Control) signal for the LCD as well as the Card Detect signal read from the SD card
|
||||
slot. If the card detect functionality is not essential, then it may be disabled by removing R167,
|
||||
so both LCD and SD may operate together.
|
||||
|
||||
For more details on which pins are shared among which peripherals, please refer to the table in
|
||||
the next section.
|
||||
|
||||
Main I/O Connector / JP1
|
||||
************************
|
||||
|
||||
The JP1 connector consists of 14x2 male pins whose functions are shown in the middle two “I/O”
|
||||
columns of the table below. The two “Shared With” columns on both sides describe where else on
|
||||
the board a certain GPIO is used.
|
||||
|
||||
+-------------------+------+------+----------------------+
|
||||
| Shared With | I/O | I/O | Shared With |
|
||||
+===================+======+======+======================+
|
||||
| n/a | 3.3V | GND | n/a |
|
||||
+-------------------+------+------+----------------------+
|
||||
| NC/XTAL | IO32 | IO33 | NC/XTAL |
|
||||
+-------------------+------+------+----------------------+
|
||||
| JTAG, MicroSD | IO12 | IO13 | JTAG, MicroSD |
|
||||
+-------------------+------+------+----------------------+
|
||||
| JTAG, MicroSD | IO14 | IO27 | Camera |
|
||||
+-------------------+------+------+----------------------+
|
||||
| Camera | IO26 | IO25 | Camera, LCD |
|
||||
+-------------------+------+------+----------------------+
|
||||
| Camera | IO35 | IO34 | Camera |
|
||||
+-------------------+------+------+----------------------+
|
||||
| Camera | IO39 | IO36 | Camera |
|
||||
+-------------------+------+------+----------------------+
|
||||
| JTAG | EN | IO23 | Camera, LCD |
|
||||
+-------------------+------+------+----------------------+
|
||||
| Camera, LCD | IO22 | IO21 | Camera, LCD, MicroSD |
|
||||
+-------------------+------+------+----------------------+
|
||||
| Camera, LCD | IO19 | IO18 | Camera, LCD |
|
||||
+-------------------+------+------+----------------------+
|
||||
| Camera, LCD | IO5 | IO17 | PSRAM |
|
||||
+-------------------+------+------+----------------------+
|
||||
| PSRAM | IO16 | IO4 | LED, Camera, MicroSD |
|
||||
+-------------------+------+------+----------------------+
|
||||
| Camera, LED, Boot | IO0 | IO2 | LED, MicroSD |
|
||||
+-------------------+------+------+----------------------+
|
||||
| JTAG, MicroSD | IO15 | 5V | |
|
||||
+-------------------+------+------+----------------------+
|
||||
|
||||
Legend:
|
||||
|
||||
- NC/XTAL - 32.768 kHz Oscillator
|
||||
- JTAG - JTAG / JP2
|
||||
- Boot - Boot button / SW2
|
||||
- Camera - Camera / JP4
|
||||
- LED - RGB LED
|
||||
- MicroSD - MicroSD Card / J4
|
||||
- LCD - LCD / U5
|
||||
- PSRAM - ESP32-WROVER-E's PSRAM
|
||||
|
||||
32.768 kHz Oscillator
|
||||
*********************
|
||||
|
||||
+---+-----------+
|
||||
| . | ESP32 Pin |
|
||||
+===+===========+
|
||||
| 1 | GPIO32 |
|
||||
+---+-----------+
|
||||
| 2 | GPIO33 |
|
||||
+---+-----------+
|
||||
|
||||
.. note::
|
||||
|
||||
Since GPIO32 and GPIO33 are connected to the oscillator by default, they are not connected to
|
||||
the JP1 I/O connector to maintain signal integrity. This allocation may be changed from the
|
||||
oscillator to JP1 by desoldering the zero-ohm resistors from positions R11 / R23 and re-soldering
|
||||
them to positions R12 / R24.
|
||||
|
||||
SPI Flash / JP2
|
||||
***************
|
||||
|
||||
+---+--------------+
|
||||
| . | ESP32 Pin |
|
||||
+===+==============+
|
||||
| 1 | CLK / GPIO6 |
|
||||
+---+--------------+
|
||||
| 2 | SD0 / GPIO7 |
|
||||
+---+--------------+
|
||||
| 3 | SD1 / GPIO8 |
|
||||
+---+--------------+
|
||||
| 4 | SD2 / GPIO9 |
|
||||
+---+--------------+
|
||||
| 5 | SD3 / GPIO10 |
|
||||
+---+--------------+
|
||||
| 6 | CDM / GPIO11 |
|
||||
+---+--------------+
|
||||
|
||||
.. important::
|
||||
The module's flash bus is connected to the jumper block JP2 through zero-ohm resistors R140 ~
|
||||
R145. If the flash memory needs to operate at the frequency of 80 MHz, for reasons such as
|
||||
improving the integrity of bus signals, you can desolder these resistors to disconnect the
|
||||
module's flash bus from the pin header JP2.
|
||||
|
||||
JTAG / JP2
|
||||
**********
|
||||
|
||||
+---+---------------+-------------+
|
||||
| . | ESP32 Pin | JTAG Signal |
|
||||
+===+===============+=============+
|
||||
| 1 | EN | TRST_N |
|
||||
+---+---------------+-------------+
|
||||
| 2 | MTMS / GPIO14 | TMS |
|
||||
+---+---------------+-------------+
|
||||
| 3 | MTDO / GPIO15 | TDO |
|
||||
+---+---------------+-------------+
|
||||
| 4 | MTDI / GPIO12 | TDI |
|
||||
+---+---------------+-------------+
|
||||
| 5 | MTCK / GPIO13 | TCK |
|
||||
+---+---------------+-------------+
|
||||
|
||||
Camera / JP4
|
||||
************
|
||||
|
||||
+----+-----------+-----------------------------+
|
||||
| . | ESP32 Pin | Camera Signal |
|
||||
+====+===========+=============================+
|
||||
| 1 | n/a | 3.3V |
|
||||
+----+-----------+-----------------------------+
|
||||
| 2 | n/a | Ground |
|
||||
+----+-----------+-----------------------------+
|
||||
| 3 | GPIO27 | SIO_C / SCCB Clock |
|
||||
+----+-----------+-----------------------------+
|
||||
| 4 | GPIO26 | SIO_D / SCCB Data |
|
||||
+----+-----------+-----------------------------+
|
||||
| 5 | GPIO25 | VSYNC / Vertical Sync |
|
||||
+----+-----------+-----------------------------+
|
||||
| 6 | GPIO23 | HREF / Horizontal Reference |
|
||||
+----+-----------+-----------------------------+
|
||||
| 7 | GPIO22 | PCLK / Pixel Clock |
|
||||
+----+-----------+-----------------------------+
|
||||
| 8 | GPIO21 | XCLK / System Clock |
|
||||
+----+-----------+-----------------------------+
|
||||
| 9 | GPIO35 | D7 / Pixel Data Bit 7 |
|
||||
+----+-----------+-----------------------------+
|
||||
| 10 | GPIO34 | D6 / Pixel Data Bit 6 |
|
||||
+----+-----------+-----------------------------+
|
||||
| 11 | GPIO39 | D5 / Pixel Data Bit 5 |
|
||||
+----+-----------+-----------------------------+
|
||||
| 12 | GPIO36 | D4 / Pixel Data Bit 4 |
|
||||
+----+-----------+-----------------------------+
|
||||
| 13 | GPIO19 | D3 / Pixel Data Bit 3 |
|
||||
+----+-----------+-----------------------------+
|
||||
| 14 | GPIO18 | D2 / Pixel Data Bit 2 |
|
||||
+----+-----------+-----------------------------+
|
||||
| 15 | GPIO5 | D1 / Pixel Data Bit 1 |
|
||||
+----+-----------+-----------------------------+
|
||||
| 16 | GPIO4 | D0 / Pixel Data Bit 0 |
|
||||
+----+-----------+-----------------------------+
|
||||
| 17 | GPIO0 | RESET / Camera Reset |
|
||||
+----+-----------+-----------------------------+
|
||||
| 18 | n/a | PWDN / Camera Power Down |
|
||||
+----+-----------+-----------------------------+
|
||||
|
||||
- Signals D0 .. D7 denote camera data bus
|
||||
|
||||
RGB LED
|
||||
*******
|
||||
|
||||
+----+-----------+---------+
|
||||
| . | ESP32 Pin | RGB LED |
|
||||
+====+===========+=========+
|
||||
| 1 | GPIO0 | Red |
|
||||
+----+-----------+---------+
|
||||
| 2 | GPIO2 | Green |
|
||||
+----+-----------+---------+
|
||||
| 3 | GPIO4 | Blue |
|
||||
+----+-----------+---------+
|
||||
|
||||
MicroSD Card
|
||||
************
|
||||
|
||||
+---+---------------+----------------+
|
||||
| . | ESP32 Pin | MicroSD Signal |
|
||||
+===+===============+================+
|
||||
| 1 | MTDI / GPIO12 | DATA2 |
|
||||
+---+---------------+----------------+
|
||||
| 2 | MTCK / GPIO13 | CD / DATA3 |
|
||||
+---+---------------+----------------+
|
||||
| 3 | MTDO / GPIO15 | CMD |
|
||||
+---+---------------+----------------+
|
||||
| 4 | MTMS / GPIO14 | CLK |
|
||||
+---+---------------+----------------+
|
||||
| 5 | GPIO2 | DATA0 |
|
||||
+---+---------------+----------------+
|
||||
| 6 | GPIO4 | DATA1 |
|
||||
+---+---------------+----------------+
|
||||
| 7 | GPIO21 | Card Detect |
|
||||
+---+---------------+----------------+
|
||||
|
||||
LCD / U5
|
||||
********
|
||||
|
||||
+---+-----------+------------+
|
||||
| . | ESP32 Pin | LCD Signal |
|
||||
+===+===========+============+
|
||||
| 1 | GPIO18 | RESET |
|
||||
+---+-----------+------------+
|
||||
| 2 | GPIO19 | SCL |
|
||||
+---+-----------+------------+
|
||||
| 3 | GPIO21 | D/C |
|
||||
+---+-----------+------------+
|
||||
| 4 | GPIO22 | CS |
|
||||
+---+-----------+------------+
|
||||
| 5 | GPIO23 | SDA |
|
||||
+---+-----------+------------+
|
||||
| 6 | GPIO25 | SDO |
|
||||
+---+-----------+------------+
|
||||
| 7 | GPIO5 | Backlight |
|
||||
+---+-----------+------------+
|
||||
|
||||
Start Application Development
|
||||
*****************************
|
||||
|
||||
Before powering up your ESP-WROVER-KIT, please make sure that the board is in good
|
||||
condition with no obvious signs of damage.
|
||||
|
||||
Initial Setup
|
||||
*************
|
||||
|
||||
Please set only the following jumpers shown in the pictures below:
|
||||
|
||||
- Select USB as the power source using the jumper block JP7.
|
||||
- Enable UART communication using the jumper block JP2.
|
||||
|
||||
+------------------------+---------------------------+
|
||||
| Power up from USB port | Enable UART communication |
|
||||
+========+===============+===========================+
|
||||
| |jmpusbpwr| | |jmpuart| |
|
||||
+------------------------+---------------------------+
|
||||
|
||||
Do not install any other jumpers.
|
||||
|
||||
Turn the Power Switch to ON, the 5V Power On LED should light up.
|
||||
|
||||
Supported Features
|
||||
==================
|
||||
|
||||
.. zephyr:board-supported-hw::
|
||||
|
||||
System requirements
|
||||
===================
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Espressif HAL requires WiFi and Bluetooth binary blobs in order work. Run the command
|
||||
below to retrieve those files.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
west blobs fetch hal_espressif
|
||||
|
||||
.. note::
|
||||
|
||||
It is recommended running the command above after :file:`west update`.
|
||||
|
||||
Building & Flashing
|
||||
*******************
|
||||
|
||||
.. zephyr:board-supported-runners::
|
||||
|
||||
Simple boot
|
||||
===========
|
||||
|
||||
The board could be loaded using the single binary image, without 2nd stage bootloader.
|
||||
It is the default option when building the application without additional configuration.
|
||||
|
||||
.. note::
|
||||
|
||||
Simple boot does not provide any security features nor OTA updates.
|
||||
|
||||
MCUboot bootloader
|
||||
==================
|
||||
|
||||
User may choose to use MCUboot bootloader instead. In that case the bootloader
|
||||
must be built (and flashed) at least once.
|
||||
|
||||
There are two options to be used when building an application:
|
||||
|
||||
1. Sysbuild
|
||||
2. Manual build
|
||||
|
||||
.. note::
|
||||
|
||||
User can select the MCUboot bootloader by adding the following line
|
||||
to the board default configuration file.
|
||||
|
||||
.. code:: cfg
|
||||
|
||||
CONFIG_BOOTLOADER_MCUBOOT=y
|
||||
|
||||
Sysbuild
|
||||
========
|
||||
|
||||
The sysbuild makes possible to build and flash all necessary images needed to
|
||||
bootstrap the board with the ESP32 SoC.
|
||||
|
||||
To build the sample application using sysbuild use the command:
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:tool: west
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: esp_wrover_kit
|
||||
:goals: build
|
||||
:west-args: --sysbuild
|
||||
:compact:
|
||||
|
||||
By default, the ESP32 sysbuild creates bootloader (MCUboot) and application
|
||||
images. But it can be configured to create other kind of images.
|
||||
|
||||
Build directory structure created by sysbuild is different from traditional
|
||||
Zephyr build. Output is structured by the domain subdirectories:
|
||||
|
||||
.. code-block::
|
||||
|
||||
build/
|
||||
├── hello_world
|
||||
│ └── zephyr
|
||||
│ ├── zephyr.elf
|
||||
│ └── zephyr.bin
|
||||
├── mcuboot
|
||||
│ └── zephyr
|
||||
│ ├── zephyr.elf
|
||||
│ └── zephyr.bin
|
||||
└── domains.yaml
|
||||
|
||||
.. note::
|
||||
|
||||
With ``--sysbuild`` option the bootloader will be re-build and re-flash
|
||||
every time the pristine build is used.
|
||||
|
||||
For more information about the system build please read the :ref:`sysbuild` documentation.
|
||||
|
||||
Manual build
|
||||
============
|
||||
|
||||
During the development cycle, it is intended to build & flash as quickly possible.
|
||||
For that reason, images can be built one at a time using traditional build.
|
||||
|
||||
The instructions following are relevant for both manual build and sysbuild.
|
||||
The only difference is the structure of the build directory.
|
||||
|
||||
.. note::
|
||||
|
||||
Remember that bootloader (MCUboot) needs to be flash at least once.
|
||||
|
||||
Build and flash applications as usual (see :ref:`build_an_application` and
|
||||
:ref:`application_run` for more details).
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: esp_wrover_kit/esp32/procpu
|
||||
:goals: build
|
||||
|
||||
The usual ``flash`` target will work with the ``esp_wrover_kit`` board
|
||||
configuration. Here is an example for the :zephyr:code-sample:`hello_world`
|
||||
application.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: esp_wrover_kit/esp32/procpu
|
||||
:goals: flash
|
||||
|
||||
Open the serial monitor using the following command:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
west espressif monitor
|
||||
|
||||
After the board has automatically reset and booted, you should see the following
|
||||
message in the monitor:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
***** Booting Zephyr OS vx.x.x-xxx-gxxxxxxxxxxxx *****
|
||||
Hello World! esp_wrover_kit
|
||||
|
||||
Debugging
|
||||
*********
|
||||
|
||||
ESP32 support on OpenOCD is available at `OpenOCD ESP32`_.
|
||||
|
||||
On the ESP-WROVER-KIT board, the JTAG pins are connected internally to
|
||||
a USB serial port on the same device as the console. These boards
|
||||
require no external hardware and are debuggable as-is. The JTAG
|
||||
signals, however, must be jumpered closed to connect the internal
|
||||
controller (the default is to leave them disconnected). The jumper
|
||||
headers are on the right side of the board as viewed from the power
|
||||
switch, next to similar headers for SPI and UART. See
|
||||
`ESP-WROVER-32 V3 Getting Started Guide`_ for details.
|
||||
|
||||
Here is an example for building the :zephyr:code-sample:`hello_world` application.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: esp_wrover_kit/esp32/procpu
|
||||
:goals: build flash
|
||||
:gen-args: -DOPENOCD=<path/to/bin/openocd> -DOPENOCD_DEFAULT_PATH=<path/to/openocd/share/openocd/scripts>
|
||||
|
||||
You can debug an application in the usual way. Here is an example for the :zephyr:code-sample:`hello_world` application.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: esp_wrover_kit/esp32/procpu
|
||||
:goals: debug
|
||||
|
||||
References
|
||||
**********
|
||||
|
||||
.. target-notes::
|
||||
|
||||
.. _`ESP32 Datasheet`: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf (PDF)
|
||||
.. _`ESP32-WROVER-E Datasheet`: https://www.espressif.com/sites/default/files/documentation/esp32-wrover-e_esp32-wrover-ie_datasheet_en.pdf (PDF)
|
||||
.. _`OpenOCD ESP32`: https://github.com/espressif/openocd-esp32/releases
|
||||
.. _`ESP-WROVER-32 V3 Getting Started Guide`: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-wrover-kit.html
|
||||