虽然经过前面的小白洗礼,终于将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。显示画面如下:
因此,使用立创EDA画了如下转接板:利用GD32E230FxV6系列芯片,仅对屏幕进行初始化。刚好也学习一下GD的芯片操作。
现在就等电路板和元器件到了,测试一下后,就只需要简单修改原有的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
3、添加宏定义,编译自定义logo
修改:~/Desktop/lichee/u-boot/u-boot/include/configs$ vim sun8i.h
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、结案
由于是在不同电脑上进行的,图片使用的不是同一张,但过程正确。后续会把转接板和驱动程序上传。
综上:除了替换logo文件操作外,实际上仅进行了拷贝文件、修改文件名、修改文件内像素参数、修改编译指令。并没有对底层进行较难的修改。