1
0
Fork 0
forked from nuttx/nuttx-update

Add documentation to ESP32-S3 boards

This commit is contained in:
Alan Carvalho de Assis 2022-06-15 20:00:05 -03:00 committed by Gustavo Henrique Nihei
parent 0de089e2e8
commit e87a20e648
5 changed files with 334 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 KiB

View file

@ -0,0 +1,57 @@
==============
ESP32S3-DevKit
==============
The `ESP32S3 DevKit <https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/user-guide-devkitc-1.html>`_ is a development board for the ESP32-S3 SoC from Espressif, based on a ESP32-S3-WROOM-1 module.
.. list-table::
:align: center
* - .. figure:: esp32-s3-devkitc-1.png
:align: center
Features
========
- ESP32-S3-WROOM-1 Module
- USB-to-UART bridge via micro USB port
- Power LED
- EN and BOOT buttons (BOOT accessible to user)
- SPI FLASH (size varies according to model
Serial Console
==============
UART0 is, by default, the serial console. It connects to the on-board
CP2102 converter and is available on the USB connector USB CON8 (J1).
It will show up as /dev/ttyUSB[n] where [n] will probably be 0.
Buttons and LEDs
================
Buttons
-------
There are two buttons labeled Boot and EN. The EN button is not available
to software. It pulls the chip enable line that doubles as a reset line.
The BOOT button is connected to IO0. 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.
LEDs
----
There are several on-board LEDs for that indicate the presence of power
and USB activity. None of these are available for use by software.
Configurations
==============
nsh
---
Basic NuttShell configuration (console enabled in UART0, exposed via
USB connection by means of CP2102 converter, at 115200 bps).

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

View file

@ -0,0 +1,93 @@
=============
ESP32-S3-EYE
=============
The `ESP32-S3-EYE <https://github.com/espressif/esp-who/blob/master/docs/en/get-started/ESP32-S3-EYE_Getting_Started_Guide.md>`_ is a small-sized AI development board from Espressif featuring the ESP32-S3 CPU with a 2-Megapixel camera, an LCD display, a microphone, an 8 MB Octal PSRAM and an 8 MB flash.
.. list-table::
:align: center
* - .. figure:: esp32s3_eye.png
:align: center
Features
========
- ESP32-S3 WROOM-1 Module
- USB micro USB port (it uses internal USB JTAG SERIAL device for flashing)
- Power LED
- LCD Display
- 2-MP Camera
- MEMS Microphone
- 8MB Octal PSRAM
- 8MB SPI Flash
- RST and BOOT buttons (BOOT accessible to user)
Configurations
==============
nsh
---
Basic NuttShell configuration (console enabled in USB JTAG SERIAL Device, exposed via
USB connection at 9600 bps).
You can configure this board profile this way:
$ cd nuttxspace/nuttx
$ ./tools/configure.sh esp32s3-eye:nsh
Flashing
========
Because ESP32-S3 doesn't use an external USB/Serial chip like others ESP32
boards you should put it in programming mode this way:
1) Press and hold BOOT and RESET (RST) buttons at same time;
2) Release the RESET button and keep BOOT button pressed;
3) After one or more seconds release the BOOT button;
4) Run the flashing command: make flash ESPTOOL_PORT=/dev/ttyACM0
Serial Console
==============
The internal USB JTAG SERIAL Device, by default, is used as serial console.
It is normally detected by Linux host as a USB CDC/ACM serial device.
It will show up as /dev/ttyACM[n] where [n] will probably be 0.
You can use minicom with /dev/ttyACM0 port at 9600 8n1 or picocom this way:
$ picocom -b9600 /dev/ttyACM0
Buttons and LEDs
================
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 IO0. 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.
LEDs
----
There are several on-board LEDs for that indicate the presence of power
and USB activity. None of these are available for use by software.
Pin Mapping
===========
.. todo:: To be updated
===== ========== ==========
Pin Signal Notes
===== ========== ==========
? ? ?
===== ========== ==========

View file

