LuaLVGL 在嵌入式 Linux 系统上运行

基于 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 移植一遍

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值