鸣涧 发表于 2022-3-16 00:35:24

【平头哥Sipeed LicheeRV 86开发板试用】SDK编译的系统屏适配

【平头哥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、插卡前 用命令ls /dev/sd*
检查下 设备号



3、插卡后,用命令ls /dev/sd*
再检查下 设备号

增加的,就是刚插入的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 cs range eotf bits err force_sync unblank direct_show iommu
dmabuf: cache cache max umap skip overflow
    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 lyr z prem a fmt fb[ 480, 480; 480, 480; 480, 480] crop[   0,   0, 640, 240] frame[   0,   0, 480, 480] addr flags trd一切正常


运行命令:
fbtest可以看到条纹

屏幕彩条测试:
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屏适配方法,很好用,比修改代码适配方便多,改代码不一定改对,群里小伙伴,改了很久都没适配成功,编译系统镜像也是很费时,给全志点赞
页: [1]
查看完整版本: 【平头哥Sipeed LicheeRV 86开发板试用】SDK编译的系统屏适配