官方的u-boot似乎开启了LCD和LCD Console。我看到有log: set up a 480x272 LCD console. 然而我自己编的u-boot啥都没有。
请问需要打开那些开关和设置?
我试了下CONFIG_VIDEO_SUNXI 不过没有起作用
离线
f1c100s ? licheepi 官方的 u-boot 默认就开了 lcd, 如果不亮检查硬件配置。
我用的是uboot-2018那个分支,没改什么东西,以前的uboot有这句话:set up a 480x272 LCD console
现在没有了,我感觉还是哪个地方没开
离线
离线
准备试试打开这几个
CONFIG_VIDEO
CONFIG_VIDEO_SUNXI
CONFIG_VIDEO_LOGO
CONFIG_VIDEO_BMP_LOGO
此外还有几个相关config有点晕。。
CONFIG_LCD
CONFIG_XXXX_LCD
CONFIG_SPLASH_SCREEN
离线
请问把config定义到头文件和定义到deconfig有什么区别?
make deconfig和make menuconfig似乎都是把config设置到.config文件
那么头文件里有重复定义的config会被覆盖吗?
离线
定义到 deconfig, 而不定义到头文件,主要目的是去耦吧。
我觉得头文件会覆盖 .config 的配置, 代码的编译优先级更改吧。
所以如果有重复定义的宏, gcc 编译会有警告。
看到nano-lcd800480以及全志很多地方在头文件里定义config,感觉非常晕。。。
看来大家在改uboot的时候并不是按照官方架构去走,导致我学习uboot的时候感觉非常不清晰。
XBOOT其实架构一致性非常好,我没有任何文档,基本看了几天代码就搞得比较清楚了。
离线
增加了这几个后,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的驱动才能编译通过。改完之后就能用了。
太好了,你也遇到过,求教怎么关掉DM_GPIO, deconfig里设置不起作用,menuconfig也关不掉
另外,改SPI的驱动是怎么回事?只是改编译错误对吧,我没有用SPI应该不用改吧
离线
config ARCH_SUNXI
bool "Support sunxi (Allwinner) SoCs"
。。。
select DM_GPIO
感觉是这个依赖导致的,回家试试
离线
贴一下patch内容。其实很简单,就是把ARCH_SUNXI的select DM_GPIO去掉,顺便修一下相关的编译错误。
另外理论上应该可以保留DM_GPIO,用设备树的方式配置,有兴趣的同学可以试一下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;
非常感谢!先用你的方式实现。设备树方式应该最好,不过我不会写。。。
离线
感谢楼上几位,成功!就是按照metro的方式关掉DM_GPIO
所有改动见:
https://github.com/nanfang2000/u-boot/commit/1869e2054b5de67112c534becc20de6eac06504e
离线
后面的错应该是我除了uboot,其它比如zImage和rootfs都没有,分区也没有,所以报错
离线
是 tiky 1508吗?初始化如何做的,电阻跳线,还是时序?
用的专门的gpio做的软spi,应该也可以用硬件spi实现。这几个gpio,据tiky说,甚至可以用LCD的数据线复用
离线
3线spi 与 lcd 线复用? 这是什么骚操作, 我怎么还没有学会?
不清楚,我也是听tiky说的,不过我觉得cs脚起码得独立io吧,要不会干扰到spi
离线
对,cs脚肯定要单独控制。
tiky这个屏是竖屏吗?怎么旋转90度?
你看我初始化代码里有个旋转的宏。其实就是配置一下刷屏的读指针顺序和范围
离线