Weining Lu 6 лет назад
Родитель
Сommit
4b63fddc6d
1 измененных файлов с 121 добавлено и 6 удалено
  1. 121 6
      README.md

+ 121 - 6
README.md

@@ -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`
+