基于 RK3308 LINUX 平台演示,首先将官方提供的 release/rk3308 下的程序通过 adb 程序拷贝至开发板中,这里就不详细说明过程了,这是玩嵌入式的基础能力
/userdata/zbeacon # ls
examples liblua.so.5.4.6 lua54 lvgl.so modules
进入目录 examples/meter 中执行脚本
/userdata/zbeacon # cd examples/
/userdata/zbeacon/examples # ls
assets btn meter
/userdata/zbeacon/examples # cd meter/
/userdata/zbeacon/examples/meter # ls
lv_example_meter_1.lua lv_example_meter_3.lua
lv_example_meter_2.lua lv_example_meter_4.lua
/userdata/zbeacon/examples/meter # /userdata/zbeacon/lua54 lv_example_meter_1.lua
/userdata/zbeacon/lua54: error while loading shared libraries: liblua.so.5.4.6: cannot open shared object file: No such file or directory
这里产生错误是找不到动态库 liblua.so.5.4.6,无法加载,有两种方案,一是将动态库放到 /usr/lib 中去,二是利用 LD_LIBRARY_PATH,这里采用第二种方案
/userdata/zbeacon/examples/meter # export LD_LIBRARY_PATH=/userdata/zbeacon
/userdata/zbeacon/examples/meter # /userdata/zbeacon/lua54 lv_example_meter_1.lua
/userdata/zbeacon/lua54: lv_example_meter_1.lua:1: module 'lvgl' not found:
no field package.preload['lvgl']
no file '/usr/local/share/lua/5.4/lvgl.lua'
no file '/usr/local/share/lua/5.4/lvgl/init.lua'
no file '/usr/local/lib/lua/5.4/lvgl.lua'
no file '/usr/local/lib/lua/5.4/lvgl/init.lua'
no file './lvgl.lua'
no file './lvgl/init.lua'
no file '/usr/local/lib/lua/5.4/lvgl.so'
no file '/usr/local/lib/lua/5.4/loadall.so'
no file './lvgl.so'
stack traceback:
[C]: in function 'require'
lv_example_meter_1.lua:1: in main chunk
[C]: in ?
这时已执行脚本了,但是出现了 lvgl 库无法加载的情况,这时需要设置 lua 的环境变量解决,告诉 lua 去那里找这个库
/userdata/zbeacon/examples/meter # export LUA_CPATH='/userdata/zbeacon/?.so;;'
/userdata/zbeacon/examples/meter # /userdata/zbeacon/lua54 lv_example_meter_1.lua
Screen resolution is 480x480
[Warn] (0.031, +31) method_init: Use linux frame buffer device driver (480x480)
(in dllmain.cpp line #204)
[User] (0.033, +2) luax_cache_init: Cache object added (0x50cea50)
(in dllmain.cpp line #408)
[User] (0.034, +1) luax_cache_init: Cache object added (0x50cef00)
(in dllmain.cpp line #408)
这时候脚本运行日志就出来了,结果如下图
总结一下,采用 Lua+LVGL 来开发嵌入式上的 GUI,效率比 C 快得不止一个数量级,首先不用改一点代码就要编译一下,然后拷贝至开发板中调试,可以在开发板上即时修改即时查看结果,在次就是可以先用 Windows 模拟器先开发 UI,然后再拷贝脚本至开发板中运行
后面我会将 LVGL 官方的 Demo 移植一遍