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.

[参考译文] AM3358:TILCDC、dtsi 中的时钟设置不会影响时钟速度

Guru**** 2481465 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1449396/am3358-tilcdc-clock-setting-from-dtsi-doesn-t-effect-clock-speed

器件型号:AM3358

工具与软件:

您好!

我使用的是"Linux AM335x-EVM 5.10.168-rt83+"内核。

我的设备树如下所示:

我设置 defconfig:

当我调用模块时、我可以在我的定制 LCD 上查看图像、比如图像偏移。

我尝试从 devicetree 中更改时钟速度、HSYNC、Vsync 值、但不会产生任何影响。 (我通过示波器测量时钟速度。 即使我从 devicetree 输入不同的时钟速度、它也不会改变。

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

    您好!

    kmsprint 显示什么内容?

    此致、
    Krunal

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

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

    您好!

    根据上述信息、它是否反映了您编程的内容?

    此致、
    Krunal

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

    我的配置显示:3MHz、时钟频率显示为12MHz (正如我在标题中提到的那样)

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

    您好!

    您是否可以使用简单的面板来定义时序? 不知道为什么 kmstest 在它是 DPI 面板时显示 LVDS。  

    此致、
    Krunal

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

    您能给我发送一个问题、defconfig 需要什么条件、如何通过 devicetree 连接它吗? (我是否需要包含面板参数的编辑内核文件? (我以前尝试过、但遇到了奇怪的错误、因此放弃了)(顺便说一下、我已经阅读了有关 LCDC 的文档)

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

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

    您好!

    我们通常以简单的面板来定义计时、下面是一个示例:

    1. dts: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm/boot/dts/am335x-evm.dts?h=ti-linux-6.1.y#n121
    2.简单的面板驱动程序: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/gpu/drm/panel/panel-simple.c?h=ti-linux-6.1.y#n3686

    在测试中、您可以在 DTS 中使用相同的兼容字段、只需更改面板上简单的计时、以便与您的面板匹配。  

    此致、
    Krunal

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

    不能正常工作。

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

    好的、什么方法不起作用? 请提供更多详细信息、以便我为您提供进一步的指导。

    此致、
    Krunal

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

    root@AM335x-EVM:~# kmsprint
    抛出'STD::runtime_error'实例后调用终止
     what (): 找不到 DRM 卡
    已中止

    root@AM335x-EVM:~# fbset
    fbset:不能打开'/dev/fb0 ':没有这样的文件或目录
    root@AM335x-EVM:~# dmesg | grep panel
    [1.658959]   面板简单面板:使用虚拟调节器时未找到电源
    [1.776155]   面板-简单面板:未找到电源,使用虚拟调节器

    root@AM335x-EVM:~# modprobe tilcdc
    [54.142364][DRM]  已初始化 tilcdc 1.0.0 20121205 (用于次要0上的4830e000.lcdc)
    [54.185000]  控制台:切换到彩色帧缓冲设备40x30.
    [54.197953]  tilcdc 4830e000.lcdc:[drm] fb0:tilcdcdcdcdcdrmfb 帧缓冲器件


    root@AM335x-EVM:~# fbset

    模式"320x240-0"
           # D: 0.000 MHz , H: 0.000kHz, V: 0.000Hz
           几何320 240 320 240 16.
           时序0 0 0 0 0 0 0 0 0
           Accel true
           RGBA 5/11 6/5、5/0、0/0
    结束模式

    root@AM335x-EVM:~# kmsprint
    连接器0 (34) DPI-1 (已连接)
     编码器0 (33)无
       CRTC 0 (32) 320x240@32.36 3.000 320/2/41/2/- 240/2/2/10/2/- 32 (32.36) 0xA 0x48
         平面0 (31) fb-id:35 (crtcs:0) 0、0 320x240 -> 0 320x240 (RG16 RG24 XR24)
           FB 35 320x240

    时钟仍然为12MHz。 我用 osciloscpe 测量。 我对文件所做的更改不会产生任何影响。 我不能旋转屏幕方向。

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

    我担心 kmsprint 没有找到任何 DRM 节点、您的 dts 看起来是什么样子的? 另外、请在 txt 文件中共享引导日志。

    此致、
    Krunal

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

    "我担心 kmsprint 找不到任何 DRM 节点"

    如果选中、则已共享。 kmsprint 输出:

    器件树如下所示:

    e2e.ti.com/.../87441.log.txt

    e2e.ti.com/.../87441.log.txt

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

    好的,我想在一开始 kmsprint 没有显示任何东西,你必须手动设置模式。 难道情况不是这样吗?

    此外、为了确认、您在测量 PCLK 时是否在显示屏上运行某些东西? 例如、您可以尝试通过 Fbdev 或 Qt 运行一些简单的显示测试吗?

    此致、
    Krunal

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

    我已经运行了一个 QT 程序、屏幕上有一幅图像、但由于我设置的参数不会影响时钟速度或其它值、因此图像在滑动。


    我尝试通过内核代码(panel-simple)更改时钟速度

    静态常量结构 drm_display_mode gok_LCD_mode =
      .clock = 3000
      .hdisplay = 320

    我已尝试从器件树中更改时钟速度:(tilcdc try)

    面板{

        pinctrl-0 =<&pulser_parallel &pulser_parallel_rst>
        Compatible ="ti、tilcdc、panel"
        pinctrl-names ="默认值"
        状态="正常"

        RESET-GPIO = <&GPIO1 17 1>

        显示计时{
          320x240
            时钟频率= <3000000>

    我在进行上述尝试时已共享所有设置。 是否有任何合乎逻辑的建议、或者我们反复尝试同样的做法?

    只是一种观点为什么 Clk 总是设置它自己12MHz。 12MHz 的特别之处。
    为什么不能更改屏幕旋转?
    为什么我的 fbset 显示: # D: 0.000 MHz , H: 0.000 kHz, V: 0.000 Hz.
    帧缓冲区是否无法从 LCDC 获取数据?

    我已经阅读了文档。 我已经尝试了很多东西。 我在这里写是因为它们不起作用。
    您还可以发送 defconfig 参数和 devicetre 选项。 我准备好接受任何合乎逻辑的建议。

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

    您好!

    总而言之、无论您在何处编程时钟设置(dts 或简单面板)、输出始终为12MHz 而不是30 MHz。 此外、如果您尝试运行任何显示测试、图像会显示在 显示屏上、但 由于 PCLK 不准确、存在某些伪影。 您是否同意摘要?

    作为一个实验、您是否可以使用默认 SDK 在我们的 EVM 上进行测试? 我们的板载显示器似乎正常工作、因此我认为没有任何软件故障、但如果您可以进行交叉检查、会有所帮助。  

    此致、
    Krunal

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

    "输出始终为12MHz 而不是  5 -30 MHz。" 是的、我同意。

    "您是否可以在我们的 EVM 上进行测试"。 我们没有您的 EVM。 我们只使用 AM335x SOC。 我们有定制 PCB。
    我不认为有人在您的 EVM 和 SDK 上进行研发。 它像是:"它在我的机器上工作。"、但我们不能向客户提供您的机器(您的 EVM)。

    至少有没有改变帧缓冲区的旋转?

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

    您好!

    我们 AM335x 上的显示控制器不支持 帧缓冲器旋转、因此您需要使用 GPU 或 CPU 进行旋转。

    此致、
    Krunal