Commit Graph

59 Commits

Author SHA1 Message Date
Tiago Medicci Serrano
000bf2a7c7 esp32s3/rmt: Use the Espressif's common RMT driver.
This commit use the new common RMT driver for all Espressif's
xtensa-based chips on ESP32-S3.
2023-12-24 16:38:06 -08:00
chenwen@espressif.com
62a6a0ab4d xtensa/esp32s3: Tasks use SPIRAM as stack can do SPI flash read/write/erase/map/unmap
Signed-off-by: chenwen@espressif.com <chenwen@espressif.com>
2023-12-12 22:10:38 -08:00
anjiahao
25f599fe31 add demo for record stack defconfig
xtensa: esp32s3-devkit:stack
arm: stm32f429i-disco:stack

Signed-off-by: anjiahao <anjiahao@xiaomi.com>
2023-12-11 02:06:51 -08:00
Dong Heng
bf54a5ae50 driver/net/lan9250: Add LAN9250 driver(SPI and QSPI mode) 2023-12-07 19:53:05 -08:00
YAMAMOTO Takashi
cc0dd4c8a4 add esp32s3-devkit:toywasm kconfig 2023-12-07 08:21:39 -08:00
Eren Terzioglu
31abcb0e9a xtensa/esp32s3: Add rtc defconfig 2023-11-30 08:58:17 -08:00
Eren Terzioglu
438cb4a16a xtensa/esp32s3: Add rtc heap support 2023-11-23 16:49:48 -08:00
Eren Terzioglu
d92a7011fd xtensa/esp32s3: Add RWDT support 2023-11-13 21:04:30 -03:00
chenwen@espressif.com
5239d01dba xtensa/esp32s3: Disable psram as task stack
1. Disable psram as task stack to avoid system blocking.
2. Add some function comments.
2023-11-08 16:25:57 -03:00
chenwen@espressif.com
8d94c1b3cb xtensa/esp32s3: Support malloc from external RAM and internal RAM
Enables the allocation of the entire Userspace heap into SPI RAM and reserving the Internal RAM exclusively for the Kernel heap.
2023-11-08 16:25:57 -03:00
TaiJu Wu
707dd12090 fix: disable esp32s3-devkit/ksta_softap spinlock
Link time happened error when CI/CD test.
ref: https://github.com/apache/nuttx-apps/pull/2076

Signed-off-by: TaiJu Wu <tjwu1217@gmail.com>
2023-09-21 10:34:59 -04:00
Tiago Medicci Serrano
1f1c793fd5 boards/esp32s3-devkit: Add board GPIO support
The board-level GPIO support is different from the already existing
button and LEDC support because it enable us to register the GPIO
pins as devices in `/dev/gpioX`. Some applications are able to use
this interface to read and write the GPIO pins.

Documentation was added regarding its usage. Please check
`Documentation/platforms/xtensa/esp32s3/boards/esp32s3-devkit/index.rst`
2023-09-12 16:22:15 +08:00
Eren Terzioglu
a26996fb3b xtensa/esp32s3: Add support to TWAI/CANBus controller 2023-09-08 01:49:43 +08:00
Tiago Medicci Serrano
c92b3a90ac esp32s3-devkit: Provide audio support for ESP32-S3-DevKitC-1
Provide initial support for audio through the I2S peripheral to the
CS4344 audio codec on ESP32-S3-DevKitC-1 board.

