linux笔记(8):东山哪吒D1H移植lvgl(HDMI输出)
文章目录
我买的东山哪吒开发板是丐中丐板,核心板+基础底板,所以就先用一个闲置的24寸显示器,通过HDMI显示,现在没有输入设备,只能显示。
照这韦东山老师的教程移植了一遍。看看效果(使用了800 x 480 的区域):
韦东山老师出品:《【嵌入式Linux应用开发】移植LVGL到Linux开发板》
https://huaweicloud.csdn.net/63561805d3efff3090b59e62.html
这里梳理一下流程和问题点。
1. 下载,修改,编译源码
1.1下载源码
1.1.1新建一个lvgl
目录,在该目录下下载源码
book@100ask:~/lvgl$ git clone https://github.com/lvgl/lvgl.git
book@100ask:~/lvgl$ git clone https://github.com/lvgl/lv_drivers.git
book@100ask:~/lvgl$ git clone https://github.com/lvgl/lv_demos.git
book@100ask:~/lvgl$ git clone https://github.com/lvgl/lv_port_linux_frame_buffer.git
1.1.2 在lvgl
目录下再建一个myspace/lvgl_demo
目录,把参与编译的文件拷贝到本目录
韦东山老师没有使用到lv_demos
,我们是需要lv_demos
的,所以我们的目录下,应该有这些内容:
这4个文件的链接:《lvgl_demo》https://gitee.com/huangweide001/linux-d1-h-test/tree/master/D1H-lvgl.
1.2 修改源码
韦东山老师的教程很详细的说明了如何修改,虽然有一些行号对应不上,但是不影响操作。还有因为我的开发板没有输入设备,我把main()
函数中的相关代码注释了。
Makefile
修改2个地方:
- 指定编译器
4 CC = /home/hwd/eLinuxCore_dongshannezhastu/toolchain/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc
这里不能用 CC ?= xxx.
CC ?= xxx
表示如果前面没有指定编译器,现在才指定;如果前面已经有了指定了 CC
的值,这里就无效。
我没有去掉 ?
之前,编译出来的可执行文件运行的结果:
> ./demo
./demo: line 1:ELF: not found
./demo: line 26: syntax error: unexpected word (expecting ")")
实际上是使用ubuntu自带的编译器 /usr/bin/gcc
编译出来的,无法在开发板运行。
2. 注释掉鼠标相关c文件,不参与编译
19 #CSRCS +=$(LVGL_DIR)/mouse_cursor_icon.c
1.3编译源码
进入目录/home/hwd/test/lvgl/workspace/lvgl_demo
,直接make:
/home/hwd/test/lvgl/workspace/lvgl_demo> make
顺利的话就会生成可执行文件 demo
.
2.拷贝到东山哪吒开发板运行
我这里运行demo
之前,也要先手动开启HDMI。
拷贝到开发板,修改 demo
的可执行权限,再运行:
> chmod 777 demo
> ./demo
[ 4654.153462] [SNDCODEC][sunxi_check_hs_detect_status][191]:plugin --> switch:1
[23511.007245] sunxi_set_cur_vol_work()394 WARN: get power supply failed
[23511.095303] android_work: sent uevent USB_STATE=CONNECTED
[23511.156216] configfs-gadget gadget: high-speed config #1: c
[23511.164595] android_work: sent uevent USB_STATE=CONFIGURED
运行结果如文章开头的图片。
3.已移植好的源码链接
需要改动的4个文件的链接:《lvgl_demo》https://gitee.com/huangweide001/linux-d1-h-test/tree/master/D1H-lvgl.