WhyCan Forum

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-11-26 10:07:15

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

u-boot如何开启LCD 和 LOGO?

官方的u-boot似乎开启了LCD和LCD Console。我看到有log: set up a 480x272 LCD console. 然而我自己编的u-boot啥都没有。
请问需要打开那些开关和设置?
我试了下CONFIG_VIDEO_SUNXI 不过没有起作用

离线

#2 2019-11-26 10:13:48

鱼与熊掌
会员
注册时间: 2019-11-26
累计积分: 5

Re: u-boot如何开启LCD 和 LOGO?

f1c100s ? licheepi 官方的 u-boot 默认就开了 lcd, 如果不亮检查硬件配置。

离线

#3 2019-11-26 10:30:35

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,562

离线

#4 2019-11-26 10:41:08

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

鱼与熊掌 说:

f1c100s ? licheepi 官方的 u-boot 默认就开了 lcd, 如果不亮检查硬件配置。

我用的是uboot-2018那个分支,没改什么东西,以前的uboot有这句话:set up a 480x272 LCD console
现在没有了,我感觉还是哪个地方没开

离线

#5 2019-11-26 10:49:47

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,562

Re: u-boot如何开启LCD 和 LOGO?

烧这个固件可以亮吗: https://whycan.cn/t_2689.html

离线

#6 2019-11-26 10:53:57

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

离线

#7 2019-11-26 11:21:07

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

准备试试打开这几个
CONFIG_VIDEO
CONFIG_VIDEO_SUNXI
CONFIG_VIDEO_LOGO
CONFIG_VIDEO_BMP_LOGO

此外还有几个相关config有点晕。。
CONFIG_LCD
CONFIG_XXXX_LCD
CONFIG_SPLASH_SCREEN

离线

#8 2019-11-26 11:31:42

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

请问把config定义到头文件和定义到deconfig有什么区别?
make deconfig和make menuconfig似乎都是把config设置到.config文件
那么头文件里有重复定义的config会被覆盖吗?

离线

#9 2019-11-26 11:39:08

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,562

Re: u-boot如何开启LCD 和 LOGO?

达克罗德 说:

请问把config定义到头文件和定义到deconfig有什么区别?
make deconfig和make menuconfig似乎都是把config设置到.config文件
那么头文件里有重复定义的config会被覆盖吗?

定义到 deconfig, 而不定义到头文件,主要目的是去耦吧。

我觉得头文件会覆盖 .config 的配置, 代码的编译优先级更改吧。

所以如果有重复定义的宏, gcc 编译会有警告。

离线

#10 2019-11-26 11:44:37

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

晕哥 说:

定义到 deconfig, 而不定义到头文件,主要目的是去耦吧。

我觉得头文件会覆盖 .config 的配置, 代码的编译优先级更改吧。

所以如果有重复定义的宏, gcc 编译会有警告。

看到nano-lcd800480以及全志很多地方在头文件里定义config,感觉非常晕。。。
看来大家在改uboot的时候并不是按照官方架构去走,导致我学习uboot的时候感觉非常不清晰。
XBOOT其实架构一致性非常好,我没有任何文档,基本看了几天代码就搞得比较清楚了。

离线

#11 2019-11-27 08:08:16

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

增加了这几个后,log显示“Setting up a 800x480 lcd console (overscan 0x0)“,驱动加载成功
CONFIG_VIDEO_SUNXI=y
CONFIG_VIDEO=y
CONFIG_CFB_CONSOLE=y
CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:0,vmode:0"
CONFIG_VIDEO_LCD_BL_PWM_ACTIVE_LOW=n
CONFIG_VIDEO_LCD_BL_PWM="PE6"

不过,背光和显示还是不工作,跟踪背光PIN的设置,发现找PE6的时候,没找到相应管脚,pin为-22,不是正值。。。
看来dts或什么地方还缺少GPIO的配置。。。

离线

#12 2019-11-27 09:10:50

metro
会员
注册时间: 2019-03-09
累计积分: 67

Re: u-boot如何开启LCD 和 LOGO?

达克罗德 说:

增加了这几个后,log显示“Setting up a 800x480 lcd console (overscan 0x0)“,驱动加载成功
CONFIG_VIDEO_SUNXI=y
CONFIG_VIDEO=y
CONFIG_CFB_CONSOLE=y
CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:0,vmode:0"
CONFIG_VIDEO_LCD_BL_PWM_ACTIVE_LOW=n
CONFIG_VIDEO_LCD_BL_PWM="PE6"

不过,背光和显示还是不工作,跟踪背光PIN的设置,发现找PE6的时候,没找到相应管脚,pin为-22,不是正值。。。
看来dts或什么地方还缺少GPIO的配置。。。

