|
【平头哥Sipeed LicheeRV 86开发板试用】SDK编译的系统镜像屏不适配问题解决加触屏检验
最近群里有小伙用全志官方SDK, 编译了D1系统镜像,说屏点不亮, 昨天我也编译好了,没有代码里适配屏,也要这样的操作一下。
准备
开发板fex适配文件, 下载:
https://dl.sipeed.com/shareURL/LICHEE/D1/Lichee_RV/SDK/board
LicheeRV 86开发板 SDK编译的系统镜像屏不适配 原因分析
LicheeRV 86开发板是新出来的,全志官方SDK,未适配正常,但sipeed提供了 fex 适配
参考文档https://www.freesion.com/article/42151346373/
driver连接硬件资源大概就这样,mtk和qcom解析硬件资源直接就在厂商驱动中通过dsti解析节点,全志中间加了一层用于解析,解析的节点来自fex文件。基本是一样,还是设备节点,还是of api解析。
这个fex,应该就是适配硬件的, 源码应该没适配好
fex解说
这个网站上有详细的介绍Fex
http://linux-sunxi.org/Fex_Guide#FEX_Description
也可以转到
http://linux-sunxi.org
了解全志的sunxi
翻译一下
一些翻译和概括:
fex目录:
lichee/tool/pack/chips/sun8iw11p1/config/a40-p1/sys_config.fex
fex是Allwinner的设备树,用于配置gpio和一些配置,然后fex文件不是像dts一样用于解析的,而是fex
编译器编译的。
然后后面英文有备注全志跟其他mtk和高通平台不一样,不依赖dts和dsti:
注意:主线Linux内核不使用FEX / script.bin,而是依靠设备树模型(.dtb文件)
--------------------
总结起来就是:
驱动 = driver code + fex配置
解决方法
官方文档说:
如果烧录的镜像后缀与板子实际型号不符,下载对应的 boot_package_XXX.fex 来覆盖板级配置
覆盖指令为:
- sudo dd if=boot_package_XXX.fex of=/dev/sdX bs=1K seek=16400
复制代码
小伙伴,不知道,怎么操作,这里吐槽一下,官方文档写的,很不详细,还有错误
操作步骤
下面我把详细步骤说一下:
1、系统镜像烧录到tf卡后,读卡器插到linux开发机,虚拟机的话先主机弹出tf卡设备(软件操作)插电脑上,要点虚拟机访问
2、插卡前 用命令
检查下 设备号
3、插卡后,用命令
再检查下 设备号
增加的,就是刚插入的tf卡设备号
sdx 要用查到设备号替换为sdb
4、dd烧录fex
注意:LicheeRV 86开发板有两个屏镜,sipeed也提供了两适配文件fex
标配的是rgb
所以,执行命令:
- dd if=boot_package_86_480p_bgr.fex of=/dev/sdb bs=1k seek=16400
复制代码
注:命令功能 把boot_package_86_480p_rgb.fex 写seek=16400 开始扇区,大小 1k
5、把卡插到LicheeRV 86开发板,启动LicheeRV 86开发板
6、网络配置好操作参考:【平头哥Sipeed LicheeRV 86开发板试用】连接网络
7、测试屏,检查是否适配成功
查看屏信息命令cat /sys/class/disp/disp/attr/sys
- root@MaixLinux:~# cat /sys/class/disp/disp/attr/sys
- screen 0:
- de_rate 300000000 hz, ref_fps:60
- mgr0: 480x480 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_sync[0] unblank direct_show[false] iommu[1]
- dmabuf: cache[0] cache max[0] umap skip[0] overflow[0]
- lcd output backlight( 50) fps:59.5 esd level(0) freq(60)pos(0) reset(0) 480x 480
- err:0 skip:314 irq:1870259 vsync:0 vsync_skip:0
- BUF enable ch[1] lyr[0] z[16] prem[N] a[globl 255] fmt[ 0] fb[ 480, 480; 480, 480; 480, 480] crop[ 0, 0, 640, 240] frame[ 0, 0, 480, 480] addr[ffe00000, 0, 0] flags[0x 0] trd[0,0]
复制代码 一切正常
运行命令:
可以看到条纹
屏幕彩条测试:
- echo 1 > /sys/class/disp/disp/attr/colorbar
复制代码 清除屏幕布彩条
- echo 0 > /sys/class/disp/disp/attr/colorbar
复制代码
用 ts_test进行触摸测试, 点屏,终端会打印坐
- root@MaixLinux:~# ts_test
- 31928.017458: 67 45 0
- 31928.143684: 0 0 0
- 31928.570296: 226 55 0
- 31928.673580: 0 0 0
- 31928.950407: 428 66 0
- 31929.007613: 0 0 0
复制代码
到 /root目标ls查看
- root@MaixLinux:~# ls
- app_sispeed.aot render_example_d1_allwin.wasm
- render_example.wasm
复制代码 看到有3个可以waft程序
输入命令
- waft_app render_example_d1_allwin.wasm
复制代码
可以看到如下效果,我们屏已经适配好了
总结
全志fex屏适配方法,很好用,比修改代码适配方便多,改代码不一定改对,群里小伙伴,改了很久都没适配成功,编译系统镜像也是很费时,给全志点赞
|
+10
|