本人对Tina-SDK的源码检索中,在packages目录下发现了一个“gui”文件夹,里面包含了不少GUI库。打开发现都是“.patch”文件,也就是Linux系统补丁,谁知道官方提供的镜像中包不包含呢!
图8-1 Tina SDK中的GUI目录
于是,本人想到了在系统检索lib文件的方式以作查看(这种方法是否准确,作为Linux菜鸟也并不确定),通过“find / -name *lib*”和“find / -name *.so*”命令检索出全部lib及so库。接着一通翻找,发现了这个文件“liblvgl.so”。这时,又想到论坛中博主manhuami2007发过的一个帖子“【平头哥Sipeed LicheeRV 86 Panel测评】 3-移植LVGL(https://bbs.eeworld.com.cn/thread-1197092-1-1.html)”,于是决定进行lvgl库的尝试。
图8-2 找到liblvgl.so
特别感谢博主manhuami2007的案例分享,本人直接下载了这个项目(https://download.eeworld.com.cn/eewsearcher?s=2&kw=lvgl)。
先说一下本人的开发过程,本节是“踩坑”记录,请读者朋友们注意。
之前,一直使用的是SDK中提供的工具链“..\tina-d1-h\repo\prebuilt\gcc\linux-x86\riscv\toolchain-thead-glibc\riscv64-glibc-gcc-thead_20200702”,而且已经部署了Windows平台的WSL子系统,于是解压案例并开始make。
就这样,第一个坑出现了,“make”或“make all”都输出报错。
图8-3 直接make的报错
本人判断是Makefile的原因,所以打开项目根目录的Makefile文件(Windows平台,直接用记事本打开),发现“CC”参数还没有定义,另外其中连接了“..\lvgl\lvgl.mk”,很明显报错是这里引起的。因为它又连接多个mk文件,其中前两个是不存在的而且也没有用处,果断注释掉后make成功。
图8-4 根目录Makefile
图8-5 修改Makefile后make成功
编译的目标文件和最后输出“demo”都是在项目根目录中,利用mobaXterm导入到86板,然后修改权限并尝试运行,结果碰到了第二个坑,执行报错。
图8-6 20200702版工具链编译的项目执行报错
通过网上查找,了解到可能是GCC版本引起的错误,于是换到虚拟机,之前本人在其中部署过平头哥提供的“d1阿里小程序_SDK”中的工具链。
发送工程(通过FileZilla)到虚拟机,解压并再次修改Makefile(按上节方法,不过变量赋值改为:“CC ?= $$CC”),然后编译项目,导入到开发板,成功运行。
这里需要注意,阿里小程序工具链是通过source加载脚本文件,在控制台生成的临时环境变量,gcc工具映射为变量“$CC”,所以在Makefile中写成“$$CC”,第一个“$”是Makefile中的变量定义,第二个“$”表示系统环境变量。阿里小程序工具链的部署方法,大家可以参考博主码农爱学习的文章(https://bbs.eeworld.com.cn/thread-1194441-1-1.html)。
图8-9 运行效果
大家可以下载案例自行查看,这里本人就不贴源码占字数了。