我遇到过这个问题,发现是因为默认开启了DM_GPIO,在这种情况下会从设备树中搜索指定名称的引脚,所以会返回-EINVAL。
一个解决方案是关闭DM_GPIO,不过ARCH_SUNXI默认select了DM_GPIO,所以需要改一下Kconfig,我记得还要改SPI的驱动才能编译通过。改完之后就能用了。

离线

#13 2019-11-27 10:20:04

gui401
会员
注册时间: 2019-10-25
累计积分: 14

Re: u-boot如何开启LCD 和 LOGO?

uboot也遇到了背光不亮的问题,用手电照看到屏幕有显示。期待楼主的好消息

离线

#14 2019-11-27 10:25:22

jimmy
Moderator
注册时间: 2017-10-29
累计积分: 290

Re: u-boot如何开启LCD 和 LOGO?

gui401 说:

uboot也遇到了背光不亮的问题,用手电照看到屏幕有显示。期待楼主的好消息

手电筒,这操作66666

离线

#15 2019-11-27 10:26:59

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

metro 说:

我遇到过这个问题,发现是因为默认开启了DM_GPIO,在这种情况下会从设备树中搜索指定名称的引脚,所以会返回-EINVAL。
一个解决方案是关闭DM_GPIO,不过ARCH_SUNXI默认select了DM_GPIO,所以需要改一下Kconfig,我记得还要改SPI的驱动才能编译通过。改完之后就能用了。

太好了,你也遇到过,求教怎么关掉DM_GPIO, deconfig里设置不起作用,menuconfig也关不掉
另外,改SPI的驱动是怎么回事?只是改编译错误对吧,我没有用SPI应该不用改吧

离线

#16 2019-11-27 10:36:04

metro
会员
注册时间: 2019-03-09
累计积分: 67

Re: u-boot如何开启LCD 和 LOGO?

达克罗德 说:

太好了,你也遇到过,求教怎么关掉DM_GPIO, deconfig里设置不起作用,menuconfig也关不掉
另外,改SPI的驱动是怎么回事?只是改编译错误对吧,我没有用SPI应该不用改吧

晚些时候我给个patch吧。关不掉是因为Kconfig有依赖关系,不过我测试之后发现对于GPIO不开DM似乎可以正常用。
SPI是因为调用了GPIO的功能,不过几个用到DM_GPIO的地方其实都是打印debug信息,所以直接关掉不会有影响,至少SPI Flash可以正常使用。

离线

#17 2019-11-27 10:44:33

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

config ARCH_SUNXI
    bool "Support sunxi (Allwinner) SoCs"
。。。
    select DM_GPIO

感觉是这个依赖导致的,回家试试

离线

#18 2019-11-27 14:56:01

metro
会员
注册时间: 2019-03-09
累计积分: 67

Re: u-boot如何开启LCD 和 LOGO?

贴一下patch内容。其实很简单,就是把ARCH_SUNXI的select DM_GPIO去掉,顺便修一下相关的编译错误。
另外理论上应该可以保留DM_GPIO,用设备树的方式配置,有兴趣的同学可以试一下 tongue

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 918424a..8f68be1 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -697,7 +697,6 @@ config ARCH_SUNXI
        select CMD_USB if DISTRO_DEFAULTS
        select DM
        select DM_ETH
-       select DM_GPIO
        select DM_KEYBOARD
        select DM_SERIAL
        select DM_USB if DISTRO_DEFAULTS
diff --git a/drivers/spi/sun6i_spi.c b/drivers/spi/sun6i_spi.c
index 750c4d8..dabf661 100644
--- a/drivers/spi/sun6i_spi.c
+++ b/drivers/spi/sun6i_spi.c
@@ -10,9 +10,7 @@
  */

 #include <common.h>
-#ifdef CONFIG_DM_GPIO
 #include <asm/gpio.h>
-#endif
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <dm.h>
@@ -103,10 +101,10 @@ static int sunxi_spi_cs_activate(struct udevice *dev, unsigned cs)
        struct sunxi_spi_reg *spi = (struct sunxi_spi_reg *)plat->base;
        struct sunxi_spi_privdata *priv = dev_get_priv(bus);
        int ret = 0;
-
+#if 0
        debug("%s (%s): cs %d cs_gpios_num %d cs_gpios %p\n",
              dev->name, __func__, cs, plat->cs_gpios_num, plat->cs_gpios);
