uboot入门学习-LCD篇

uboot-LCD篇


前言

@和原子哥一起学习Linux

驱动篇已经学完,后面打算自己去走一遍,后续会将感兴趣的内容记录下来。

开发环境:I.MX6Ull开发板
参考内容:正点原子的驱动开发教程,并完成uboot移植部分,使用自己移植的代码。

一、成果展示

和原图差距有点大,但是勉强能用。。
在这里插入图片描述

二、查看显示代码

在移植的时候就知道了logo显示的宏,查找即可:

在这里插入图片描述

1.代码路径及修改

反推出来的流程为:

init_sequence_r[] -> stdio_add_devices-> drv_lcd_init (); -> lcd_init(lcd_base)->lcd_clear()
->lcd_logo();

实际搜CONFIG_VIDEO_BMP_LOGO可以看到图片文件路径:

uboot\include\bmp_logo.h
uboot\include\bmp_logo_data.h

文件上显示:
Automatically generated by “tools/bmp_logo”
所以找uboot\tools\bmp_logo.c

查看

uboot\tools\Makefile

$(LOGO_H):	$(obj)/bmp_logo $(LOGO_BMP)
	$(obj)/bmp_logo --gen-info $(LOGO_BMP) > $@

$(LOGO_DATA_H):	$(obj)/bmp_logo $(LOGO_BMP)
	$(obj)/bmp_logo --gen-data $(LOGO_BMP) > $@
	
	......
	
	# Generic logo
	ifeq ($(LOGO_BMP),)
	LOGO_BMP= $(srctree)/$(src)/logos/denx.bmp
	
	# Use board logo and fallback to vendor
	ifneq ($(wildcard $(srctree)/$(src)/logos/$(BOARD).bmp),)
	LOGO_BMP= $(srctree)/$(src)/logos/$(BOARD).bmp
	else
	ifneq ($(wildcard $(srctree)/$(src)/logos/$(VENDOR).bmp),)
	LOGO_BMP= $(srctree)/$(src)/logos/$(VENDOR).bmp
	endif
	endif

可以看出文件所在位置:tools/logos。或直接搜图片后缀名

在这里插入图片描述

确认需要替换的文件为freescale.bmp,应备份后用软连接指向我们自己的文件即可。

在这里插入图片描述

2.图片获取

使用Image2LCD,此处由于图片选择问题,导致导出的图片为800*400,但是也能用,这个软件自己多试试就好,比较简单。
在这里插入图片描述

出现的问题

以上的修改并没完成,直接输入会导致显示异常,经过排查发现,是图片过大后,uboot版本打印导致的问题,所以需要对这个问题进行修复。

路径:uboot\drivers\video\cfb_console.c
函数:static void *video_logo(void)

	sprintf(info, " %s", version_string);

	space = (VIDEO_COLS - VIDEO_INFO_X) / VIDEO_FONT_WIDTH;
	len = strlen(info);
	
	//根据屏幕大小设置即可
	video_drawstring((800 - len)/2, 420, (uchar *) info);

	/*
	//此处屏蔽
	if (len > space) {
		int xx = VIDEO_INFO_X, yy = VIDEO_INFO_Y;
		uchar *p = (uchar *) info;
		while (len) {
			if (len > space) {
				video_drawchars(xx, yy, p, space);
				len -= space;

				p = (uchar *) p + space;

				if (!y_off) {
					xx += VIDEO_FONT_WIDTH;
					space--;
				}
				yy += VIDEO_FONT_HEIGHT;

				y_off++;
			} else {
				video_drawchars(xx, yy, p, len);
				len = 0;
			}
		}
	} else
		video_drawstring(VIDEO_INFO_X, VIDEO_INFO_Y, (uchar *) info);
		
*/
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值