当前位置:网站首页>全志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
即可运行
边栏推荐
- 电脑重装系统提示activex部件不能创建对象如何解决
- Appium进行APP自动化测试
- 基于inotify实现落盘文件的跨进程实时读写交互
- 解读STEAM教育中的表现性评价
- PyTorch 多机多卡训练:DDP 实战与技巧
- Analysys and the Alliance of Small and Medium Banks jointly released the Hainan Digital Economy Index, so stay tuned!
- Zijin Example
- [Letter from Wu Enda] The development of reinforcement learning!
- Flask框架——MongoEngine使用MongoDB数据库
- "Thesis Reading" PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable
猜你喜欢
随机推荐
Boss raises salary!Look at my WPF Loading!!!
How to code like a pro in 2022 and avoid If-Else
640. 求解方程 : 简单模拟题
一文让你快速了解大小端概念!
2022-08-10 Daily: Swin Transformer author Cao Yue joins Zhiyuan to carry out research on basic vision models
全部内置函数详细认识(中篇)
从全球价值链视角看,京东云数智供应链对未来经济有何影响?
网络工程师的背包(EDC总结推荐)
Pagoda panel open Redis to specify the network machine
pm2 static file service
常见SQL、API接口等常见约定
关于async\await 的理解和思考
10 advanced functions of scala
systemui屏蔽通知栏
微信小程序,自定义输入框与导航胶囊对其
领域驱动模型设计与微服务架构落地-从项目去剖析领域驱动
SWIG Tutorial "One"
TestLink导出用例转换工具
数据类型与整型存储
兆骑科创高层次人才创业大赛平台,投融资对接,双创服务