diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-06-01 15:41:47 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-06-01 15:41:47 +1000 |
| commit | dd27c3530432ea0b09f01e604bf577f31d8ef841 (patch) | |
| tree | bbf86cf81a78f0ff0b07f31f1c390db473f26fd3 /lib/lvgl/docs/get-started/os | |
| parent | 6fd588e970470b15936187980829916d0dbe77bb (diff) | |
| download | tangara-fw-dd27c3530432ea0b09f01e604bf577f31d8ef841.tar.gz | |
convert lvgl from submodule to a plain old directory
Diffstat (limited to 'lib/lvgl/docs/get-started/os')
| m--------- | lib/lvgl | 0 | ||||
| -rw-r--r-- | lib/lvgl/docs/get-started/os/freertos.md | 3 | ||||
| -rw-r--r-- | lib/lvgl/docs/get-started/os/index.md | 13 | ||||
| -rw-r--r-- | lib/lvgl/docs/get-started/os/nuttx.md | 97 | ||||
| -rw-r--r-- | lib/lvgl/docs/get-started/os/rt-thread.md | 48 | ||||
| -rw-r--r-- | lib/lvgl/docs/get-started/os/zephyr.md | 3 |
6 files changed, 164 insertions, 0 deletions
diff --git a/lib/lvgl b/lib/lvgl deleted file mode 160000 -Subproject 0732400e7b564dd0e7dc4a924619d8e19c5b23a diff --git a/lib/lvgl/docs/get-started/os/freertos.md b/lib/lvgl/docs/get-started/os/freertos.md new file mode 100644 index 00000000..8c50b2ae --- /dev/null +++ b/lib/lvgl/docs/get-started/os/freertos.md @@ -0,0 +1,3 @@ +# FreeRTOS + +TODO
\ No newline at end of file diff --git a/lib/lvgl/docs/get-started/os/index.md b/lib/lvgl/docs/get-started/os/index.md new file mode 100644 index 00000000..30ea6af2 --- /dev/null +++ b/lib/lvgl/docs/get-started/os/index.md @@ -0,0 +1,13 @@ +# (RT)OS + +```eval_rst + +.. toctree:: + :maxdepth: 2 + + nuttx + rt-thread + freertos + zephyr +``` + diff --git a/lib/lvgl/docs/get-started/os/nuttx.md b/lib/lvgl/docs/get-started/os/nuttx.md new file mode 100644 index 00000000..97b95f77 --- /dev/null +++ b/lib/lvgl/docs/get-started/os/nuttx.md @@ -0,0 +1,97 @@ +# NuttX RTOS + +## What is NuttX? + +[NuttX](https://nuttx.apache.org/) is a mature and secure real-time operating system (RTOS) with an emphasis on technical standards compliance and small size. +It is scalable from 8-bit to 64-bit microcontrollers and microprocessors and compliant with the Portable Operating System Interface (POSIX) and the American National Standards Institute (ANSI) standards and with many Linux-like subsystems. +The best way to think about NuttX is to think of it as a small Unix/Linux for microcontrollers. + +### Highlights of NuttX + +- **Small** - Fits and runs in microcontrollers as small as 32 kB Flash and 8 kB of RAM. +- **Compliant** - Strives to be as compatible as possible with POSIX and Linux. +- **Versatile** - Supports many architectures (ARM, ARM Thumb, AVR, MIPS, OpenRISC, RISC-V 32-bit and 64-bit, RX65N, x86-64, Xtensa, Z80/Z180, etc.). +- **Modular** - Its modular design allows developers to select only what really matters and use modules to include new features. +- **Popular** - NuttX is used by many companies around the world. Probably you already used a product with NuttX without knowing it was running NuttX. +- **Predictable** - NuttX is a preemptible Realtime kernel, so you can use it to create predictable applications for realtime control. + +--- + +## Why NuttX + LVGL? + +Although NuttX has its own graphic library called [NX](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=139629474), LVGL is a good alternative because users could find more eye-candy demos and they can reuse code from previous projects. +LVGL is an [Object-Oriented Component Based](https://blog.lvgl.io/2018-12-13/extend-lvgl-objects) high-level GUI library, that could fit very well for a RTOS with advanced features like NuttX. +LVGL is implemented in C and its APIs are in C. + +### Here are some advantages of using LVGL in NuttX + +- Develop GUI in Linux first and when it is done just compile it for NuttX. Nothing more, no wasting of time. +- Usually, GUI development for low level RTOS requires multiple iterations to get things right, where each iteration consists of **`Change code` > `Build` > `Flash` > `Run`**. +Using LVGL, Linux and NuttX you can reduce this process and just test everything on your computer and when it is done, compile it on NuttX and that is it. + +### NuttX + LVGL could be used for + +- GUI demos to demonstrate your board graphics capacities. +- Fast prototyping GUI for MVP (Minimum Viable Product) presentation. +- visualize sensor data directly and easily on the board without using a computer. +- Final products with a GUI without a touchscreen (i.e. 3D Printer Interface using Rotary Encoder to Input data). +- Final products with a touchscreen (and all sorts of bells and whistles). + +--- + +## How to get started with NuttX and LVGL? + +There are many boards in the [NuttX mainline](https://github.com/apache/incubator-nuttx) with support for LVGL. +Let's use the [STM32F429IDISCOVERY](https://www.st.com/en/evaluation-tools/32f429idiscovery.html) as an example because it is a very popular board. + +### First you need to install the pre-requisites on your system + +Let's use the [Windows Subsystem for Linux](https://acassis.wordpress.com/2018/01/10/how-to-build-nuttx-on-windows-10/) + +```shell +$ sudo apt-get install automake bison build-essential flex gcc-arm-none-eabi gperf git libncurses5-dev libtool libusb-dev libusb-1.0.0-dev pkg-config kconfig-frontends openocd +``` + +### Now let's create a workspace to save our files + +```shell +$ mkdir ~/nuttxspace +$ cd ~/nuttxspace +``` + +### Clone the NuttX and Apps repositories: + +```shell +$ git clone https://github.com/apache/incubator-nuttx nuttx +$ git clone https://github.com/apache/incubator-nuttx-apps apps +``` + +### Configure NuttX to use the stm32f429i-disco board and the LVGL Demo + +```shell +$ ./tools/configure.sh stm32f429i-disco:lvgl +$ make +``` + +If everything went fine you should have now the file `nuttx.bin` to flash on your board: + +```shell +$ ls -l nuttx.bin +-rwxrwxr-x 1 alan alan 287144 Jun 27 09:26 nuttx.bin +``` + +### Flashing the firmware in the board using OpenOCD: +```shell +$ sudo openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg -c init -c "reset halt" -c "flash write_image erase nuttx.bin 0x08000000" +``` + +Reset the board and using the 'NSH>' terminal start the LVGL demo: +```shell +nsh> lvgldemo +``` + +## Where can I find more information? + +- This blog post: [LVGL on LPCXpresso54628](https://acassis.wordpress.com/2018/07/19/running-nuttx-on-lpcxpresso54628-om13098/) +- NuttX mailing list: [Apache NuttX Mailing List](http://nuttx.incubator.apache.org/community/) + diff --git a/lib/lvgl/docs/get-started/os/rt-thread.md b/lib/lvgl/docs/get-started/os/rt-thread.md new file mode 100644 index 00000000..25bf61fc --- /dev/null +++ b/lib/lvgl/docs/get-started/os/rt-thread.md @@ -0,0 +1,48 @@ +# RT-Thread RTOS + +<img src="https://raw.githubusercontent.com/RT-Thread/rt-thread/master/documentation/figures/logo.png" width=40% style="float: center;" > + +## What is RT-Thread? + +[Introduce about RT-Thread and how to run LVGL on RT-Thread in simulators](https://www.youtube.com/watch?v=k7QYk6hSwnc) + +[**RT-Thread**](https://www.rt-thread.io/) is an [open source](https://github.com/RT-Thread/rt-thread), neutral, and community-based real-time operating system (RTOS). RT-Thread has **Standard version** and **Nano version**. For resource-constrained microcontroller (MCU) systems, the Nano version that requires only 3 KB Flash and 1.2 KB RAM memory resources can be tailored with easy-to-use tools. For resource-rich IoT devices, RT-Thread can use the **online software package** management tool, together with system configuration tools, to achieve intuitive and rapid modular cutting, seamlessly import rich software packages; thus, achieving complex functions like Android's graphical interface and touch sliding effects, smart voice interaction effects, and so on. + +### Key features + +- Designed for resource-constrained devices, the minimum kernel requires only 1.2KB of RAM and 3 KB of Flash. +- A variety of standard interfaces, such as POSIX, CMSIS, C++ application environment. +- Has rich components and a prosperous and fast growing <a href="https://packages.rt-thread.org/en/">package ecosystem</a> +- Elegant code style, easy to use, read and master. +- High Scalability. RT-Thread has high-quality scalable software architecture, loose coupling, modularity, is easy to tailor and expand. +- Supports high-performance applications. +- Supports all mainstream compiling tools such as GCC, Keil and IAR. +- Supports a wide range of <a href="https://www.rt-thread.io/board.html">architectures and chips</a>. + + +## How to run LVGL on RT-Thread? + +[中文文档](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/packages-manual/lvgl-docs/introduction) + +LVGL has registered as a [software package](https://packages.rt-thread.org/en/detail.html?package=LVGL) of RT-Thread. By using [Env tool](https://www.rt-thread.io/download.html?download=Env) or [RT-Thread Studio IDE](https://www.rt-thread.io/download.html?download=Studio), RT-Thread users can easily download LVGL source code and combine with RT-Thread project. RT-Thread community has port LVGL to several BSPs: + +| BSP | Note | +| ------------------------------------------------------------ | ---- | +| [QEMU simulator](https://github.com/RT-Thread/rt-thread/tree/master/bsp/qemu-vexpress-a9/applications/lvgl) | | +| [Visual Studio simulator](https://github.com/RT-Thread/rt-thread/tree/master/bsp/simulator/applications/lvgl) | | +| [Nuvoton numaker-iot-m487](https://github.com/RT-Thread/rt-thread/tree/master/bsp/nuvoton/numaker-iot-m487/applications/lvgl) | | +| [Nuvoton numaker-pfm-m487](https://github.com/RT-Thread/rt-thread/tree/master/bsp/nuvoton/numaker-pfm-m487/applications/lvgl) | | +| [Nuvoton nk-980iot](https://github.com/RT-Thread/rt-thread/tree/master/bsp/nuvoton/nk-980iot/applications/lvgl) | | +| [Nuvoton numaker-m2354](https://github.com/RT-Thread/rt-thread/tree/master/bsp/nuvoton/numaker-m2354/applications/lvgl) | | +| [Nuvoton nk-n9h30](https://github.com/RT-Thread/rt-thread/tree/master/bsp/nuvoton/nk-n9h30/applications/lvgl) | | +| [Nuvoton numaker-m032ki](https://github.com/RT-Thread/rt-thread/tree/master/bsp/nuvoton/numaker-m032ki/applications/lvgl) | | +| [NXP imxrt1060-evk](https://github.com/RT-Thread/rt-thread/tree/master/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl) | | +| [STM32L475 pandora](https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32l475-atk-pandora/applications/lvgl) | | +| [STM32F407 explorer](https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32f407-atk-explorer/applications/lvgl) | | +| [STM32F469 Discovery](https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32f469-st-disco/applications/lvgl) | | +| [Raspberry PICO](https://github.com/RT-Thread/rt-thread/tree/master/bsp/raspberry-pico/applications/lvgl) | | + + +### Import a BSP project into RT-Thread Studio + +Clone the latest code from RT-Thread official repository. Open the RT-Thread Studio and select `File -> Import`. In the Import menu, please select `RT-Thread BSP Project into Workspace`, and click `next` button. In the `BSP location area`, please select the root path of the BSP which you prefer to import, such as `C:\Users\xxx\Desktop\rt-thread\bsp\stm32\stm32l475-atk-pandora`. In the `Project Name area`, please type a name for this project, then, press `Finish` button. diff --git a/lib/lvgl/docs/get-started/os/zephyr.md b/lib/lvgl/docs/get-started/os/zephyr.md new file mode 100644 index 00000000..3de47260 --- /dev/null +++ b/lib/lvgl/docs/get-started/os/zephyr.md @@ -0,0 +1,3 @@ +# Zephyr + +TODO
\ No newline at end of file |
