This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3358:液晶屏不能正常工作

Guru**** 2589300 points
Other Parts Discussed in Thread: AM3358

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/641400/linux-am3358-lcd-panel-doesn-t-work

器件型号:AM3358

工具/软件:Linux

尊敬的 TI:

   我设计了一个 AM3358定制板、支持 LVDS 输出。我启用了 DRM 驱动程序并在内核中禁用了 fbdev 驱动程序、修改了 DTS 文件以适合我的板。该板可以启动,但是10.1' LCD 不工作、始终是黑色的。我在 kenel 日志中找到了一些 erros:

  /--- 内核日志-------------------------------------------------------

[0.975237][DRM]已初始化
[0.979016]面板:找到背光
[0.983010]面板:GPIO 查找以启用消费者功能
[0.983016]面板:使用器件树进行 GPIO 查找
[0.983043] of _get_named_gpio_FLAGS:解析了节点'/panel[0]的'ENABLE-GPIO'属性- STATUS

[0.983102]面板:找到启用 GPIO
[0.988011][DRM]支持 vblank 时间戳缓存修订版2 (2013年10月21日)。
[0.994721][DRM]不支持 vblank 时间戳查询的驱动程序。
[1.000795] tilcdc 4830e000.lcdc:未报告与模式连接的连接器
[1.008004][DRM]找不到任何 CRTC 或大小- 1024x768
[1.022411]控制台:切换到彩色帧缓冲器器件128x48
[1.033532] tilcdc 4830e000.lcdc:fb0:帧缓冲器件

 使用 modetest 后,我收到以下消息:

/--------------- 最小的---

root@AM335x-EVM:/sys# modetest

正在尝试打开设备'i915'...失败
正在尝试打开设备'Radeoneon'...失败
尝试打开设备'nouve'失败
尝试打开设备'vmwgfx'...失败
正在尝试打开设备'omapdrm'...失败
正在尝试打开设备'exynos'...失败
正在尝试打开设备'tilcdc'...done
编码器:
ID CRTC 类型可能的 crtcs 可能的克隆
25 0 LVDS 0x00000001 0x00000000

连接器:
ID 编码器状态名称大小(mm)模式编码器
26 0已连接 LVDS-1 0x0 25
道具:
1 EDID:
flags:不可改变的 blob
BLOB:
值:
2 DPMS:
flags:枚举
枚举:ON = 0待机= 1挂起= 2关闭= 3
值:0
CRC:
Id fb pos 大小
24 0 (0、0)(0x0)
0 0 0 0 0 0 0 0 0 0 0标志:;类型:
道具:

平面:
ID CRTC fb CRTC x、y x、y 伽马大小可能的 crtcs
23 0 0 0 0 0 0 0 0 0 0 0x00000001
格式:RG16 BG24 XB24
道具:
5类型:
flags:不可 mutable 枚举
枚举:overlay=0 Primary =1 Cursor =2
值:1.

帧缓冲器:
ID 大小间距

 然后我检查了 Weston 日志:

/------ Weston 日志-------------------------------------------------------

