Documentation: Improve pages for ESP boards

This commit is contained in:
Lucas Saavedra Vaz
2023-03-24 11:44:03 -03:00
committed by Petro Karashchenko
parent c961edbe6c
commit c702223fab
28 changed files with 2032 additions and 271 deletions
File diff suppressed because it is too large Load Diff
@@ -49,10 +49,10 @@ First make sure that ``esptool.py`` is installed. This tool is used to convert
the ELF to a compatible ESP32 image and to flash the image into the board.
It can be installed with: ``pip install esptool``.
Configure the NUttX project: ``./tools/configure.sh esp32c3-devkit:nsh``
Configure the NuttX project: ``./tools/configure.sh esp32c3-devkit:nsh``
Run ``make`` to build the project. Note that the conversion mentioned above is
included in the build process.
The `esptool.py` command to flash all the binaries is::
included in the build process.
The ``esptool.py`` command to flash all the binaries is::
esptool.py --chip esp32c3 --port /dev/ttyUSBXX --baud 921600 write_flash 0x0 bootloader.bin 0x8000 partition-table.bin 0x10000 nuttx.bin
@@ -60,7 +60,7 @@ However, this is also included in the build process and we can build and flash w
make flash ESPTOOL_PORT=<port> ESPTOOL_BINDIR=../esp-bins
Where ``<port>`` is typically ``/dev/ttyUSB0`` or similar and ``../esp-bins`` is
Where ``<port>`` is typically ``/dev/ttyUSB0`` or similar and ``../esp-bins`` is
the path to the folder containing the bootloader and the partition table
for the ESP32-C3 as explained above.
Note that this step is required only one time. Once the bootloader and partition
@@ -70,11 +70,11 @@ would just require: ``make flash ESPTOOL_PORT=/dev/ttyUSBXX``
Debugging with OpenOCD
======================
Download and build OpenOCD from Espressif, that can be found in
https://github.com/espressif/openocd-esp32
Download and build OpenOCD from Espressif, that can be found in
https://github.com/espressif/openocd-esp32
If you have an ESP32-C3 ECO3, no external JTAG is required to debug, the ESP32-C3
integrates a USB-to-JTAG adapter.
integrates a USB-to-JTAG adapter.
OpenOCD can then be used::
@@ -89,7 +89,7 @@ It can be connected as follows::
TDO -> GPIO7
Furthermore, an efuse needs to be burnt to be able to debug::
espefuse.py -p <port> burn_efuse DIS_USB_JTAG
OpenOCD can then be used::
@@ -104,25 +104,26 @@ The following list indicates the state of peripherals' support in NuttX:
=========== ======= =====
Peripheral Support NOTES
=========== ======= =====
GPIO Yes
UART Yes
SPI Yes
I2C Yes
DMA Yes
Wifi Yes
ADC Yes
AES Yes
Bluetooth Yes
CDC Console Yes Rev.3
DMA Yes
eFuse Yes
GPIO Yes
I2C Yes
LED_PWM Yes
RNG Yes
RSA Yes
RTC Yes
SHA Yes
SPI Yes
SPIFLASH Yes
Timers Yes
Touch Yes
UART Yes
Watchdog Yes
RTC Yes
RNG Yes
AES Yes
eFuse Yes
ADC Yes
Bluetooth Yes
LED_PWM Yes
SHA Yes
RSA Yes
CDC Console Yes Rev.3
Wifi Yes
=========== ======= =====
Secure Boot and Flash Encryption
Binary file not shown.

After

Width:  |  Height:  |  Size: 559 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