@ -0,0 +1,184 @@
==================
Espressif ESP32-S3
==================
The ESP32-S3 is a series of single and dual-core SoCs from Espressif
based on Harvard architecture Xtensa LX7 CPUs and with on-chip support
for Bluetooth and Wi-Fi.
All embedded memory, external memory and peripherals are located on the
data bus and/or the instruction bus of these CPUs. With some minor
exceptions, the address mapping of two CPUs is symmetric, meaning they
use the same addresses to access the same memory. Multiple peripherals in
the system can access embedded memory via DMA.
On dual-core SoCs, the two CPUs are typically named "PRO_CPU" and "APP_CPU"
(for "protocol" and "application"), however for most purposes the
two CPUs are interchangeable.
Toolchain
=========
You can use the prebuilt `toolchain <https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-guides/tools/idf-tools.html#xtensa-esp32s3-elf>`__
for Xtensa architecture and `OpenOCD <https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-guides/tools/idf-tools.html#openocd-esp32>`__
for ESP32-S3 by Espressif.
For flashing firmware, you will need to install ``esptool.py`` by running::
$ pip install esptool
Building from source
--------------------
You can also build the toolchain yourself. The steps to
build the toolchain with crosstool-NG on Linux are as follows
.. code-block:: console
$ git clone https://github.com/espressif/crosstool-NG.git
$ cd crosstool-NG
$ git submodule update --init
$ ./bootstrap && ./configure --enable-local && make
$ ./ct-ng xtensa-esp32s3-elf
$ ./ct-ng build
$ chmod -R u+w builds/xtensa-esp32s3-elf
$ export PATH="crosstool-NG/builds/xtensa-esp32-elf/bin:$PATH"
These steps are given in the setup guide in
`ESP-IDF documentation <https://docs.espressif.com/projects/esp-idf/en/latest/get-started/linux-setup-scratch.html>`_.
Flashing
========
Firmware for ESP32-S3 is flashed via the USB/UART or internal USB DEVICE JTAG interface using the
``esptool.py`` tool.
It's a two step process where the first converts the ELF file into a ESP32-S3 compatible binary
and the second flashes it to the board. These steps are included into the build system and you can
flash your NuttX firmware simply by running::
$ make flash ESPTOOL_PORT=<port>
where ``<port>`` is typically ``/dev/ttyUSB0`` or similar. You can change the baudrate by passing ``ESPTOOL_BAUD``.
Bootloader and partitions
-------------------------
ESP32-S3 requires a bootloader to be flashed as well as a set of FLASH partitions. This is only needed the first time
(or any time you which to modify either of these). An easy way is to use prebuilt binaries for NuttX `from here <https://github.com/espressif/esp-nuttx-bootloader>`_. In there you will find instructions to rebuild these if necessary.
Once you downloaded both binaries, you can flash them by adding an ``ESPTOOL_BINDIR`` parameter, pointing to the directory where these binaries were downloaded:
.. code-block:: console
$ make flash ESPTOOL_PORT=<port> ESPTOOL_BINDIR=<dir>
.. note:: It is recommended that if this is the first time you are using the board with NuttX that you perform a complete SPI FLASH erase.
.. code-block:: console
$ esptool.py erase_flash
Peripheral Support
==================
The following list indicates the state of peripherals' support in NuttX:
========== ======= =====
Peripheral Support NOTES
========== ======= =====
GPIO Yes
UART Yes
SPI Yes
I2C No
CAN/TWAI No
DMA Yes
Wifi No
SPIFLASH Yes
SPIRAM Yes
Timers Yes
Watchdog Yes
RTC No
RNG No
AES No
eFuse No
ADC No
Bluetooth No
SDIO No
SD/MMC No
I2S No
LCD No
CAMERA No
LED_PWM No
RMT No
MCPWM No
Pulse_CNT No
SHA No
RSA No
USB SERIAL Yes
USB OTG No
========== ======= =====
Memory Map
==========
Address Mapping
---------------
================== ========== ========== =============== ===============
BUS TYPE START LAST DESCRIPTION NOTES
================== ========== ========== =============== ===============
To be added
================== ========== ========== =============== ===============
Embedded Memory
---------------
=========== ========== ========== =============== ===============
BUS TYPE START LAST DESCRIPTION NOTES
=========== ========== ========== =============== ===============
To be added
=========== ========== ========== =============== ===============
Boundary Address (Embedded)
---------------------------
====================== ========== ========== =============== ===============
BUS TYPE START LAST DESCRIPTION NOTES
====================== ========== ========== =============== ===============
To be added
====================== ========== ========== =============== ===============
External Memory
---------------
=========== ========== ========== =============== ===============
BUS TYPE START LAST DESCRIPTION NOTES
=========== ========== ========== =============== ===============
To be added
=========== ========== ========== =============== ===============
Boundary Address (External)
---------------------------
To be added
Linker Segments
---------------
+---------------------+------------+------------+------+------------------------------+
| DESCRIPTION | START | END | ATTR | LINKER SEGMENT NAME |
+=====================+============+============+======+==============================+
| To be added | | | | |
+---------------------+------------+------------+------+------------------------------+
Supported Boards
================
.. toctree::
:glob:
:maxdepth: 1
boards/*/*