root@AM335x-EVM:/sys# cat /var/log/weston.log
日期:2017-06-28 UTC
[20:20:30.703] Weston 1.11.0
http://wayland.freedesktop.org
故障报告发送至: bugs.freedesktop.org/enter_bug.cgi
内部版本:1.10.93-2-g2d825ed configuration.ac:正式版本(2016-05-31 17:10:40 -0700)的固件版本为1.11.0
[20:20:30.704]操作系统:Linux、4.9.28-geed43d1050、#3挤占 Tue、11月21日14:37:24 CST 2017、armv7l
[20:20:30.706]使用配置文件'/etc/weston.ini'
[20:20:30.710]最大输出重新喷漆窗口为7ms。
[20:20:30.713]装载模块'/usr/lib/weston/drm-backend.so
[20:20:30.743]正在初始化 DRM 后端
[20:20:30.777]使用/dev/dri/card0
[20:20:30.786]装载模块"/usr/lib/weston/gl-renderer.so
无法加载模块:/usr/lib/gbm/gbm_dri.so:无法打开共享目标文件:无此类文件或目录
无法加载模块:/usr/lib/gbm/gbm_gallium_drm.so:无法打开共享目标文件:无此类文件或目录
加载的模块:GBM_PVR.SO
找到有效的 GBM 后端:GBM_PVR.SO
[20:20:30.908]警告:不支持 EGL_EXT_platform_BASE 或不支持特定平台;返回到 eglGetDisplay。
[20:20:30.971]警告:不支持 EGL_EXT_buffer_age。 性能可能会受到影响。
[20:20:30.971]检索 EGL 客户端扩展字符串失败。
[20:20:30.990]输入器件"ti-tsc"、/dev/input/event0被 udev 标记为:触摸屏
[20:20:30.990]输入器件"ti-tsc"、/dev/input/event0是一款触控器件
[20:20:30.991] LVDS-1没有可用的模式
[20:20:30.991]未找到当前活动的连接器。
[20:20:30.991]无法为/sys/devices/platform/ocp/4830e000.lcdc/drm/card0创建输出
[20:20:31.076]致命:无法创建合成器后端

启动时内核似乎没有检测到面板,但我在/sys/device/platform.上找到了面板节点

我的问题是为什么内核无法检测面板?

下面是我的 DTS 文件:

/--------------- DTS 文件-------------------------------------------------------

