Skip to content

Commit 46cdf39

Browse files
committed
CI: esp-build update qemu and add esp32s3
Signed-off-by: Peter M <petermm@gmail.com>
1 parent 231060c commit 46cdf39

File tree

6 files changed

+43
-34
lines changed

6 files changed

+43
-34
lines changed

.github/workflows/esp32-build.yaml

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -47,20 +47,22 @@ jobs:
4747
matrix:
4848
esp-idf-target: ["esp32", "esp32c3"]
4949
idf-version:
50-
- 'v5.1.6'
50+
- 'v5.1.7'
5151
- 'v5.2.6'
5252
- 'v5.3.4'
5353
- 'v5.4.3'
54-
- 'v5.5.2'
54+
- 'v5.5.3'
5555

5656
exclude:
5757
- esp-idf-target: "esp32c3"
58-
idf-version: 'v5.1.6'
58+
idf-version: 'v5.1.7'
5959
include:
6060
- esp-idf-target: "esp32p4"
6161
idf-version: 'release-v5.4'
6262
- esp-idf-target: "esp32p4"
63-
idf-version: 'v5.5.2'
63+
idf-version: 'v5.5.3'
64+
- esp-idf-target: "esp32s3"
65+
idf-version: 'v5.5.3'
6466

6567
steps:
6668
- name: Checkout repo
@@ -120,12 +122,12 @@ jobs:
120122
https://cdn.jsdelivr.net/hex
121123
122124
- name: Install qemu binary from espressif/qemu esp32
123-
if: runner.arch != 'ARM64' && runner.os == 'Linux' && matrix.esp-idf-target == 'esp32'
125+
if: runner.arch != 'ARM64' && runner.os == 'Linux' && (matrix.esp-idf-target == 'esp32' || matrix.esp-idf-target == 'esp32s3')
124126
run: |
125127
set -eu
126-
QEMU_VER=esp-develop-9.0.0-20240606
127-
QEMU_XTENSA_DIST=qemu-xtensa-softmmu-esp_develop_9.0.0_20240606-x86_64-linux-gnu.tar.xz
128-
QEMU_XTENSA_SHA256=071d117c44a6e9a1bc8664ab63b592d3e17ceb779119dcb46c59571a4a7a88c9
128+
QEMU_VER=esp-develop-9.2.2-20250817
129+
QEMU_XTENSA_DIST=qemu-xtensa-softmmu-esp_develop_9.2.2_20250817-x86_64-linux-gnu.tar.xz
130+
QEMU_XTENSA_SHA256=588bfaccd0f929650655d10a580f020c6ba9c131712d8fa519280081b8d126eb
129131
wget --no-verbose https://github.com/espressif/qemu/releases/download/${QEMU_VER}/${QEMU_XTENSA_DIST}
130132
echo "${QEMU_XTENSA_SHA256} *${QEMU_XTENSA_DIST}" | sha256sum --check --strict -
131133
tar -xf ${QEMU_XTENSA_DIST} -C /opt && rm ${QEMU_XTENSA_DIST}
@@ -134,20 +136,20 @@ jobs:
134136
if: runner.arch != 'ARM64' && runner.os == 'Linux' && matrix.esp-idf-target == 'esp32c3'
135137
run: |
136138
set -eu
137-
QEMU_VER=esp-develop-9.0.0-20240606
138-
QEMU_RISCV32_DIST=qemu-riscv32-softmmu-esp_develop_9.0.0_20240606-x86_64-linux-gnu.tar.xz
139-
QEMU_RISCV32_SHA256=47120e826cfec7180db8cb611a7a4aed2e9b2191c2a739194f8ce085e63cdd8d
139+
QEMU_VER=esp-develop-9.2.2-20250817
140+
QEMU_RISCV32_DIST=qemu-riscv32-softmmu-esp_develop_9.2.2_20250817-x86_64-linux-gnu.tar.xz
141+
QEMU_RISCV32_SHA256=373b37a68bae3ef441ead24a7bfc950fcbfc274cbdd2b628fc6915f179eb1d8e
140142
wget --no-verbose https://github.com/espressif/qemu/releases/download/${QEMU_VER}/${QEMU_RISCV32_DIST}
141143
echo "${QEMU_RISCV32_SHA256} *${QEMU_RISCV32_DIST}" | sha256sum --check --strict -
142144
tar -xf ${QEMU_RISCV32_DIST} -C /opt && rm ${QEMU_RISCV32_DIST}
143145
144146
- name: Install qemu binary from espressif/qemu ARM64 esp32
145-
if: runner.arch == 'ARM64' && runner.os == 'Linux' && matrix.esp-idf-target == 'esp32'
147+
if: runner.arch == 'ARM64' && runner.os == 'Linux' && (matrix.esp-idf-target == 'esp32' || matrix.esp-idf-target == 'esp32s3')
146148
run: |
147149
set -eu
148-
QEMU_VER=esp-develop-9.0.0-20240606
149-
QEMU_XTENSA_DIST=qemu-xtensa-softmmu-esp_develop_9.0.0_20240606-aarch64-linux-gnu.tar.xz
150-
QEMU_XTENSA_SHA256=43552f32b303a6820d0d9551903e54fc221aca98ccbd04e5cbccbca881548008
150+
QEMU_VER=esp-develop-9.2.2-20250817
151+
QEMU_XTENSA_DIST=qemu-xtensa-softmmu-esp_develop_9.2.2_20250817-aarch64-linux-gnu.tar.xz
152+
QEMU_XTENSA_SHA256=317f6e0fd1dba0886d8110709823d909593ef29438822a14f81ebe19d72ce7cd
151153
wget --no-verbose https://github.com/espressif/qemu/releases/download/${QEMU_VER}/${QEMU_XTENSA_DIST}
152154
echo "${QEMU_XTENSA_SHA256} *${QEMU_XTENSA_DIST}" | sha256sum --check --strict -
153155
tar -xf ${QEMU_XTENSA_DIST} -C /opt && rm ${QEMU_XTENSA_DIST}
@@ -156,9 +158,9 @@ jobs:
156158
if: runner.arch == 'ARM64' && runner.os == 'Linux' && matrix.esp-idf-target == 'esp32c3'
157159
run: |
158160
set -eu
159-
QEMU_VER=esp-develop-9.0.0-20240606
160-
QEMU_RISCV32_DIST=qemu-riscv32-softmmu-esp_develop_9.0.0_20240606-aarch64-linux-gnu.tar.xz
161-
QEMU_RISCV32_SHA256=3b6221a8b1881d2c9b9fa0b0bf8d7065c84153d2a54e429307bde9feae235c27
161+
QEMU_VER=esp-develop-9.2.2-20250817
162+
QEMU_RISCV32_DIST=qemu-riscv32-softmmu-esp_develop_9.2.2_20250817-aarch64-linux-gnu.tar.xz
163+
QEMU_RISCV32_SHA256=f907a54313058f8a9681d2f48257d518950ff98bcd5a319194b4bee7c10cf223
162164
wget --no-verbose https://github.com/espressif/qemu/releases/download/${QEMU_VER}/${QEMU_RISCV32_DIST}
163165
echo "${QEMU_RISCV32_SHA256} *${QEMU_RISCV32_DIST}" | sha256sum --check --strict -
164166
tar -xf ${QEMU_RISCV32_DIST} -C /opt && rm ${QEMU_RISCV32_DIST}
@@ -172,11 +174,12 @@ jobs:
172174
run: |
173175
set -e
174176
. $IDF_PATH/export.sh
175-
pip install pytest==8.2.2 \
176-
pytest-embedded==1.10.3 \
177-
pytest-embedded-serial-esp==1.10.3 \
178-
pytest-embedded-idf==1.10.3 \
179-
pytest-embedded-qemu==1.10.3
177+
pip install pytest==8.3.3 \
178+
esptool==5.2.0 \
179+
pytest-embedded==2.7.0 \
180+
pytest-embedded-serial-esp==2.7.0 \
181+
pytest-embedded-idf==2.7.0 \
182+
pytest-embedded-qemu==2.7.0
180183
181184
- name: Build ESP32 tests using idf.py with memory checks
182185
# TODO: remove the following exclusion when ESP32P4 support is added to espressif/qemu

