当前位置:网站首页>全志V853开发板移植基于 LVGL 的 2048 小游戏
全志V853开发板移植基于 LVGL 的 2048 小游戏
2022-08-10 15:01:00 【51CTO】
项目源码获取: V853 Tina_LVGL Download
LVGL 开发实战
移植基于 LVGL 的 2048 小游戏
这一节将以一个已经编写好的 lvgl
小游戏 2048
描述如何将已经编写完成的 lvgl
程序移植到开发板上。
这里使用的 2048
小游戏由百问网提供,开源地址: lv_lib_100ask
准备脚手架
在这之前,我们先准备基础的 LVGL 脚手架。可以直接从 lv_g2d_test
里复制过来进行修改即可。
首先我们复制源码,在 platform/thirdparty/gui/lvgl-8
源码文件夹里,把 红色箭头 所指的 lv_g2d_test
的源码作为模板复制到 黄色箭头指向的 lv_2048
文件夹里。
如下图所示,并清理下 res
资源文件夹,
同样的,复制一份引索文件,找到 openwrt/package/thirdparty/gui/lvgl-8
并把 lv_g2d_test
复制一份重命名为 lv_2048
作为我们 2048
小游戏使用的引索。
脚手架快速获取: lv_g2d_test.file
并编辑 Makefile
,修改文件名称,把 lv_g2d_test
修改为这里的 lv_2048
完成脚手架的搭建后,可以 make menuconfig
里查看是否出现了 lv_2048
这个选项,选中它。
修改源码
第二步是修改源码。编辑之前复制的 main.c
文件,把不需要的 lv_g2d_test
的部分删去。保留最基础的部分。
接下来则是对接 lv_lib_100ask
与 2048
小游戏,我们先下载 lv_lib_100ask
的源码,放置到 platform/thirdparty/gui/lvgl-8/lv_2048
的 src
文件夹里。并按照 lv_lib_100ask
的说明,复制一份 lv_lib_100ask_conf_template.h
到 src
目录,并改名为 lv_lib_100ask_conf.h
编辑 lv_lib_100ask_conf.h
,开启整个库的引用,并配置启用 LV_USE_100ASK_2048
。为了简洁,这里删除了不需要的配置项。
再编辑 platform/thirdparty/gui/lvgl-8/lv_2048/src/lv_lib_100ask/lv_lib_100ask.h
中的版本号,修改为 (8,1,0)
之后在 main.c
里修改,对接 lv_100ask_2048_simple_test
,具体如下。
(1)头文件加入 lv_lib_100ask/lv_lib_100ask.h
(2)在 main
函数里添加接口调用
完整的 main.c
如下
然后就是 Makefile
修改,增加一个 lv_lib_100ask
的 SRC 引用。
顺便也把 BIN
改为 lv_2048
,完整的 Makefile
如下
对接触摸
做了以上操作,可能会发现触摸没有反应,这是因为触摸绑定的 event
事件号不对,默认的绑定是 event3
而查阅启动 log
可知,开发板的触摸屏对接的是 event0
这时需要修改绑定的 event
事件号,其配置文件在 lv_drv_conf.h
内:
这里将 event3
改为 event0
即可
当然除了这样的方法,另外也可以用命令生成软连接touchscreen
,就会直接以 touchscreen
为触摸节点,方便调试:
测试编译
修改好了,希望单独编译这个包测试下而不编译完整的 SDK。可以这样做:
(1)确保已经 source build/envsetup.sh
并已经 lunch
(2)在任意文件夹下执行命令 mmo lv_2048 -B
其中 mmo
的意思是 单独编译一个 openWrt
软件包,后面的 lv_2048
是软件包名。-B
参数是先 clean
再编译,不加这个参数就是直接编译了。
测试运行
编译打包后,到开发板上使用 lv_2048
即可运行
边栏推荐
猜你喜欢
随机推荐
Flask框架——MongoEngine使用MongoDB数据库
Containerization | Scheduled Backups in S3
const-modified pointer variable (detailed)
SWIG tutorial "two"
storage of data in memory
Introduction to program debugging and its use
Zijin Example
DB2查询2个时间段之间的所有月份,DB2查询2个时间段之间的所有日期
基于inotify实现落盘文件的跨进程实时读写交互
640. Solving Equations: Simple Simulation Problems
"NIO Cup" 2022 Nioke Summer Multi-School Training Camp 7
Epoll learn to think: a high performance server processing framework
【吴恩达来信】强化学习的发展!
领域驱动模型设计与微服务架构落地-从项目去剖析领域驱动
Common conventions such as common SQL and API interfaces
Appium for APP automation testing
scala 10种函数高级应用
第壹章模块大全之《re模块》
SWIG tutorial "four" - package of go language
MySQL Principle and Optimization: Update Optimization