|
|
@@ -1,9 +1,124 @@
|
|
|
-#User Guide
|
|
|
+#1.Overview
|
|
|
+Littlevgl is an Open-source Embedded GUI Library. We definde an UI APP, and it can be running in 3 scenarios.
|
|
|
+1. Native Linux. The App code built into Linux executables.
|
|
|
+2. WASM VM for Different platform. WASM VM and native extension being built into Linux and Zephyr platforms. With WASM VM inside, many WASM APP can run on top of it.
|
|
|
+3. WASM APP. This kind of binary can be run on WASM VM.
|
|
|
+##Folder structure
|
|
|
+├── build.sh **build script, will create build and out folder.**
|
|
|
+├── LICENCE.txt
|
|
|
+├── UI.JPG **UI appearence.**
|
|
|
+├── user_guide.md **User Guide.**
|
|
|
+### 1. vgl-native-ui-app
|
|
|
+Littlevgl graphics app has being built into Linux application named "vgl_native_ui_app", which can directly run on Linux.
|
|
|
+├── vgl-native-ui-app
|
|
|
+│ ├── CMakeLists.txt
|
|
|
+│ ├── lv_drivers **Display and input device driver sources.**
|
|
|
+│ └── main.c **UI app logic.**
|
|
|
+### 2. vgl-wasm-runtime
|
|
|
+Wasm micro-runtime and littlevgl native interface built into Linux application named "littlevgl", where wasm apps can run on it.
|
|
|
+├── vgl-wasm-runtime
|
|
|
+│ ├── CMakeLists.txt
|
|
|
+│ ├── src **Cantains WASM VM initialization adn native extension sources.**
|
|
|
+│ │ ├── display_indev.h **App called methods which are implemented in WASM native.**
|
|
|
+│ │ ├── ext-lib-export.c **WASM exported function**
|
|
|
+│ │ ├── platform **Native method Implementation on different platform.**
|
|
|
+│ │ │ ├── linux **Linux implementation**
|
|
|
+│ │ │ │ ├── display_indev.c
|
|
|
+│ │ │ │ ├── iwasm_main.c
|
|
|
+│ │ │ │ ├── main.c
|
|
|
+│ │ │ │ └── mouse.c
|
|
|
+│ │ │ └── zephyr **Zephyr implementation**
|
|
|
+│ │ │ ├── display.h
|
|
|
+│ │ │ ├── display_ili9340_adafruit_1480.c
|
|
|
+│ │ │ ├── display_ili9340.c
|
|
|
+│ │ │ ├── display_ili9340.h
|
|
|
+│ │ │ ├── display_indev.c
|
|
|
+│ │ │ ├── LICENSE
|
|
|
+│ │ │ ├── XPT2046.c
|
|
|
+│ │ │ └── XPT2046.h
|
|
|
+│ │ └── test_wasm.h
|
|
|
+│ └── zephyr-build **Zephyr project files**
|
|
|
+│ ├── CMakeLists.txt
|
|
|
+│ └── prj.conf
|
|
|
|
|
|
-##Introduction
|
|
|
+###3. wasm-apps
|
|
|
+A wasm app with littlevgl graphics.
|
|
|
+└── wasm-apps
|
|
|
+ ├── build_wasm_app.sh **Git clone lvgl and build app.**
|
|
|
+ ├── Makefile_wasm_app **Makefile**
|
|
|
+ └── src **source code of UI app.**
|
|
|
|
|
|
-This project aims to demonstrate wasm app management and programming model of WAMR.
|
|
|
-
|
|
|
-##Build all binaries
|
|
|
-Execute the build.sh script then all binaries including wasm application files would be generated in 'out' directory.
|
|
|
+#2.Install required SDK and libraries.
|
|
|
+##1. 32 bit SDL(simple directmedia layer)
|
|
|
+###a. Use apt-get
|
|
|
+sudo apt-get install libsdl2-dev:i386
|
|
|
+###b. Install from source
|
|
|
+www.libsdl.org
|
|
|
+`./configure C_FLAGS=-m32 CXX_FLAGS=-m32 LD_FLAGS=-m32`
|
|
|
+ ` ./make`
|
|
|
+`./sudo make install`
|
|
|
+##2. Install EMSDK
|
|
|
+ https://emscripten.org/docs/tools_reference/emsdk.html
|
|
|
+##3. Cmake
|
|
|
+ CMAKE version above 3.13.1.
|
|
|
+#3.Build & Run
|
|
|
+##1. Build and run on Linux
|
|
|
+###a. Build
|
|
|
`./build.sh`
|
|
|
+ All binaries are in "out", which contains "host_tool", "vgl_native_ui_app", "TestApplet1.wasm" and "vgl_wasm_runtime".
|
|
|
+###b.Run native Linux application
|
|
|
+`./vgl_native_ui_app`
|
|
|
+###c.Run WASM VM Linux applicaton & install WASM APP
|
|
|
+####1. Start vgl_wasm_runtime in server mode
|
|
|
+`./vgl_wasm_runtime -s`
|
|
|
+####2. Install wasm APP
|
|
|
+`./host_tool -i TestApplet1 -f TestApplet1.wasm`
|
|
|
+##2. Build and run on zephyr
|
|
|
+WASM VM and native extension method can be built into zephyr, Then we can install wasm app into STM32.
|
|
|
+###1.Build wasm into Zephyr system
|
|
|
+####a. clone zephyr source code
|
|
|
+`git clone https://github.com/zephyrproject-rtos/zephyr.git`
|
|
|
+####b. copy samples
|
|
|
+ `cd zephyr/samples/`
|
|
|
+ `cp -a <iwasm_root_dir>projects/littlevgl/vgl-wasm-runtime vgl-wasm-runtime`
|
|
|
+ `cd vgl-wasm-runtime/zephyr_build`
|
|
|
+####c. create a link to wamr core
|
|
|
+ ` ln -s <iwasm_root_dir>/core core`
|
|
|
+####d. build source code
|
|
|
+We use nucleo_f767zi, which is almost the same as nucleo_f746zg, except SRAM size in DTS.
|
|
|
+Duplicate zephyr board support of nucleo_f746zg, then change SRAM size to 512KB.
|
|
|
+ `mkdir build && cd build`
|
|
|
+ `source ../../../../zephyr-env.sh`
|
|
|
+ `cmake -GNinja -DBOARD=nucleo_f767ZI ..`
|
|
|
+ ` ninja flash`
|
|
|
+
|
|
|
+###2. Test on STM32 NUCLEO_F767ZI with ILI9341 Display with XPT2046 touch.
|
|
|
+####a. Hardware Connetions
|
|
|
++-------------------+-+------------------+
|
|
|
+|NUCLEO-F767ZI || ILI9341 Display |
|
|
|
++-------------------+-+------------------+
|
|
|
+| CN7.10 | CLK |
|
|
|
++-------------------+-+------------------+
|
|
|
+| CN7.12 | MISO |
|
|
|
++-------------------+-+------------------+
|
|
|
+| CN7.14 | MOSI |
|
|
|
++-------------------+-+------------------+
|
|
|
+| CN11.1 | CS1 for ILI9341 |
|
|
|
++-------------------+-+------------------+
|
|
|
+| CN11.2 | D/C |
|
|
|
++-------------------+-+------------------+
|
|
|
+| CN11.3 | RESET |
|
|
|
++-------------------+-+------------------+
|
|
|
+| CN9.25 | PEN interrupt |
|
|
|
++-------------------+-+------------------+
|
|
|
+| CN9.27 | CS2 for XPT2046|
|
|
|
++-------------------+-+------------------+
|
|
|
+| CN10.14 | PC UART RX |
|
|
|
++-------------------+-+------------------+
|
|
|
+| CN11.16 | PC UART RX |
|
|
|
++-------------------+-+------------------+
|
|
|
+
|
|
|
+####b. Install wasm app to zephyr using host_tool
|
|
|
+First connect PC and STM32 with UART. Then install use host_tool.
|
|
|
+`./host_tool -D /dev/ttyUSB0 -i TestApplet1 -f TestApplet1.wasm`
|
|
|
+
|