IMX6ULL移植LVGL
话不多说,直接开干!!!
1、移植准备
1.1、源码克隆
文件名克隆命令描述lvglgit clone https://github.com/lvgl/lvgl.git包含了LVGL图形界面控件的源码以及少量例程lvglgit clone https://github.com/lvgl/lv_drivers.git包含了驱动LVGL图形界面的驱动接口源代码lv_port_linux_frame_buffergit clone https://github.com/lvgl/lv_port_linux_frame_buffer.git适配有frame buffer的linux系统的接口lv_demosgit clone https://github.com/lvgl/lv_demos.gitLVGL的例程
1.2、demo准备
1、将克隆下来的lvgl、lv_drivers文件和lv_port_linux_frame_buffer下的main.c和Makefile放在一个目录下(~/Linux/ui(目录自拟))
2、将lv_drivers文件中的lv_drv_conf_template.h复制到~/Linux/ui下并改名为lv_drv_conf.h
3、将lvgl文件中的lv_conf_template.h复制到~/Linux/ui下并改名为lv_conf.h
2、Makefile更改
3、lv_drv_conf.h文件修改
3.1、使能这个文件
3.2、使能显示设备
3.3、使能鼠标或者触摸板作为evdev界面(只针对Linux系统)
4、lv_conf.h文件修改
4.1、使能该文件
4.2、修改显示屏像素
4.3、设置显存
49 #else///<这个不要忘记加上50 #define LV_EME_CUSTOM_INCLUDE <stdlib.h>51 #define LV_EME_CUSTOM_ALLOC malloc
52 #define LV_EME_CUSTOM__FREE free
53 #define LV_EME_CUSTOM_REALLOC realloc
4.4设置心跳、刷新时间(刷新时间这个设置,在这里可以不用加也可,似乎这里好像没用)
83 #define LV_DISP_DEF_REFR_PERIOD 1084 #define LV_INDEV_DEF_REFR_PERIOD 108585 #define LV_TICK_CUSTOM 187 #if LV_TICK_CUSTOM
88 #define LV_TICK_CUSTOM_INCLUDE <stdint.h>/*Header for the system time function*/89 #define LV_TICK_CUSTOM_SYS_TIME_EXPR(custom_tick_get())/*Expression evaluating to current system time in ms*/90 #endif /*LV_TICK_CUSTOM*/
4.5、测试官方demo使能
5、main.c文件修改
5.1、设置屏幕大小
5.2、注释鼠标部分代码
6、编译
6.1、编译
make
6.2、效果
7、遇到的错误
1、gcc编译报错 error: ‘for‘ loop initial declarations are only allowed in C99 mode
原因:在gcc中直接在for循环中初始化了增量:(因为gcc基于c89标准,换成C99标准就可以在for循环内定义i变量了)
解决:更改Makefile,使用 C99 的方法编译
35 @$(CC) $(CFLAGS) -c $< -std=c99 -o $@
2、arm-linux-gnueabihf-gcc: 错误: unrecognized command line option ‘-Wshift-negative-value’
原因:我也不知道为啥
解决:我前面说过修改Makefile
原因:我也不知道为啥
解决:我前面说过修改Makefile
版权归原作者 烧烤时间到! 所有, 如有侵权,请联系我们删除。