-
+#endif
        /* If it's too soon to do another transaction, wait... */
        if (plat->deactivate_delay_us && priv->last_transaction_us) {
                ulong delay_us;

离线

#19 2019-11-27 15:12:08

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

metro 说:

贴一下patch内容。其实很简单,就是把ARCH_SUNXI的select DM_GPIO去掉,顺便修一下相关的编译错误。
另外理论上应该可以保留DM_GPIO,用设备树的方式配置,有兴趣的同学可以试一下 tongue

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 918424a..8f68be1 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -697,7 +697,6 @@ config ARCH_SUNXI
        select CMD_USB if DISTRO_DEFAULTS
        select DM
        select DM_ETH
-       select DM_GPIO
        select DM_KEYBOARD
        select DM_SERIAL
        select DM_USB if DISTRO_DEFAULTS
diff --git a/drivers/spi/sun6i_spi.c b/drivers/spi/sun6i_spi.c
index 750c4d8..dabf661 100644
--- a/drivers/spi/sun6i_spi.c
+++ b/drivers/spi/sun6i_spi.c
@@ -10,9 +10,7 @@
  */

 #include <common.h>
-#ifdef CONFIG_DM_GPIO
 #include <asm/gpio.h>
-#endif
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <dm.h>
@@ -103,10 +101,10 @@ static int sunxi_spi_cs_activate(struct udevice *dev, unsigned cs)
        struct sunxi_spi_reg *spi = (struct sunxi_spi_reg *)plat->base;
        struct sunxi_spi_privdata *priv = dev_get_priv(bus);
        int ret = 0;
-
+#if 0
        debug("%s (%s): cs %d cs_gpios_num %d cs_gpios %p\n",
              dev->name, __func__, cs, plat->cs_gpios_num, plat->cs_gpios);
-
+#endif
        /* If it's too soon to do another transaction, wait... */
        if (plat->deactivate_delay_us && priv->last_transaction_us) {
                ulong delay_us;

非常感谢!先用你的方式实现。设备树方式应该最好,不过我不会写。。。

离线

#20 2019-11-27 15:27:35

metro
会员
注册时间: 2019-03-09
累计积分: 67

Re: u-boot如何开启LCD 和 LOGO?

达克罗德 说:

非常感谢!先用你的方式实现。设备树方式应该最好,不过我不会写。。。

不客气,我也不会,所以就当抛砖引玉了 lol

最近编辑记录 metro (2019-11-27 15:27:50)

离线

#21 2019-11-27 23:08:48

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

感谢楼上几位,成功!就是按照metro的方式关掉DM_GPIO
所有改动见:
https://github.com/nanfang2000/u-boot/commit/1869e2054b5de67112c534becc20de6eac06504e

WechatIMG606.jpeg

离线

#22 2019-11-27 23:10:05

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

后面的错应该是我除了uboot,其它比如zImage和rootfs都没有,分区也没有,所以报错

离线

#23 2019-11-27 23:29:14

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,562

Re: u-boot如何开启LCD 和 LOGO?

是 tiky 1508吗?初始化如何做的,电阻跳线,还是时序?

离线

#24 2019-11-28 00:47:01

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

晕哥 说:

是 tiky 1508吗?初始化如何做的,电阻跳线,还是时序?

用的专门的gpio做的软spi,应该也可以用硬件spi实现。这几个gpio,据tiky说,甚至可以用LCD的数据线复用

离线

#25 2019-11-28 07:40:03

并夕夕
会员
注册时间: 2019-11-24
累计积分: 25

Re: u-boot如何开启LCD 和 LOGO?

达克罗德 说:

用的专门的gpio做的软spi,应该也可以用硬件spi实现。这几个gpio,据tiky说,甚至可以用LCD的数据线复用

3线spi 与 lcd 线复用? 这是什么骚操作, 我怎么还没有学会?

离线

#26 2019-11-28 09:33:28

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

并夕夕 说:

3线spi 与 lcd 线复用? 这是什么骚操作, 我怎么还没有学会?

不清楚,我也是听tiky说的,不过我觉得cs脚起码得独立io吧,要不会干扰到spi

离线

#27 2019-11-28 09:41:57

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,562

Re: u-boot如何开启LCD 和 LOGO?

达克罗德 说:

不清楚,我也是听tiky说的,不过我觉得cs脚起码得独立io吧,要不会干扰到spi

对,cs脚肯定要单独控制。

tiky这个屏是竖屏吗?怎么旋转90度?

离线

#28 2019-11-28 13:20:20

达克罗德
会员
注册时间: 2018-04-10
累计积分: 667

Re: u-boot如何开启LCD 和 LOGO?

晕哥 说:

对,cs脚肯定要单独控制。

tiky这个屏是竖屏吗?怎么旋转90度?

你看我初始化代码里有个旋转的宏。其实就是配置一下刷屏的读指针顺序和范围

离线

页脚