Please check documentation for usage examples.
2023-09-05 13:33:05 +08:00
Alan Carvalho de Assis
c27c33e9a9 Run refresh.sh to update all board configs 2023-09-02 14:45:44 +08:00
Tiago Medicci Serrano
e25fcb3bd5 esp32s3_devkit/sta_softap: Disable SMP on defconfig temporarily
There is a known bug while using the Station + softAP mode with SMP
mode enabled. Disable it temporarily until the bug is properly
fixed.
2023-08-19 18:40:31 +08:00
Lucas Saavedra Vaz
e02b203311 arch/xtensa/esp32s3: Update MCUboot build process
Change the MCUboot build process to, in the future, deprecate the esp-nuttx-bootloaders repository.
2023-08-18 14:44:11 +08:00
Tiago Medicci Serrano
01b6c87b15 esp32s3: Implement the Wi-Fi/BLE coexistence
ESP32-S3 has only one 2.4 GHz ISM band RF module, which is shared
by Bluetooth and Wi-Fi, so Bluetooth can’t receive or transmit data
while Wi-Fi is receiving or transmitting data and vice versa.
Under such circumstances, ESP32-S3 uses the time-division
multiplexing method to receive and transmit packets.
2023-08-14 16:29:21 -03:00
Petro Karashchenko
655d00b1e7 arch/xtensa/esp32s3: initial effort to get BLE running on ESP32-S3
Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com>
2023-08-14 16:29:21 -03:00
Tiago Medicci Serrano
17447622bf esp32s3/wifi: support the Wi-Fi to work with protected build
- Added Wi-Fi related symbols to the kernel-space linker;
- Allocate more RAM to the kernel (to be useb by the Wi-Fi driver).
- Create a specific defconfig.
2023-08-02 21:38:44 +02:00
Tiago Medicci Serrano
1197a80741 esp32s3: Enhance protected build linker scripts and memory layout
Instead of setting kernel/user space instruction and data ROM as
hard-coded values on linker, set them according to the max size
of the kernel image set by CONFIG_ESP32S3_KERNEL_IMAGE_SIZE. This
is done by making KIROM, UIROM, KDROM and UDROM dependent on the
kernel size value. Also, override CONFIG_NUTTX_USERSPACE config
according to CONFIG_ESP32S3_KERNEL_IMAGE_SIZE by using a custom
PREBUILD definition.
2023-08-02 21:38:44 +02:00
Alan Carvalho de Assis
985e2beae0 esp32s3-devkit: Add NSH terminal over USB Device (not USB-JTAG-Serial) 2023-06-19 11:02:08 +08:00
Lucas Saavedra Vaz
fa5db655cd boards/xtensa/esp32s3-devkit: Revert NSH defconfig deletion
Restore the NSH defconfig
2023-06-16 14:35:18 -03:00
Dong Heng
d492823128 xtensa/esp32s3: Add USB OTG device driver 2023-06-14 18:04:27 -03:00
Tiago Medicci Serrano
223c5a3722 xtensa/esp32_esp32s2_esp32s3: enable syslog bufferring
By enabling the syslog buffering on xtensa-based devices, it's
possible to ensure concurrent tasks will not mess with the syslog
messages.
2023-06-02 10:17:54 +08:00
Tiago Medicci Serrano
1bc4b8d7b2 esp32s3/wifi: enable SMP by default on Wi-Fi-related defconfigs
In order to enhance the Wi-Fi performance, enable SMP by default to
make use of the dual-core functionality of the ESP32-S3.
2023-05-24 00:37:46 +08:00
Tiago Medicci Serrano
c60d59d825 esp32s3: add dedicated interrupt stack for ESP32-S3 by default
This config also prevents crashes due to the commit 6be363f, which
fix a race condition in multi-threaded write/read of the serial
driver, but increases stack size.
2023-05-23 13:39:50 +08:00
Tiago Medicci Serrano
b680abd04b esp32s3/wifi: use wapis init config to save Wi-Fi data
Instead of using Espressif's emulated NVS to save Wi-Fi data, use
`wapi`s wireless configure initialization mechanism for saving
Wi-Fi data. It 1) avoids creating a specific storage partition
just to save Wi-Fi data (ESP32-S3's storage partition is used
instead); 2) avoids initialization problems of the emulated NVS
when SMP is enabled (the Wi-Fi driver tries to initialize it before
the actual partition is initialized); and 3) enables reconnecting
using `wapi reconnect` command and connect the device automatically
on bringup if `CONFIG_NETUTILS_NETINIT` is selected.
2023-05-12 01:09:09 +08:00
Dong Heng
bd122915f0 xtensa/esp32s3: Support octal lines mode SPIRAM 2023-05-05 18:38:12 +08:00
Tiago Medicci Serrano
a86a9dc09e esp32s3/wifi: fix Wi-Fi's NVS-like storage long filename error
While using NVS-like storage of the Wi-Fi driver, an error was
thrown while trying to access a file whose name was longer than
the mounted SPIFFS `CONFIG_SPIFFS_NAME_MAX`.
2023-05-03 23:23:31 +08:00
Gustavo Henrique Nihei
9affcb8673 boards: Update tickless defconfigs with ostest for testability
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2023-04-06 19:29:23 +03:00
Lucas Saavedra Vaz
1b87c86619 boards: Update and fix configs for ESP boards 2023-03-25 12:23:35 +02:00
Tiago Medicci Serrano
d4b11a960f esp32s3/wifi: add support to softAP (softAP and softAP + STA mode) 2023-03-16 19:07:25 +01:00
Tiago Medicci Serrano
8f2cdc4e60 esp32s3/wifi: add support for Wi-Fi (Station mode)
1) Wi-Fi driver libs from Espressif ESP-IDF release/v5.0;
2) Station mode only;
3) WPA2-PSK and WPA3-SAE enabled;

