IMX6ULL开发板移植LVGL v8.2
硬件条件
使用的开发板是正点原子IMX6ULL阿尔法7寸屏幕,分辨率为1024*600,并且附带Qt的出厂系统
下载lvgl源码
使用git下载github上官方v8.2版本源码:
git clone -b release/v8.2 https://github.com/lvgl/lv_port_linux_frame_buffer.git
git clone -b release/v8.2 https://github.com/lvgl/lvgl.git
git clone -b release/v8.2 https://github.com/lvgl/lv_drivers.git
如果使用上面这些命令不加上-b release/v8.2
的话就会下载到最新版本的源码,目前版本是lvgl v9版本
如果网络不佳难以下载源码的话,这里在csdn下载中也上传了代码资源
准备文件
将上面下载到的三个文件夹(lvgl ,lv_drivers , lv_port_linux_frame_buffer)放在同一个目录里面,并且分别把lvgl文件夹里面的lv_conf_template.h,lvgl_drivers文件夹里面的lv_drv_conf_template.h,lv_port_linux_frame_buffer文件夹里面的Makefile和main.c复制出来放到和它们三个文件夹同级的目录下,其中把lv_conf_template.h和lv_drv_conf_template.h分别重命名为lv_conf.h和lv_drv_conf.h,完成后目录结构如图示:
修改文件
修改Makefile
1.CC修改为自己的交叉编译器;2.第7行的-Wall注释掉,因为有可能会编译错误;3.没有用到鼠标输入设备的源码,注释CSRCS行
注意:最好也加上这个-std=c99,因为有可能报出gcc错误:for‘ loop initial declarations are only allowed in C99 mode
修改main.c
修改一下自己屏幕的分辨率(要根据自己板子的分辨率,我使用的阿尔法开发板是1024*600):
没有用到鼠标,注释掉鼠标的注册代码:
注意:不要注释触摸屏输入的代码,注释掉这个会使触摸屏触碰没有效果:
修改lv_conf.h
打开文件的宏
修改显示屏颜色深度,这里我改成16,因为如果改成32的话,显示屏显示的颜色会有发黄的效果,可以试试自己的板子适合哪一种
使能显存配置和修改显存大小:
设置屏幕刷新时间和心跳时间,这里我都设置为10:
使能官方的测试demo:
修改lv_drv_conf.h
使能文件:
使能显示设备:
注意:这个fb0根据自己设备实际情况,可以在板子里面ls /dev
看自己是不是fb0
使能鼠标或触摸板作为evdev接口(用于基于Linux的系统):
注意:这个event1也要根据自己设备的实际情况,可以在板子里面使用hexdump /dev/input/event1
,然后手指触摸屏触摸几下,有十六进制数据在终端上跳出,就证明是使用event1,如果不是换个别的event再hexdump试一下
编译运行
make -j32
编译出demo文件,然后通过NFS传输文件到开发板上(不懂的可以先看这一篇文章),执行./demo
就可以运行了
Qt界面的冲突
注意:如果点击的时候和出厂的Qt冲突了,可以暂时将板子里面/opt/QDesktop文件拷贝到别的文件夹备份,然后将这个/opt/QDesktop原文件删掉,重启板子再执行./demo
就不会冲突了,想恢复回来可以将备份的QDesktop再次拷贝回/opt目录下再重启。还有一个方法:找到正点原子的开发板光盘 A-基础资料->8、系统镜像->2、教程系统镜像->3、文件系统->2、busybox-1.29.0 根文件系统下的 rootfs.tar.bz2。将此文件系统替换到开发板光盘 A-基础资料->5、开发工具->4、正点原子 MFG_TOOL 出厂固件烧录工具->mfgtool->Profiles->Linux->OS Firmware->files->filesystem 下的 rootfs.tar.bz2 (替换前请备份好原来的文件系统!)。然后再烧写进板子,就没有Qt了,其余不再赘述
参考文章
我也是第一次学习lvgl的移植,走了不少弯路,在此记录一下碰过的问题希望帮助到需要的人,感谢这几个大佬写的技术文章,解决了不少疑惑和麻烦:1.IMX6ULL移植LVGL;2.LVGL v8.2移植到IMX6ULL开发板