IMX6ULL移植LVGL
话不多说,直接开干!!!
1、移植准备
1.1、源码克隆
文件名 | 克隆命令 | 描述 |
---|---|---|
lvgl | git clone https://github.com/lvgl/lvgl.git | 包含了LVGL图形界面控件的源码以及少量例程 |
lvgl | git clone https://github.com/lvgl/lv_drivers.git | 包含了驱动LVGL图形界面的驱动接口源代码 |
lv_port_linux_frame_buffer | git clone https://github.com/lvgl/lv_port_linux_frame_buffer.git | 适配有frame buffer的linux系统的接口 |
lv_demos | git clone https://github.com/lvgl/lv_demos.git | LVGL的例程 |
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 10
84 #define LV_INDEV_DEF_REFR_PERIOD 10
85
85 #define LV_TICK_CUSTOM 1
87 #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文章来源:https://uudwc.com/A/59BLv
原因:我也不知道为啥
解决:我前面说过修改Makefile
文章来源地址https://uudwc.com/A/59BLv