天天看点

荔枝派ZERO_修改uboot添加自己的屏幕驱动(一)

虽然经过前面的小白洗礼,终于将uboot如何切换开机画面弄好了,但是使用的毕竟还是她原本支持的800*480屏幕,而我的最终目的是要使用我自己的480*480屏。

面临的主要问题有:1、对uboot文件架构不熟悉,2、原本的800*480屏幕是RGB直接驱动,而480*480的需要先使用SPI初始化。

那么意味着,我需要学会在uboot中编写SPI程序,同时要在LCD屏幕驱动初始化前调用。

而且我的480*480是RGB888,ZERO只支持RGB666,意味着要画转接板。

2021年5月7号,基于前几天完成了如下测试,突然兴趣大增,有了新的方案,使用其他IC初始化屏幕,RGB接口对接荔枝派zero。显示画面如下:

荔枝派ZERO_修改uboot添加自己的屏幕驱动(一)

因此,使用立创EDA画了如下转接板:利用GD32E230FxV6系列芯片,仅对屏幕进行初始化。刚好也学习一下GD的芯片操作。

荔枝派ZERO_修改uboot添加自己的屏幕驱动(一)
荔枝派ZERO_修改uboot添加自己的屏幕驱动(一)

现在就等电路板和元器件到了,测试一下后,就只需要简单修改原有的uboot中关于屏幕部分的驱动,调整成480*480即可。

1、准备开机logo

convert -resize 480x480 aiqy.png aiqy480x480.jpg:调整大小,重命名,修改格式为jpg。

ffmpeg -i aiqy480x480.jpg -pix_fmt rgb8 aiqy480x480.bmp:修改格式位8位bmp。

打开图片:xdg-open aiqy480x480.bmp

将图片放到u-boot/tools/logos/下。

2、修改开机画面

~/Desktop/lichee/u-boot/u-boot/tools$ vi Makefile 

荔枝派ZERO_修改uboot添加自己的屏幕驱动(一)

3、添加宏定义,编译自定义logo

修改:~/Desktop/lichee/u-boot/u-boot/include/configs$ vim sun8i.h 

荔枝派ZERO_修改uboot添加自己的屏幕驱动(一)

         42 #define CONFIG_VIDEO_LOGO

         43 #define CONFIG_VIDEO_BMP_LOGO

4、要修改uboot中屏幕驱动,需要找到原生屏幕的驱动文件并按照格式进行修改。

拷贝文件:~/Desktop/lichee/u-boot/u-boot/configs$ cp LicheePi_Zero_800x480LCD_defconfig LicheePi_Zero_480x480LCD_defconfig

这里出现问题:拷贝过程中修改了文件名,那么相对应编译的文件也会需要修改才对?在后面有修改。

 将文件中参数修改: 7 CONFIG_VIDEO_LCD_MODE="x:480,y:480,depth:18,pclk_khz:33000,le:87,ri:40,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0"

5、编译,烧写

将编译指令修改:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_800x480LCD_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_480x480LCD_defconfig

make ARCH=arm menuconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

6、结案

荔枝派ZERO_修改uboot添加自己的屏幕驱动(一)
荔枝派ZERO_修改uboot添加自己的屏幕驱动(一)

由于是在不同电脑上进行的,图片使用的不是同一张,但过程正确。后续会把转接板和驱动程序上传。

综上:除了替换logo文件操作外,实际上仅进行了拷贝文件、修改文件名、修改文件内像素参数、修改编译指令。并没有对底层进行较难的修改。