Not yet supported (WIP):
- SoftAP mode;
- 802.11k, 802.11v and 802.11R;
- Power Save mode;
- BLE Coexistance;
2023-03-10 10:59:14 +02:00
Lucas Saavedra Vaz
35f830b19a boards: Add CoreMark config to ESP boards 2023-03-08 13:11:13 +08:00
Alan Carvalho de Assis
63a847ebca esp32s3-devkit: Add support LED PWM initialization 2023-02-08 11:02:19 +08:00
Alan Carvalho de Assis
f2b53d7234 Add board config example to test random number generator 2023-01-27 13:16:35 +08:00
Gustavo Henrique Nihei
e77e12e145 espressif: Stabilize MCUboot support on Espressif chips
MCUboot support is no longer behind EXPERIMENTAL for the following
chips:
- ESP32
- ESP32-S2
- ESP32-S3
- ESP32-C3

Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2023-01-24 08:44:22 +09:00
Alan Carvalho de Assis
f0289577bf boards: Update all boards config after updating NSH_CMDPARMS 2023-01-23 03:04:51 +08:00
Almir Okato
8f3c425067 xtensa/esp32s3: Enable booting from MCUboot bootloader
Add support for booting from MCUboot bootloader on ESP32-S3.

Signed-off-by: Almir Okato <almir.okato@espressif.com>
2022-12-15 00:42:13 +08:00
Gustavo Henrique Nihei
1ecaa4e672 xtensa/esp32s3: Configure the PMS peripheral for Protected Mode
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2022-12-07 03:07:45 +08:00
Gustavo Henrique Nihei
bfc40c74d0 xtensa/esp32s3: Add support for Protected Mode
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2022-12-07 03:07:45 +08:00
Tiago Medicci Serrano
d3ffeb40a7 libc/machine/xtensa: make longjmp safe against context switch
In order to turn longjmp context-switch safe, it's necessary
to disable interrupts before modifying windowbase and windowstart.
Otherwise, after a context switch, windowstart and windowbase
would be different, leading to a wrongly set windowstart bit due to
longjmp writing it based on the windowbase before the context switch.
This corrupts the registers at the next window overflow reaching
that wrongly set bit.

*Background:*
This PR is related to an issue first observed on ESP-IDF
https://github.com/espressif/esp-idf/issues/5229 and it was, then,
checked on NuttX using a test application.

*The test application:*
To check if the problem affects ESP32, ESP32-S2 and ESP32-S3 on
NuttX, it was created an application based on:
https://en.cppreference.com/w/c/program/longjmp

The application creates 16 tasks (`#define NUMBER_OF_TASKS  16`)
that implements the following daemon:

```
static int setjmp_longjmp_daemon(int argc, char *argv[])
{
  for (int i = 0; i < NUMBER_OF_TASKS * 2; i++)
    {
      jmp_buf env;

      volatile int count = 0;
      if (setjmp(env) != UINT16_MAX)
        {
          foo(&env, ++count);
        }
    }

  sem_post(&g_sem);

  return EXIT_SUCCESS;
}
```

The main function also initializes a semaphore to avoid application
exiting before tasks return successfully:

```
  sem_init(&g_sem, 0, -NUMBER_OF_TASKS);
```

Finally, the round-robin interval was lowered to 1ms to raise the
chances of the longjmp being interrupted by a context switch
(`CONFIG_RR_INTERVAL=1).

This setup was able to reproduce the problem prior to this patch
being applied.
2022-11-22 19:34:44 +01:00
Gustavo Henrique Nihei
036e3375e8 esp32s3-devkit: Add support for I2C chardev driver
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2022-06-30 00:32:17 +03:00
YAMAMOTO Takashi
864f43b562 esp32*: Disable CONFIG_RAW_BINARY
Because it uses the same filename as esp32 Config.mk. (nuttx.bin)
2022-05-27 13:41:51 +03:00
Ville Juven
5800dd2af5 boards/xxx: Remove CONFIG_SCHED_ATEXIT/ONEXIT from all defconfigs 2022-05-25 15:28:43 +08:00
Gustavo Henrique Nihei
7b4d9f0afd esp32[s2/s3/c3]: Add defconfigs for testing C++
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2022-03-30 11:19:29 +08:00
Gustavo Henrique Nihei
5198a56fe8 esp32s3-devkit: Fix the number of memory regions in some configurations
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2022-03-25 15:56:44 +02:00
Gustavo Henrique Nihei
23cfded18f esp32s3-devkit: Add support for BOOT button as user button
Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
2022-03-23 07:23:51 +09:00
Abdelatif Guettouche
954ff496b4 esp32s3-devkit/spiflash: Use SmartFS instead of LittleFS.
Signed-off-by: Abdelatif Guettouche <abdelatif.guettouche@espressif.com>
2022-03-21 22:17:23 +08:00