From e7a0f3b99cded10490670ff519cc0fbc2f5b0ff7 Mon Sep 17 00:00:00 2001 From: Tomas Rezucha Date: Fri, 14 Jan 2022 18:47:49 +0100 Subject: [PATCH] fix various issues for esp32 (#3007) * kconfig: Fix invalid dependancy in fsdrv LV_USE_FS_* symbols are integers, instead of usual booleans. We must treat them as such. * ci: Get LVGL version from git tag * docu: Update Espressif readme * ci run apt update before installing --- .github/workflows/esp_upload_component.yml | 14 ++++-- Kconfig | 6 +-- docs/get-started/espressif.md | 55 ++++++++++++++-------- idf_component.yml | 1 - scripts/install-prerequisites.sh | 1 + 5 files changed, 48 insertions(+), 29 deletions(-) diff --git a/.github/workflows/esp_upload_component.yml b/.github/workflows/esp_upload_component.yml index 13274c79a..cb017c724 100644 --- a/.github/workflows/esp_upload_component.yml +++ b/.github/workflows/esp_upload_component.yml @@ -1,19 +1,23 @@ name: Push LVGL release to Espressif Component Service -# Upload on successful release +# If the commit is tagged, it will be uploaded. Other scenario silently fail. on: - release: - types: - - released + push: + branches: + - master jobs: upload_components: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - - name: Upload component to component service + with: + submodules: "recursive" + + - name: Upload component to component registry uses: espressif/github-actions/upload_components@master with: name: "lvgl" + version: "git" namespace: "lvgl" api_token: ${{ secrets.ESP_IDF_COMPONENT_API_TOKEN }} diff --git a/Kconfig b/Kconfig index 13d0123c4..6d783b377 100644 --- a/Kconfig +++ b/Kconfig @@ -843,21 +843,21 @@ menu "LVGL configuration" default 0 config LV_FS_STDIO_PATH string "Set the working directory" - depends on LV_USE_FS_STDIO + depends on LV_USE_FS_STDIO != 0 config LV_USE_FS_POSIX int "File system on top of posix API" default 0 config LV_FS_POSIX_PATH string "Set the working directory" - depends on LV_USE_FS_POSIX + depends on LV_USE_FS_POSIX != 0 config LV_USE_FS_WIN32 int "File system on top of Win32 API" default 0 config LV_FS_WIN32_PATH string "Set the working directory" - depends on LV_USE_FS_WIN32 + depends on LV_USE_FS_WIN32 != 0 config LV_USE_FS_FATFS int "File system on top of FatFS" diff --git a/docs/get-started/espressif.md b/docs/get-started/espressif.md index 2c014bdf1..afd2d4a11 100644 --- a/docs/get-started/espressif.md +++ b/docs/get-started/espressif.md @@ -3,45 +3,60 @@ :github_url: |github_link_base|/get-started/espressif.md ``` -# Espressif (ESP32) -Since v7.7.1 LVGL includes a Kconfig file, so LVGL can be used as an ESP-IDF v4 component. +# Espressif (ESP32 chip series) +LVGL can be used and configured as a standard [ESP-IDF](https://github.com/espressif/esp-idf) component. -## Get the LVGL demo project for ESP32 +More information about ESP-IDF build system can be found [here](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html). -We've created [lv_port_esp32](https://github.com/lvgl/lv_port_esp32), a project using ESP-IDF and LVGL to show one of the demos from [lv_examples](https://github.com/lvgl/lv_examples). -You are able to configure the project to use one of the many supported display controllers, see [lvgl_esp32_drivers](https://github.com/lvgl/lvgl_esp32_drivers) for a complete list -of supported display and indev (touch) controllers. +## LVGL demo project for ESP32 -## Use LVGL in your ESP32 project +We've created [lv_port_esp32](https://github.com/lvgl/lv_port_esp32), a project using ESP-IDF and LVGL to show one of the demos from [lv_demos](https://github.com/lvgl/lv_demos). +You can configure the project to use one of the many supported display controllers and targets (chips). + +See [lvgl_esp32_drivers](https://github.com/lvgl/lvgl_esp32_drivers) repository for a complete list +of supported display and indev (touch) controllers and targets. + +## Using LVGL in your ESP-IDF project ### Prerequisites -ESP-IDF v4 framework is the suggested version to use. + * ESP-IDF v4.1 and above + * ESP evaluation board with a display -### Get LVGL +### Obtaining LVGL -It is suggested that you add LVGL as a "component" to your project. This component can be located inside a directory named "components" in the project root directory. +__Option 1:__ git submodule -When your project is a git repository you can include LVGL as a git submodule: +Simply clone LVGL into your `project_root/components` directory and it will be automatically integrated into the project. +If the project is a git repository you can include LVGL as a git submodule: -```c +```sh git submodule add https://github.com/lvgl/lvgl.git components/lvgl ``` The above command will clone LVGL's main repository into the `components/lvgl` directory. LVGL includes a `CMakeLists.txt` file that sets some configuration options so you can use LVGL right away. -When you are ready to configure LVGL, launch the configuration menu with `idf.py menuconfig` on your project root directory, go to `Component config` and then `LVGL configuration`. +__Option 2:__ IDF Component Manager -## Use lvgl_esp32_drivers in your project +LVGL is also distributed through [IDF Component Manager](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-component-manager.html). +It allows users to seamlessly integrate [LVGL component](https://components.espressif.com/component/lvgl/lvgl) into their project with following command: -You can also add `lvgl_esp32_drivers` as a "component". This component can be located inside a directory named "components" on your project root directory. +```sh +idf.py add-dependency lvgl/lvgl>=8.* +``` + +During next project build, LVGL component will be fetched from the component registry and added to project build. + +### Configuration + +When you are ready to configure LVGL, launch the configuration menu with `idf.py menuconfig` in your project root directory, go to `Component config` and then `LVGL configuration`. + +## Using lvgl_esp32_drivers in ESP-IDF project + +You can also add `lvgl_esp32_drivers` as a "component". This component should be located inside a directory named "components" in your project root directory. When your project is a git repository you can include `lvgl_esp32_drivers` as a git submodule: -```c +```sh git submodule add https://github.com/lvgl/lvgl_esp32_drivers.git components/lvgl_esp32_drivers ``` - -### Support for ESP32-S2 - -Basic support for ESP32-S2 has been added into the `lvgl_esp32_drivers` repository. diff --git a/idf_component.yml b/idf_component.yml index 41662912a..50fe06e04 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,3 +1,2 @@ -version: "8.0.2" description: LVGL - Light and Versatile Graphics Library url: https://github.com/lvgl/lvgl \ No newline at end of file diff --git a/scripts/install-prerequisites.sh b/scripts/install-prerequisites.sh index 80326ac06..539f023c4 100755 --- a/scripts/install-prerequisites.sh +++ b/scripts/install-prerequisites.sh @@ -5,4 +5,5 @@ # here, such as MicroPython and PC simulator packages. # # Note: This script is run by the CI workflows. +sudo apt update sudo apt install gcc python3 libpng-dev ruby-full gcovr cmake