src/platforms/esp32/test/README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ The `WOKWI_CLI_TOKEN` needs to be set in your `Repository secrets` Settings -> A
4040

4141
```shell
4242
$ pip install pytest==8.3.3 \
43-
pytest-embedded==1.11.5 \
44-
pytest-embedded-serial-esp==1.11.5 \
45-
pytest-embedded-idf==1.11.5 \
46-
pytest-embedded-wokwi==1.11.5
43+
esptool==5.2.0 \
44+
pytest-embedded==2.7.0 \
45+
pytest-embedded-serial-esp==2.7.0 \
46+
pytest-embedded-idf==2.7.0 \
47+
pytest-embedded-wokwi==2.7.0
4748
```
4849

4950
4. The ESP-IDF build environment must be installed and available:

src/platforms/esp32/test/main/test_main.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,8 @@ TEST_CASE("test_esp_timer_get_time", "[test_run]")
192192
TEST_ASSERT(ret_value == OK_ATOM);
193193
}
194194

195-
// SDMMC works all esp-idf versions for esp32 - still no support c3.
196-
// only run in QEMU (eg. OPENETH configured)
197-
#if !CONFIG_IDF_TARGET_ESP32C3 && CONFIG_ETH_USE_OPENETH
195+
// SDMMC is currently only exercised on the ESP32 QEMU target.
196+
#if CONFIG_IDF_TARGET_ESP32 && CONFIG_ETH_USE_OPENETH
198197
TEST_CASE("test_file", "[test_run]")
199198
{
200199
esp_vfs_fat_sdmmc_mount_config_t mount_config = {
@@ -331,16 +330,13 @@ TEST_CASE("test_monotonic_time", "[test_run]")
331330
TEST_ASSERT(ret_value == OK_ATOM);
332331
}
333332

334-
#if !CONFIG_IDF_TARGET_ESP32C3 && CONFIG_ETH_USE_OPENETH
335-
// this test is failing on v5.0.7 due to some kind of problem with atomvm:posix_open
336-
#if (ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 1, 0))
333+
#if CONFIG_IDF_TARGET_ESP32 && CONFIG_ETH_USE_OPENETH
337334
TEST_CASE("test_mount", "[test_run]")
338335
{
339336
term ret_value = avm_test_case("test_mount.beam");
340337
TEST_ASSERT(ret_value == OK_ATOM);
341338
}
342339
#endif
343-
#endif
344340

345341
struct pipefs_global_ctx
346342
{
1 KB
Binary file not shown.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
SPDX-License-Identifier: Apache-2.0
2+
SPDX-FileCopyrightText: AtomVM Contributors

src/platforms/esp32/test/test_atomvm.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ def pytest_generate_tests(metafunc):
3939
'-nic user,model=open_eth -drive file=sd_image.bin,if=sd,format=raw'
4040
],indirect=True
4141
)
42+
if option_value == 'esp32s3':
43+
metafunc.parametrize(
44+
'qemu_extra_args',
45+
[
46+
'-nic user,model=open_eth -drive file=qemu_esp32s3_efuse.bin,if=none,format=raw,id=efuse -global driver=nvram.esp32s3.efuse,property=drive,value=efuse'
47+
],indirect=True
48+
)
4249
if option_value == 'esp32c3':
4350
metafunc.parametrize(
4451
'qemu_extra_args',

0 commit comments

Comments
 (0)