工具/软件:Linux
您好:
我正在使用 u-boot 2011 +内核4.4.32 (从 am3354处理器 SDK 03.02.00.05中提取)。
现在、我想为 u-boot 实现闪屏功能。
我曾提到过
与论坛上的上一个帖子相同。
首先、在我执行开机自检中的步骤后 u-boot LCD 驱动程序工作正常。
我的 LCD 内核 DTS 设置为:
面板{
兼容="ti、tilcdc、panel ";
状态="正常";
pinctrl-names ="default";
pinctrl-0 =<&LCD_PINS_s0>;
面板信息{
交流偏置 =<255>;
AC-BIAS-INtrpt =<0>;
dma-burse-SZ =<16>;
bpp =<32>;
FDD =<0x80>;
同步边沿 =<0>;
SYNC-Ctrl =<1>;
栅格顺序 =<0>;
FIFO-TH =<0>;
};
显示时序{
320x240p62{
时钟频率=<21000000>;
hactive =<320>;
Vactive =<240>;
前沿=<18>;
后沿=<56>;
HSYNC-LEN =<10>;
后沿=<17>;
垂直前沿=<10>;
vsync-len =<1>;
HSYNC-ACTIVE =<0>;
vsync-active =<0>;
像素时钟激活=<1>;
};
};
};
当在 u-boot 中未实现 LCD 驱动器时、它运行良好。
然后、我更改了 u-boot 的 LCD 驱动程序中的代码、使其与内核中的代码完全相同。如下所示:
/*配置 pclk */
RasterClkConfig (SOC_LCDC_0_regs、21000000、192000000);//(SOC_LCDC_0_regs、21000000、192000000) //将 pclk 更改为21MHz。
…
/*配置水平时序参数*/
RasterHparamConfig (SOC_LCDC_0_regs、320、10、18、56); //更改了水平像素数。 HFP、HBP 和 HSW。
/*配置垂直定时参数*/
RasterVparamConfig (SOC_LCDC_0_regs、240、1、10、17); //更改垂直像素数。 VFP、VBP 和 Vsw.
如您所见。到目前为止、它与内核 DTS 中的 LCD 参数完全相同。
So.I 构建了 u-boot.reboot。
它在启动界面中看起来很好。在这里。
我还知道、对于4.4内核、有必要使用显示 PLL 而不是外设 PLL。
这样部分代码也会在 u-boot LCD 驱动程序中实现。(感谢 论坛中的一篇帖子)
我要在这里附加驱动程序代码。
现在、这里是奇怪的部分。
u-boot 完成后。当内核启动时。我可以看到内核显示的图像稍微移动到左侧。 ( 如果在 u-boot 中未实现 LCD 驱动程序、内核工作正常。)
我启动了一个 SGX 演示应用、向您展示它的外观。这里:
因此、根据我的经验、我开始更改 HSW、HBP 或 HFP 以查看是否可以正确操作。但结果发现没有一个参数真正解决了问题。
这是我所做的。
1. HSYNC-LEN =<10>; -> HSYNC-LEN =<1>;
正如您在下面的照片中看到的。这里有这个奇怪的像素区域(我标记的红色方形中的垂直列)。像素看起来是重复的。
2. HSYNC-LEN =<10>; -> HSYNC-LEN =<30>;
如您所见。我设法对齐正确的右列。但奇怪的像素区域仍然存在。
3.后沿=<56>; -> 后沿=<75>
基本上与最后一个实验相同。我设法对齐正确的右列。但奇怪的像素区域仍然存在。这次只有 HBP i chanegd。
4.HFP 不 影响显示屏、但我更改了它。
到现在为止。
我可以肯定:
a.no 更改 HFP/HBP/HSW 的方式很重要。 更不用说 VFP/VBP/Vsw. 这种现象存在。
b.in u-boot 的 LCD 驱动程序。 LCD 驱动器的时钟源无关紧要。 是显示 PLL.还是 外设 PLL。 甚至内核 PLL。
C.I 甚至尝试逐件切断 Uboot 的 LCD 驱动器。 删除代码段以准确找出导致内核运行异常的设置。但没有成功。一旦代码到达 RasterEnable (SOC_LCDC_0_reg)、情况就会发生错误。
请告知您应该怎么做?
要在 uboot 中更改 LCD 驱动程序?
或者看看内核开始初始化 LCD 控制器时是否有办法复位 LCD 寄存器?
感谢大家
延东