@@ -0,0 +1,104 @@
==================
ESP32-C6-DevKitC-1
==================
ESP32-C6-DevKitC-1 is an entry-level development board based on ESP32-C6-WROOM-1(U),
a general-purpose module with a 8 MB SPI flash. This board integrates complete Wi-Fi,
Bluetooth LE, Zigbee, and Thread functions. You can find the board schematic
`here <https://espressif-docs.readthedocs-hosted.com/projects/espressif-esp-dev-kits/en/latest/_static/esp32-c6-devkitc-1/schematics/esp32-c6-devkitc-1-schematics_v1.2.pdf>`_.
Most of the I/O pins are broken out to the pin headers on both sides for easy interfacing.
Developers can either connect peripherals with jumper wires or mount ESP32-C6-DevKitC-1 on
a breadboard.
.. figure:: esp32-c6-devkitc-1-isometric_v1.2.png
:alt: ESP32-C6-DevKitC-1 Board Layout
:figclass: align-center
ESP32-C6-DevKitC-1 Board Layout
The block diagram below presents main components of the ESP32-C6-DevKitC-1.
.. figure:: esp32-c6-devkitc-1-v1.2-block-diagram.png
:alt: ESP32-C6-DevKitC-1 Electrical Block Diagram
:figclass: align-center
ESP32-C6-DevKitC-1 Electrical Block Diagram
Hardware Components
-------------------
.. figure:: esp32-c6-devkitc-1-v1.2-annotated-photo.png
:alt: ESP32-C6-DevKitC-1 Hardware Components
:figclass: align-center
ESP32-C6-DevKitC-1 Hardware Components
Buttons and LEDs
================
Board Buttons
--------------
There are two buttons labeled Boot and RST. The RST button is not available
to software. It pulls the chip enable line that doubles as a reset line.
The BOOT button is connected to IO9. On reset it is used as a strapping
pin to determine whether the chip boots normally or into the serial
bootloader. After reset, however, the BOOT button can be used for software
input.
Board LEDs
----------
There is one on-board LED that indicates the presence of power.
Another WS2812 LED is connected to GPIO8 and is available for software.
Current Measurement
===================
The J5 headers on the ESP32-C6-DevKitC-1 can be used for measuring the current
drawn by the ESP32-C6-WROOM-1(U) module:
- Remove the jumper: Power supply between the module and peripherals on the
board is cut off. To measure the module's current, connect the board with an
ammeter via J5 headers;
- Apply the jumper (factory default): Restore the board's normal functionality.
.. note::
When using 3V3 and GND pin headers to power the board, please remove the J5 jumper,
and connect an ammeter in series to the external circuit to measure the module's current.
Pin Mapping
===========
.. figure:: esp32-c6-devkitc-1-pin-layout.png
:alt: ESP32-C6-DevKitC pin layout
:figclass: align-center
ESP32-C6-DevKitC-1 Pin Layout
Configurations
==============
All of the configurations presented below can be tested by running the following commands::
$ ./tools/configure.sh esp32c6-devkit:<config_name>
$ make flash ESPTOOL_PORT=/dev/ttyUSB0 -j
Where <config_name> is the name of board configuration you want to use, i.e.: nsh, buttons, wifi...
Then use a serial console terminal like ``picocom`` configured to 115200 8N1.
coremark
--------
This configuration sets the CoreMark benchmark up for running on the maximum
number of cores for this system. It also enables some optimization flags and
disables the NuttShell to get the best possible score.
.. note:: As the NSH is disabled, the application will start as soon as the
system is turned on.
nsh
---
Basic configuration to run the NuttShell (nsh).
@@ -49,10 +49,10 @@ First make sure that ``esptool.py`` is installed. This tool is used to convert
the ELF to a compatible ESP32-C6 image and to flash the image into the board.
It can be installed with: ``pip install esptool``.
Configure the NUttX project: ``./tools/configure.sh esp32c6-devkit:nsh``
Configure the NuttX project: ``./tools/configure.sh esp32c6-devkit:nsh``
Run ``make`` to build the project. Note that the conversion mentioned above is
included in the build process.
The `esptool.py` command to flash all the binaries is::
included in the build process.
The ``esptool.py`` command to flash all the binaries is::
esptool.py --chip esp32c6 --port /dev/ttyUSBXX --baud 921600 write_flash 0x0 bootloader.bin 0x8000 partition-table.bin 0x10000 nuttx.bin
@@ -60,9 +60,58 @@ However, this is also included in the build process and we can build and flash w
make flash ESPTOOL_PORT=<port> ESPTOOL_BINDIR=../esp-bins
Where ``<port>`` is typically ``/dev/ttyUSB0`` or similar and ``../esp-bins`` is
Where ``<port>`` is typically ``/dev/ttyUSB0`` or similar and ``../esp-bins`` is
the path to the folder containing the bootloader and the partition table
for the ESP32-C6 as explained above.
Note that this step is required only one time. Once the bootloader and partition
table are flashed, we don't need to flash them again. So subsequent builds
would just require: ``make flash ESPTOOL_PORT=/dev/ttyUSBXX``
Peripheral Support
==================
The following list indicates the state of peripherals' support in NuttX:
============== =======
Peripheral Support
============== =======
ADC No
AES No
Bluetooth No
CAN/TWAI No
DMA No
ECC No
eFuse No
GPIO No
HMAC No
I2C No
I2S No
Int. Temp. No
LED No
LED_PWM No
MCPWM No
Pulse Counter No
RMT No
RNG No
RSA No
RTC No
SD/MMC No
SDIO No
SHA No
SPI No
SPIFLASH No
Timers No
UART Yes
Watchdog Yes
Wifi No
XTS No
============== =======
Supported Boards
================
.. toctree::
:glob:
:maxdepth: 1
boards/*/*