/*
*版权所有(C) 2012德州仪器(TI)公司- http://www.ti.com/
*
*此程序是免费软件;您可以重新分发和/或修改
*根据 GNU 通用公共许可证第2版的条款,如所示
*由免费软件基金会发布。
*
/DTS-v1/;

#include "am33xx.dtsi"
#include "AM335x-bone-common.dtsi"
#include
#include

/{
型号="TI AM335x BeagleBone Black";
兼容="ti、am335x-bone-black"、"ti、am335x-bone-"、"ti、am33xx";

LCD_BL:背光{
兼容="PWM 背光";
PWM =<&ecap0 5000000 0>;//  
亮度等级=<0 51 53 56 62 75 101 152 200 255>;//
default-brightse-level =<8>;
};

面板{
兼容="ti、tilcdc、panel ";
// pinctrl-names ="default"、"sleep";
pinctrl-names ="default";
pinctrl-0 =<&LCD_PINS_DEFAULT>;
// pinctrl-1 =<&LCD_PINS_SLEEP>;
背光=<&LCD_BL>;
ENABLE-GPIO =<&GPIO2 GPIO_ACTIVE_HIGH_>;
状态="正常";
面板信息{
交流偏置=<255>;
AC-BIAS-INtrpt =<0>;
dma-burse-SZ =<16>;
bpp =<16>;
FDD =<0x80>;
同步边沿=<0>;
SYNC-Ctrl =<1>;
栅格顺序=<0>;
FIFO-TH =<0>;
};
显示时序{
本机模式=<&timing0>;
ting0:1280x800p60{
hactive =<1280>;
Vactive =<800>;
后沿=<159>;
前沿=<0>;
HSYNC-LEN =<0>;
后沿=<0>;
垂直前沿=<23>;
vsync-len =<0>;
时钟频率=<71100000>;
HSYNC-ACTIVE =<0>;
vsync-active =<0>;
停用=<1>;// DE 模式高电平有效
Pixelclk-active =<1>;//
};
};
};
};

ldo3_reg{(&L)
稳压器最小微伏=<1800000>;
稳压器最大值微伏=<1800000>;
稳压器常开;
};

mmc1{(&M)
VMMC-SUPPLY =<&vmmcsd_fixed>;
};

mmc2{(&M)
VMMC-SUPPLY =<&vmmcsd_fixed>;
pinctrl-names ="default";
pinctrl-0 =<&eMMC_PINs>;
总线宽度=<8>;
状态="正常";
};

CPU0_OPP_TABLE{
/*
*所有 PG 2.0器件可能都不支持1GHz、但有些器件支持较早的频率
* BeagleBone Black 具有可保证的 PG 2.0器件
*支持1GHz OPP、因此请在此板上启用 PG 2.0。
*
硝基平@1000000000{
opp-supported-HW =<0x06 0x0100>;
};
};

am33xx_pinmux{(am33xx_pinmux)}

LCD_PINS_DEFAULT:LCD_PINS_DEFAULT{

pinctrl-single、pins =<
// AM33XX_IOPAD (0x890、PIN_OUTPUT 上拉| MUX_MODE7)//* GPIO2_2 LCD_背 光使能控制*/
AM33XX_IOPAD (0x8a0、PIN_OUTPUT | MUX_MODE0)/* LCD_Data0.LCD_Data0 *
AM33XX_IOPAD (0x8a4、PIN_OUTPUT | MUX_MODE0)/* LCD_data1.LCD_data1 *
AM33XX_IOPAD (0x8a8、PIN_OUTPUT | MUX_MODE0)/* LCD_data2.LCD_data2 *
AM33XX_IOPAD (0x8ac、PIN_OUTPUT | MUX_MODE0)/* LCD_data3.LCD_data3 *
AM33XX_IOPAD (0x8b0、PIN_OUTPUT | MUX_MODE0)/* LCD_data4.LCD_data4 *
AM33XX_IOPAD (0x8b4、PIN_OUTPUT | MUX_MODE0)/* LCD_data5.LCD_data5 *
AM33XX_IOPAD (0x8b8、PIN_OUTPUT | MUX_MODE0)/* LCD_data6.LCD_data6 *
AM33XX_IOPAD (0x8bc、PIN_OUTPUT | MUX_MODE0)/* LCD_data7.LCD_data7 *
AM33XX_IOPAD (0x8c0、PIN_OUTPUT | MUX_MODE0)/* LCD_data8.LCD_data8 *
AM33XX_IOPAD (0x8c4、PIN_OUTPUT | MUX_MODE0)/* LCD_data9.LCD_data9 *
AM33XX_IOPAD (0x8c8、PIN_OUTPUT | MUX_MODE0)/* LCD_data10.LCD_data10 *
AM33XX_IOPAD (0x8cc、PIN_OUTPUT | MUX_MODE0)/* LCD_data11.LCD_data11 *
AM33XX_IOPAD (0x8d0、PIN_OUTPUT | MUX_MODE0)/* LCD_data12.LCD_data12 *
AM33XX_IOPAD (0x8d4、PIN_OUTPUT | MUX_MODE0)/* LCD_data13.LCD_data13 *
AM33XX_IOPAD (0x8d8、PIN_OUTPUT | MUX_MODE0)/* LCD_data14.LCD_data14 *
AM33XX_IOPAD (0x8dc、PIN_OUTPUT | MUX_MODE0)/* LCD_data15.LCD_data15 *
AM33XX_IOPAD (0x8e0、PIN_OUTPUT | MUX_MODE0)/* LCD_vSYNC.LCD_vsync *
AM33XX_IOPAD (0x8e4、PIN_OUTPUT | MUX_MODE0)/* LCD_HSYNC.LCD_HSYNC *
AM33XX_IOPAD (0x8e8、PIN_OUTPUT | MUX_MODE0)/* LCD_pclk.LCD_pclk *
AM33XX_IOPAD (0x8ec、PIN_OUTPUT | MUX_MODE0)/* LCD_AC_BIAS_EN.LCD_AC_BIAS_EN *
>;
};

LCD_PINS_SLEEP:LCD_PINS_SLEEP{
pinctrl-single、pins =<
// AM33XX_IOPAD (0x890、PULL_DISABLE | MUX_MODE7)/* GPIO2_2 LCD_背 光启用控制*
AM33XX_IOPAD (0x8a0、PULL_DISABLE | MUX_MODE7)/* LCD_Data0.LCD_Data0 *
AM33XX_IOPAD (0x8a4、PULL_DISABLE | MUX_MODE7)/* LCD_data1.LCD_data1 *
AM33XX_IOPAD (0x8a8、PULL_DISABLE | MUX_MODE7)/* LCD_data2.LCD_data2 *
AM33XX_IOPAD (0x8ac、PULL_DISABLE | MUX_MODE7)/* LCD_data3.LCD_data3 *
AM33XX_IOPAD (0x8b0、PULL_DISABLE | MUX_MODE7)/* LCD_data4.LCD_data4 *
AM33XX_IOPAD (0x8b4、PULL_DISABLE | MUX_MODE7)/* LCD_data5.LCD_data5 *
AM33XX_IOPAD (0x8b8、PULL_DISABLE | MUX_MODE7)/* LCD_data6.LCD_data6 *
AM33XX_IOPAD (0x8bc、PULL_DISABLE | MUX_MODE7)/* LCD_data7.LCD_data7 *
AM33XX_IOPAD (0x8c0、PULL_DISABLE | MUX_MODE7)/* LCD_data8.LCD_data8 *
AM33XX_IOPAD (0x8c4、PULL_DISABLE | MUX_MODE7)/* LCD_data9.LCD_data9 *
AM33XX_IOPAD (0x8c8、PULL_DISABLE | MUX_MODE7)/* LCD_data10.LCD_data10 *
AM33XX_IOPAD (0x8cc、PULL_DISABLE | MUX_MODE7)/* LCD_data11.LCD_data11 *
AM33XX_IOPAD (0x8d0、PULL_DISABLE | MUX_MODE7)/* LCD_data12.LCD_data12 */
AM33XX_IOPAD (0x8d4、PULL_DISABLE | MUX_MODE7)/* LCD_data13.LCD_data13 *
AM33XX_IOPAD (0x8d8、PULL_DISABLE | MUX_MODE7)/* LCD_data14.LCD_data14 *
AM33XX_IOPAD (0x8dc、pull_disable | MUX_MODE7)/* LCD_data15.LCD_data15 *
AM33XX_IOPAD (0x8e0、PIN_INPUT 下拉| MUX_MODE7)/* LCD_vSYNC.LCD_vsync *
AM33XX_IOPAD (0x8e4、PIN_INPUT 下拉| MUX_MODE7)/* LCD_HSYNC.LCD_HSYNC *
AM33XX_IOPAD (0x8e8、PIN_INPUT_PULLUP | MUX_MODE7)/* LCD_pclk.LCD_pclk *
AM33XX_IOPAD (0x8ec、PIN_INPUT 下拉| MUX_MODE7)/* LCD_AC_BIAS_EN.LCD_AC_BIAS_EN *
>;
};

ecap0_pins:backlight_pins{
pinctrl-single、pins =<
AM33XX_IOPAD (0x964、MUX_MODE0)//(C18) eCAP0_IN_PWM0_OUT.eCAP0_IN_PWM0_OUT *
>;
};

backlight_Ctrl_pin:backlight_Ctrl_pins{
pinctrl-single、pins =<
AM33XX_IOPAD (0x890、PIN_OUTPLUG_PULLUP | MUX_MODE7)/* GPIO2_2 LCD_背 光使能控制*
>;
};

McASP0_Pins:McASP0_Pins{
pinctrl-single、pins =<
AM33XX_IOPAD (0x9ac、PIN_INPUT_PULLUP | MUX_MODE0)/* McASP0_ahcklx.McASP0_ahclkx *
AM33XX_IOPAD (0x99c、PIN_OUTPUT 下拉| MUX_Mode2)/* McASP0_ahclkr.McASP0_axr2*/
AM33XX_IOPAD (0x994、PIN_OUTPUT 上拉| MUX_MODE0)/* McASP0_FSX.McASP0_FSX *
AM33XX_IOPAD (0x990、PIN_OUTPUT 下拉| MUX_MODE0)/* McASP0_aclkx.McASP0_aclkx *
AM33XX_IOPAD (0x86c、PIN_OUTPUT 下拉| MUX_MODE7)/* GPMC_A11.GPIO1_27 *
>;
};
};

LCDC{
状态="正常";

/*如果您希望获得24位 RGB 和16 BGR 模式,而不是
*当前16位 RGB 和24 BGR 模式、设置相应的参数
*将下面的更改为"交叉"并取消注释 VIDEA-PORTS -PRO属性
*在 tda19988节点中。
*
蓝色和红色配线="直向";

};

RTC{(&R)
系统功率控制器;
};

&McASP0{
#sound-di-cells =<0>;
pinctrl-names ="default";
pinctrl-0 =<&McASP0_PINs>;
状态="正常";
OP-MODE =<0>;/* MCASP_IIS_MODE */
TDM-SLOTS =<2>;
serial-dir =</* 0:非活动、1:TX、2:Rx *
0 0 1 0
>;
tx-num-evt =<32>;
Rx-num-evt =<32>;
};

&SGX{
状态="正常";
};

epwms0{(&E)
状态="正常";

ecap0:ECAP@48300100{
状态="正常";
pinctrl-names ="default";
pinctrl-0 =<&ecap0_PINs>;
};
};

tscadc{(&T)
状态="正常";
TSC{
TI、电线=<4>;
ti、x 板电阻=<235>;
ti、坐标读数=<5>;
TI、wire-config =<0x00 0x11 0x22 0x33>;
TI、充电延迟=<0x400>;
};
ADC{
TI、ADC 通道=<4 5 6 7>;
};

};

/{
CLK_McASP0_FIXED:CLK_McASP0_FIXED{
#clock-cells =<0>;
兼容="固定时钟";
时钟频率=<24576000>;
};

CLK_McASP0:CLK_McASP0{
#clock-cells =<0>;
兼容="GPIO-GATE -时钟";
时钟=<&clk_McASP0_FIXED>;
ENABLE-GPIO =<&GPIO1 27 0>;//在 GPIO1_27上启用 BeagleBone Black Clk *
};

};

SDK 版本: TI-processor-SDK-Linux-AM335x-EVM-04.00.04

另一个问题:内核是否使用 EDID 的显示时序值、而不是 论坛上有人提到的器件树?  

如果有任何帮助、我们将不胜感激!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Tyrael、

    "Cannot find any CRTC or Sizes - ting 1024x768"(无法找到任何 CRTC 或尺寸-变为1024x768)信息是由于尝试不能获得任何视频显示分辨率而导致的。
    源代码中的注释假定显示连接出现问题的可能性。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Cvetolin:
    感谢您的回复! 它让我感到困惑,内核如何检测显示连接。 按 EDID 端口?如果是,如果 LCD 面板上没有 EDID 端口或 EDID 端口未连接,将会发生什么情况?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的 LCD 面板终于工作了! 我认为 EDID 是关键问题。如果内核无法通过 EDID 端口或内置 bin 文件获取面板信息、则内核不会驱动 LCD。不幸的是、我的电路板没有这些信息。在我根据面板的数据表创建自己的 EDID 文件后、LCD 就可以正常工作了!下面介绍了我要做的事情 DID:
    1如 Documentation/EDID/HOWTO.txt 所述生成1280x800 EDID 文件、并将其复制到/lib/firmware 下
    2在内核配置中设置 CONFIG_DRM_LOAD_EDID_firmware=y
    3将 DRM_kms_helper.EDID_firmware=EDID/1280x800.bin 添加到内核命令行。