diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 021ba41..0beab5c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - board: [esp32_p4_function_ev_board, esp32_c3_lcdkit] + board: [esp32_p4_function_ev_board, esp32_c3_lcdkit, esp32_c6_devkit] fail-fast: false steps: @@ -42,6 +42,7 @@ jobs: m5stack_core_s3) echo 'esp32s3';; esp32_p4_function_ev_board) echo 'esp32p4';; esp32_c3_lcdkit) echo 'esp32c3';; + esp32_c6_devkit) echo 'esp32c6';; *) echo 'Unknown target'; exit 1;; esac)" >> $GITHUB_ENV diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2425458..f4b0d24 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,11 +6,11 @@ on: release_name: description: 'Name of the GitHub Release' required: true - default: 'v1.1.0' + default: 'v1.1.1' release_tag: description: 'Tag for the GitHub Release' required: true - default: 'v1.1.0' + default: 'v1.1.1' prefix: description: 'Prefix for binary name' required: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5833626..c0213f7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - board: [esp32_p4_function_ev_board, esp32_c3_lcdkit] + board: [esp32_p4_function_ev_board, esp32_c3_lcdkit, esp32_c6_devkit] fail-fast: false steps: diff --git a/README.md b/README.md index 7e5a2cf..268cb43 100644 --- a/README.md +++ b/README.md @@ -12,20 +12,61 @@ Read more about Swift for ESP32 at [Espressif Developer Portal](https://develope [Run the ESP32-P4 SDL3 Swift with Wokwi.com](https://wokwi.com/experimental/viewer?diagram=https%3A%2F%2Fraw.githubusercontent.com%2Fgeorgik%2Fesp32-sdl3-swift-example%2Fmain%2Fboards%2Fesp32_p4_function_ev_board%2Fdiagram.json&firmware=https%3A%2F%2Fgithub.com%2Fgeorgik%2Fesp32-sdl3-swift-example%2Freleases%2Fdownload%2Fv1.0.0%2Fesp32-sdl3-swift-example-esp32_p4_function_ev_board.bin) +## Requirements + +- Swift 6.1 - https://www.swift.org/install +- ESP-IDF 5.4 - https://github.com/espressif/esp-idf + ## Build -ESP32-P4-Function-Ev-Board: +### Configure build environment + +```shell +source esp-idf/export.sh +export TOOLCHAINS=$(plutil -extract CFBundleIdentifier raw /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2024-10-30-a.xctoolchain/Info.plist) +``` + +### Build for ESP32-P4-Function-Ev-Board ```shell idf.py @boards/esp32_p4_function_ev_board.cfg flash monitor ``` -ESP32-C3-LcdKit: +### Build for ESP32-C3-LcdKit ![ESP32-C3-LcdKit](docs/img/esp32-c3-lcdkit.webp) ```shell -idf.py @boards/e@boards/esp32_c3_lcdkit.cfg flash monitor +idf.py @boards/esp32_c3_lcdkit.cfg flash monitor +``` + +### Build for ESP32-C6-DevKit + +![ESP32-C6-DevKit](docs/img/esp32-c6-devkit.webp) + +The configuration of this board is based on [ESP-BSP Generic](https://developer.espressif.com/blog/using-esp-bsp-with-devkits/) which allows configuration using menuconfig. + +SPI Display configuration: + +```ini +CONFIG_BSP_DISPLAY_ENABLED=y +CONFIG_BSP_DISPLAY_SCLK_GPIO=6 +CONFIG_BSP_DISPLAY_MOSI_GPIO=7 +CONFIG_BSP_DISPLAY_MISO_GPIO=-1 +CONFIG_BSP_DISPLAY_CS_GPIO=20 +CONFIG_BSP_DISPLAY_DC_GPIO=21 +CONFIG_BSP_DISPLAY_RST_GPIO=3 +CONFIG_BSP_DISPLAY_DRIVER_ILI9341=y +``` + +You can change the configuration by running: + +```shell +idf.py @boards/esp32_c6_devkit.cfg menuconfig +``` + +```shell +idf.py @boards/esp32_c6_devkit.cfg flash monitor ``` ## Credits diff --git a/boards/esp32_c6_devkit.cfg b/boards/esp32_c6_devkit.cfg new file mode 100644 index 0000000..a6f6291 --- /dev/null +++ b/boards/esp32_c6_devkit.cfg @@ -0,0 +1 @@ +-DSDKCONFIG_DEFAULTS="sdkconfig.defaults.esp32_c6_devkit;sdkconfig.defaults" -DBUILD_BOARD="esp_bsp_generic" -DIDF_TARGET=esp32c6 -B build.esp32_c6_devkit diff --git a/boards/esp32_c6_devkit/diagram.json b/boards/esp32_c6_devkit/diagram.json new file mode 100644 index 0000000..a70c491 --- /dev/null +++ b/boards/esp32_c6_devkit/diagram.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "author": "Juraj Michálek", + "editor": "wokwi", + "parts": [ + { + "type": "board-esp32-c6-devkitc-1", + "id": "esp", + "top": -494.32, + "left": -455.03 + }, + { + "type": "wokwi-ili9341", + "id": "lcd1", + "top": -546.22, + "left": -134.92 + } + ], + "connections": [ + [ "esp:TX", "$serialMonitor:RX", "", [] ], + [ "esp:RX", "$serialMonitor:TX", "", [] ], + [ "esp:3V3", "lcd1:VCC", "green", [] ], + [ "esp:GND.1", "lcd1:GND", "black", [] ], + [ "esp:6", "lcd1:SCK", "blue", [] ], + [ "esp:7", "lcd1:MOSI", "orange", [] ], + [ "esp:20", "lcd1:CS", "red", [] ], + [ "esp:21", "lcd1:D/C", "magenta", [] ], + [ "esp:3", "lcd1:RST", "yellow", [] ], + [ "lcd1:LED", "esp:3V3", "white", [] ] + ], + "serialMonitor": { "display": "terminal" }, + "dependencies": {} + } \ No newline at end of file diff --git a/boards/esp32_c6_devkit/wokwi.toml b/boards/esp32_c6_devkit/wokwi.toml new file mode 100644 index 0000000..9a80fd8 --- /dev/null +++ b/boards/esp32_c6_devkit/wokwi.toml @@ -0,0 +1,7 @@ +# Wokwi Configuration File +# Reference: https://docs.wokwi.com/vscode/project-config +[wokwi] +version = 1 +firmware = 'build.esp32_c6_devkit/flasher_args.json' +elf = 'build.esp32_c6_devkit/esp32-sdl3-swift-example.elf' +gdbServerPort=3333 diff --git a/docs/img/esp32-c6-devkit.webp b/docs/img/esp32-c6-devkit.webp new file mode 100644 index 0000000..dc8a57c Binary files /dev/null and b/docs/img/esp32-c6-devkit.webp differ diff --git a/main/idf_component.yml b/main/idf_component.yml index d7febfc..6d932ba 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -1,7 +1,7 @@ ## IDF Component Manager Manifest File dependencies: joltwallet/littlefs: "==1.14.8" - georgik/sdl: "^3.1.2~9" + georgik/sdl: "^3.1.2~10" georgik/sdl_ttf: "^3.0.0~3" idf: version: ">=5.1.0" @@ -15,3 +15,8 @@ dependencies: version: "^1.1.0~1" rules: - if: "${BUILD_BOARD} == esp32_c3_lcdkit" + + espressif/esp_bsp_generic: + version: "==1.2.1" + rules: + - if: "${BUILD_BOARD} == esp_bsp_generic" diff --git a/sdkconfig.defaults.esp32_c3_lcdkit b/sdkconfig.defaults.esp32_c3_lcdkit index 2cc19c0..5eae113 100644 --- a/sdkconfig.defaults.esp32_c3_lcdkit +++ b/sdkconfig.defaults.esp32_c3_lcdkit @@ -7,16 +7,9 @@ CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_ESPTOOLPY_FLASHMODE_QIO=y CONFIG_COMPILER_OPTIMIZATION_PERF=y -CONFIG_SPIRAM=y -CONFIG_SPIRAM_MODE_OCT=y -CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y -CONFIG_SPIRAM_RODATA=y -CONFIG_SPIRAM_SPEED_80M=y CONFIG_FREERTOS_HZ=1000 CONFIG_BSP_LCD_RGB_BUFFER_NUMS=2 CONFIG_BSP_LCD_RGB_BOUNCE_BUFFER_MODE=y -CONFIG_SPIRAM_MODE_HEX=y -CONFIG_SPIRAM_SPEED_200M=y CONFIG_IDF_EXPERIMENTAL_FEATURES=y CONFIG_ESP_MAIN_TASK_STACK_SIZE=8912 diff --git a/sdkconfig.defaults.esp32_c6_devkit b/sdkconfig.defaults.esp32_c6_devkit new file mode 100644 index 0000000..74d92ae --- /dev/null +++ b/sdkconfig.defaults.esp32_c6_devkit @@ -0,0 +1,74 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) 5.4.0 Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32c6" +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_PARTITION_TABLE_CUSTOM=y + +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_BSP_LCD_RGB_BUFFER_NUMS=2 +CONFIG_BSP_LCD_RGB_BOUNCE_BUFFER_MODE=y + +CONFIG_ESP_MAIN_TASK_STACK_SIZE=8912 + +# BSP Generic + +CONFIG_SOC_SPI_PERIPH_NUM=2 +CONFIG_SOC_SPI_MAX_CS_NUM=6 +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_SUPPORT_DDRCLK=y +CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y +CONFIG_SOC_SPI_SUPPORT_CD_SIG=y +CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y +CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y +CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y +CONFIG_SOC_SPI_SUPPORT_CLK_PLL_F80M=y +CONFIG_SOC_SPI_SUPPORT_CLK_RC_FAST=y +CONFIG_SOC_SPI_SCT_SUPPORTED=y +CONFIG_SOC_SPI_SCT_REG_NUM=14 +CONFIG_SOC_SPI_SCT_BUFFER_NUM_MAX=y +CONFIG_SOC_SPI_SCT_CONF_BITLEN_MAX=0x3FFFA +CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16 +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y +CONFIG_SOC_SPI_MEM_SUPPORT_IDLE_INTR=y +CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y +CONFIG_SOC_SPI_MEM_SUPPORT_CHECK_SUS=y +CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +# +# Display +# + +# +# Connection +# +CONFIG_BSP_DISPLAY_ENABLED=y +CONFIG_BSP_DISPLAY_SCLK_GPIO=6 +CONFIG_BSP_DISPLAY_MOSI_GPIO=7 +CONFIG_BSP_DISPLAY_MISO_GPIO=-1 +CONFIG_BSP_DISPLAY_CS_GPIO=20 +CONFIG_BSP_DISPLAY_DC_GPIO=21 +CONFIG_BSP_DISPLAY_RST_GPIO=3 +CONFIG_BSP_DISPLAY_DRIVER_ILI9341=y +CONFIG_IDF_EXPERIMENTAL_FEATURES=y +# end of Connection + +CONFIG_BSP_DISPLAY_COLOR_SPACE_RGB=y +# CONFIG_BSP_DISPLAY_COLOR_SPACE_BGR is not set +# CONFIG_BSP_DISPLAY_INVERT_COLOR is not set +# CONFIG_BSP_DISPLAY_BRIGHTNESS_INVERT is not set +CONFIG_BSP_DISPLAY_CMD_BITS=8 +CONFIG_BSP_DISPLAY_PARAM_BITS=8 +CONFIG_BSP_DISPLAY_PIXEL_CLOCK=20 +CONFIG_BSP_DISPLAY_WIDTH=320 +CONFIG_BSP_DISPLAY_HEIGHT=240 +CONFIG_BSP_LCD_DRAW_BUF_HEIGHT=100 +# CONFIG_BSP_LCD_DRAW_BUF_DOUBLE is not set +# end of Display