ESP-IDFを使ってみる

ESP32-S3開発ボード

2021年6月時点でサンプル出荷は始まっていますが、まだ入手していません。
AI Acceleration Supportが売りの様ですが、どのようなものか全く分かりません。

ESP32-S2 と ESP32-S3 の違いがこ ちらに公開されています。
基本的に、S2にBLE V5の機能を追加したものがS3ですが、SRAMもROMも大きくなっています。
S2もS3もLX7が使われていますが、S3はDual Coreになっています。

GPIOもGPIO47とGPIO48の2本が追加され、合計45本と少しだけ増えています。



2022年4月になって、ようやく開発ボードを入手しました。
Ai-ThinkerのESP-S3-12Kが使われています。
Ai-ThinkerはESP32-S2を使用したモジュールとしてESP-12Kを提供しています。
なんで12Kなのか、Ai-Thinkerの知り合いに尋ねたら
That name by our boss.
I MAY Know why is 12, but I also don't know why is K.
Maybe our boss like this letter.
という回答でした。結局なぜ12Kなのか不明です。


この様なファームが最初から書き込まれていました。
################################################

arch:ESP32S3,0
company:Ai-Thinker|B&T
wifi_mac:F412FA435C54
ble_mac:F412FA435C56
sdk_version:v4.4-dev-3042-g220590d599-dirty
firmware_version:1.0.1
compile_time:Feb  8 2022 14:34:08


ready

################################################

ベンチマークを実測してみました。
SoC Core Freq(MHz) Dhrystone(MIPS) Whetstones(MIPS)
ESP32 LX6*2 160 95 10.0
ESP32S2 LX7*1 160 95 8.3
ESP32S3 LX7*2 160 142 10.0
ESP32 LX6*2 240 142 16.7
ESP32S2 LX7*1 240 142 12.5
ESP32S3 LX7*2 240 178 16.7

ベンチーマーキングのソースコードを確認してみましたが、コアの数は影響しないはずです。
コンパイラーはS2とS3で、違うコンパイラーが使われています。
$ ./xtensa-esp32s2-elf-cc --version
xtensa-esp32s2-elf-cc (crosstool-NG esp-2020r3) 8.4.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ ./xtensa-esp32s3-elf-cc --version
xtensa-esp32s3-elf-cc (crosstool-NG esp-2020r3) 8.4.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

理由が分かりませんが、同じLX7コアのS2に比べてかなり早くなっています。
整数演算ではESP32よりも早いです。



esp-idfにはESP32-S3専用のサンプルコードが幾つか付属しています。
$ grep -rn  "Supported Targets" * | grep ESP32-S3 | grep -v "ESP32 "
bluetooth/hci/controller_hci_uart_esp32c3_and_esp32s3/README.md:1:| Supported Targets | ESP32-C3 | ESP32-S3 |
bluetooth/bluedroid/ble_50/peroidic_adv/README.md:1:| Supported Targets | ESP32-C3 | ESP32-S3 |
bluetooth/bluedroid/ble_50/ble50_security_server/README.md:1:| Supported Targets | ESP32-C3 | ESP32-S3 |
bluetooth/bluedroid/ble_50/peroidic_sync/README.md:1:| Supported Targets | ESP32-C3 | ESP32-S3 |
bluetooth/bluedroid/ble_50/multi-adv/README.md:1:| Supported Targets | ESP32-C3 | ESP32-S3 |
bluetooth/bluedroid/ble_50/ble50_security_client/README.md:1:| Supported Targets | ESP32-C3 | ESP32-S3 |
peripherals/lcd/rgb_panel/README.md:1:| Supported Targets | ESP32-S3 |
peripherals/rmt/step_motor/README.md:1:| Supported Targets | ESP32-S2 | ESP32-C3 | ESP32-S3 |
peripherals/temp_sensor/README.md:1:| Supported Targets | ESP32-S2 | ESP32-C3 | ESP32-S3 |
peripherals/usb/device/tusb_sample_descriptor/README.md:1:| Supported Targets | ESP32-S2 | ESP32-S3 |
peripherals/usb/device/tusb_serial_device/README.md:1:| Supported Targets | ESP32-S2 | ESP32-S3 |
peripherals/usb/device/tusb_console/README.md:1:| Supported Targets | ESP32-S2 | ESP32-S3 |
peripherals/usb/host/usb_host_lib/README.md:1:| Supported Targets | ESP32-S2 | ESP32-S3 |
peripherals/usb/host/msc/README.md:1:| Supported Targets | ESP32-S2 | ESP32-S3 |
peripherals/usb/host/cdc/cdc_acm_host/README.md:1:| Supported Targets | ESP32-S2 | ESP32-S3 |
peripherals/usb/host/cdc/cdc_acm_bg96/README.md:1:| Supported Targets | ESP32-S2 | ESP32-S3 |
peripherals/touch_sensor/touch_sensor_v2/touch_pad_read/README.md:1:| Supported Targets | ESP32-S2 | ESP32-S3 |
peripherals/touch_sensor/touch_sensor_v2/touch_pad_interrupt/README.md:1:| Supported Targets | ESP32-S2 | ESP32-S3 |
peripherals/spi_slave_hd/segment_mode/seg_slave/README.md:1:| Supported Targets | ESP32-S2 | ESP32-S3 | ESP32-C3 | ESP32-C2 |
protocols/mqtt/ssl_ds/README.md:1:| Supported Targets | ESP32-S2 | ESP32-C3 | ESP32-S3 |

rgb_panelのサンプルコードは、ESP32-S3だけで使えるサンプルです。
READMEを読んでみましたが、[A general RGB panel, 16 bit-width, with HSYNC, VSYNC and DE signal]のハードウェアが必要と書かれています。
[A general RGB panel, 16 bit-width, with HSYNC, VSYNC and DE signal]が、どのようなものなのか、良く分かっていません。
EspressIFは時々、簡単には入手できないハードが必要なサンプルコードを付けてきます。

続く....