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.

[参考译文] AM625:如何在定制 AM625 SOM 和 RGB 显示上使用 Android 中的 PWM 来控制显示亮度。

Guru**** 2482225 points
Other Parts Discussed in Thread: AM625

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1435102/am625-how-to-control-brightness-of-display-using-pwm-in-android-on-custom-am625-som-using-rgb-display

器件型号:AM625

工具与软件:

您好、TI 专家!
目前、我已在使用 RGB 显示和电容式触摸屏的定制 AM625 SOM 上成功启动 Android。 但现在我需要控制显示亮度、这由 PWM 进行控制。
您能帮助我在 E18处理器引脚上获取 PWM、并将多路复用模式设置为6吗?
我可以在相同的硬件和相同的处理器引脚上控制 Linux 的亮度,但 Android 不能。 请引导我。

此外、我无法使用自定义 bootanimation.zip、其中当我尝试复制/system/media 位置的自定义 bootanimation.zip 文件时。 但在 Android 的"系统"目录下没有这样一个名为"media"的目录,当我试图创建目录时,它会说"只读文件系统:权限被拒绝"。 现在如何更改 bootanimation.zip?

此致、
Aditya T

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

    您好!

    能否详细介绍一下如何在 Linux 中控制亮度?
    除了更改器件树中的引脚多路复用外、还需要什么其他东西吗?
    您是否使用 sysfs 来控制亮度?

    对于自定义 bootanimation.zip、由于它是单独的问题、请打开单独的 e2e 线程。

    谢谢
    Mattijs

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

    您好!

    您能否详细说明如何在 Linux 中控制亮度?
    除了更改器件树中的引脚多路复用外、还需要什么其他东西吗?
    您是否使用 sysfs 来控制亮度?

    在 Linux 中、我使用这里提供的命令来执行该操作: link
    是的、我会在 Linux 中使用 sysfs 来控制亮度。

    对于自定义 bootanimation.zip、由于这是一个单独的问题、请打开一个单独的 e2e 主题帖。

    好的、我将为此创建一个单独的线程。

    此致、
    Aditya T

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

    您好!

    感谢您发送编修。

    我想现在明白你是在哪里卡在 Android。

    您能否确认使用与 Linux 相同的命令在 Android 中不起作用?

    以下内容的输出是什么:

    LS /sys/class/pwm
    

    依赖哪些控制?

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

    您好!

    您能否确认使用与 Linux 相同的命令在 Android 中不起作用?

    是的、我能够使用 Linux 中的多路复用器模式6引脚 E18和相同的命令来控制显示屏亮度。

    [报价 userid="550339" url="~/support/processors-group/processors/f/processors-forum/1435102/am625-how-to-control-brightness-of-display-using-pwm-in-android-on-custom-am625-som-using-rgb-display/5503170 #5503170"]

    以下内容的输出是什么:

    LS /sys/class/pwm
    

    依赖哪些控制?

    [报价]

    am62x:/ # ls /sys/class/pwm/                                                                                                                                                            
    pwmchip0  pwmchip1
    am62x:/ # cat /sys/kernel/debug/pwm                                                                                                                                                     
    platform/23010000.pwm, 2 PWM devices
     pwm-0   ((null)              ): period: 0 ns duty: 0 ns polarity: normal
     pwm-1   ((null)              ): period: 0 ns duty: 0 ns polarity: normal
    
    platform/dmtimer-main-pwm-7, 1 PWM device
     pwm-0   (led-0               ): requested period: 7812500 ns duty: 0 ns polarity: normal
    am62x:/ # cd /sys/class/pwm/pwmchip1/                                                                                                                                                   
    am62x:/sys/class/pwm/pwmchip1 # echo 1 > export                                                                                                                                         
    am62x:/sys/class/pwm/pwmchip1 # cd pwm1/                                                                                                                                                
    am62x:/sys/class/pwm/pwmchip1/pwm1 # echo 40000 > period                                                                                                                                
    am62x:/sys/class/pwm/pwmchip1/pwm1 # echo 10000 > duty_cycle                                                                                                                            
    am62x:/sys/class/pwm/pwmchip1/pwm1 # echo 1 > enable                                                                                                                                    
    am62x:/sys/class/pwm/pwmchip1/pwm1 # 

    我已经给出了这些命令、但它并没有改变显示屏的亮度。

    此致、
    Aditya T

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

    尊敬的 Aditya:

    好的、如果我正确地从 debugfs 中理解、可以这样做:

    • /sys/class/pwm/pwmchip0: 2301000.PWM
    • /sys/class/pwm/pwmchip1: dmtimer-main-pwm-7


    我们要从 /sys/class/pwm/pwmchip1.中控制 PWM-0 (LED-0)

    在这种情况下、 我们不应该为 pwmchip 导出 PWM-0而不是 PWM-1?  
    我认为命令应该是:

    am62x:/ # cd /sys/class/pwm/pwmchip1/                                                                                                                                                   
    am62x:/sys/class/pwm/pwmchip1 # echo 0 > export                                                                                                                                         
    am62x:/sys/class/pwm/pwmchip1 # cd pwm0/                                                                                                                                                
    am62x:/sys/class/pwm/pwmchip1/pwm1 # echo 40000 > period                                                                                                                                
    am62x:/sys/class/pwm/pwmchip1/pwm1 # echo 10000 > duty_cycle                                                                                                                            
    am62x:/sys/class/pwm/pwmchip1/pwm1 # echo 1 > enable                                                                                                                                    
    am62x:/sys/class/pwm/pwmchip1/pwm1 # 


     https://docs.kernel.org/driver-api/pwm.html#using-pwms-with-the-sysfs-interface 提供了一个案例 

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

    您好!

    [报价 userid="550339" url="~/support/processors-group/processors/f/processors-forum/1435102/am625-how-to-control-brightness-of-display-using-pwm-in-android-on-custom-am625-som-using-rgb-display/5510889 #5510889"]

    好的、如果我正确地从 debugfs 中理解、可以这样做:

    • /sys/class/pwm/pwmchip0: 2301000.PWM
    • /sys/class/pwm/pwmchip1: dmtimer-main-pwm-7
    [报价]

    不、 您错了。 pwmchip0为 dmtimer-main-pwm-7、pwmchip1为2301000.PWM。我在执行此操作后必须了解这一点。

    am62x:/sys/class/pwm # ls -l
    total 0
    lrwxrwxrwx 1 root root 0 2024-11-12 05:23 pwmchip0 -> ../../devices/platform/dmtimer-main-pwm-7/pwm/pwmchip0
    lrwxrwxrwx 1 root root 0 2024-11-12 05:23 pwmchip1 -> ../../mailto:devices/platform/bus@f0000/23010000.pwm/pwm/pwmchip1
    am62x:/sys/class/pwm # 
    

    此外、在 pwmchip1上、我已尝试 pwm0和 pwm1。

    此外、我想告诉您的是、在 Linux 中、当我在 ehrpwm 引脚上生成 PWM 时、它会在同一芯片上生成2个 PWM 器件。 与 pwmchip1类似、有2个器件 pwm0和 pwm1。 我想您在这里感到困惑。
    带 dmtimer 的 PWM 可在另一个芯片上使用、我们无需观察到它、也就是说、pwmchip0在对显示进行亮度控制时不适用。

    此致、
    Aditya T

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

    您好!

    谢谢您的澄清。

    由于我们无法重现您的设置、因为您具有定制板并且您具有在 Linux 上工作的设置、您能否提供尽可能多的有关工作(Linux)和故障(Android)情况的信息。

    对于 Linux 和 Android、至少在/sys/class/pwm 中输出 ls -l

    可能某些内核模块存在误解。 在 Android 上、大多数驱动程序是模块(在 Linux 上并非如此)

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

    您好!

    由于您使用的是自定义电路板、并且您在 Linux 上设置了工作模式、因此我们无法复制您的设置

    不可以、您可以尝试在同一个处理器引脚上生成 PWM、我将尝试在该引脚上生成。 这是因为处理器引脚 E18实际上是连接到"40引脚 J3接头"的引脚33。

    您能提供尽可能多的关于工作(Linux)和失败(Android)情况的信息吗?

    对于 Linux 和 Android、至少在/sys/class/pwm 中输出 ls -l

    好的、我已经连接了以下两项的输出:
    1. Linux:

    root@am62xx-evm:~# ls -l /sys/class/pwm
    total 0
    lrwxrwxrwx 1 root root 0 2024-11-12 05:23 pwmchip0 -> ../../devices/platform/bus@f0000/23010000.pwm/pwm/pwmchip1
    root@am62xx-evm:~# 


    2. Android:
    am62x:/sys/class/pwm # ls -l
    total 0
    lrwxrwxrwx 1 root root 0 2024-11-12 05:23 pwmchip0 -> ../../devices/platform/dmtimer-main-pwm-7/pwm/pwmchip0
    lrwxrwxrwx 1 root root 0 2024-11-12 05:23 pwmchip1 -> ../../devices/platform/bus@f0000/23010000.pwm/pwm/pwmchip1
    am62x:/sys/class/pwm # 


    可能有些内核模块出错。 在 Android 上、大多数驱动程序都是模块(在 Linux 上并非如此)[/QUOT]

    根据我的理解、它们在 PWM 所需的驱动程序方面没有区别或任何更改、因为我已经检查了 Android 和 Linux 内核中包含的所有驱动程序。 两者相同。

    此致、
    Aditya T

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

    您好、Mattijs、
    我仍然有这个问题、请在您有所了解后立即更新我。

    此致、
    Aditya T

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

    您好!  

    很抱歉、我们正在努力处理此问题、并将您的信息及时发布。

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

    您好!

    请在获得任何解决方案后立即更新我的信息。

    此致、
    Aditya T

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

    使用。 我订购了一个逻辑分析仪、以便我可以对其进行调试。 本周我会收到这封电子邮件、所以本周/下周早些时候、我会向您通报最新情况。

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

    当然。
    谢谢、此致、
    Aditya T

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

    尊敬的 Aditya:

    首先、我尝试使用即将发布的10.1 SDK 发行版(尚未发布)和6.6内核重现您的问题。

    以下是我所做工作的一些详细信息:

    1.修补内核以便发送启用 PWM 的设备树叠加层:

    commit 62b61d99b0ca5c3631a07d88210f520f5a3326fd (HEAD -> mkorpershoek/enable-display-pwm)
    Author: Mattijs Korpershoek <mkorpershoek@baylibre.com>
    Date:   Mon Nov 25 18:10:55 2024 +0100
    
        TI: ANDROID: Add k3-am625-sk-rpi-hdr-ehrpwm.dtbo to build
    
        Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
    
    diff --git a/BUILD.bazel b/BUILD.bazel
    index b1d8d54788cc..dcce3f316d54 100644
    --- a/BUILD.bazel
    +++ b/BUILD.bazel
    @@ -908,6 +908,7 @@ kernel_build(
             "k3-am62x-sk-hdmi-audio.dtbo",
             "k3-am62x-sk-lpm-wkup-sources.dtbo",
             "k3-am625-sk-wl1837.dtbo",
    +        "k3-am625-sk-rpi-hdr-ehrpwm.dtbo",
             "modules.builtin",
             "modules.builtin.modinfo",
             "vmlinux",
    @@ -940,7 +941,7 @@ kernel_build(
             "ti/k3-am62p5-sk-mcan.dtbo",
             "ti/k3-am62p5-sk-microtips-mf101hie-panel.dtbo",
             "ti/k3-am625-sk-wl1837.dtbo",
    -
    +        "ti/k3-am625-sk-rpi-hdr-ehrpwm.dtbo",
         ],
         module_outs = get_gki_modules_list("arm64") + get_kunit_modules_list("arm64") + _TI_MODULE_OUTS + _TI_WATCHDOG_MODULE_OUTS,
         strip_modules = True,
    @@ -961,6 +962,7 @@ kernel_images(
             ":ti/k3-am62x-sk-csi2-tevi-ov5640.dtbo",
             ":ti/k3-am625-sk-microtips-mf101hie-panel.dtbo",
             ":ti/k3-am62x-sk-lpm-wkup-sources.dtbo",
    +        ":ti/k3-am625-sk-rpi-hdr-ehrpwm.dtbo",
             ":ti/k3-am62-lp-sk-microtips-mf101hie-panel.dtbo",
             ":ti/k3-am625-beagleplay-csi2-ov5640.dtbo",
             ":ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtbo",

    2.重新编译内核:

    tools/bazel run --config=release //common:ti_dist -- --dist_dir=/mnt/work/ti//ti-android-15/device/ti/am62x-kernel/kernel/6.6

    3.重建 Android 映像:
    source build/envsetup.sh
    lunch am62x-ap3a-userdebug
    m

    4.使用 flashall.sh 脚本重新刷新所有图像。

    5.在 U-Boot 中的提示符处停止并配置我们的新覆盖层:
    => setenv adtbo_idx 5
    => saveenv

    6.启动 Android:

    => run bootcmd

    7.在 Android 中、通过 sysfs 启用 PWM:

    console:/sys/class/pwm # ls -l
    total 0
    lrwxrwxrwx 1 root root 0 2024-11-25 14:59 pwmchip0 -> ../../devices/platform/bus@f0000/23000000.pwm/pwm/pwmchip0
    lrwxrwxrwx 1 root root 0 2024-11-25 14:59 pwmchip2 -> ../../devices/platform/bus@f0000/23010000.pwm/pwm/pwmchip2
    
    console:/sys/class/pwm # cd pwmchip2/
    console:/sys/class/pwm/pwmchip2 # echo 1 > export
    console:/sys/class/pwm/pwmchip2 # cd pwm1/
    console:/sys/class/pwm/pwmchip2/pwm1 # echo 40000 > period    
    console:/sys/class/pwm/pwmchip2/pwm1 # echo 10000 > duty_cycle 
    console:/sys/class/pwm/pwmchip2/pwm1 # echo 1 > enable

    在逻辑分析仪上、我看到:


    这使用40接头扩展上的引脚33 (EXP_EHRPWM1_B)。
    因此、它似乎可以与新内核/即将发布的版本配合使用。

    我将使用6.1内核尝试使用 SDK 10.0版本来执行相同操作。 您能否确认这是您所使用的基准?

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

    是的、我将执行您上面提到的所有步骤。
    此外、我使用的是 Android SDK 8.6

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

    我刚刚尝试在 Android SDK 10.0上重现标准内核(6.1)和引导加载程序(2023.04)、但我也没有重现此问题:

    Aditya、您能否确认 Linux SDK 8.6是否适用于 Android SDK 8.6、而不适用于 Android SDK 8.6?

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

    是的、我已使用 SDK8.6确认适用于 Linux 操作系统、但它在相同版本的 Android SDK 上不起作用

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

    尊敬的 Aditya:

    遗憾的是、我们不会主动支持较旧的 SDK、如 Android SDK 8.6。

    请考虑升级

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

    您好、 Aditya:

    这是一个新问题。 请为此问题打开另一个 TT。

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

    我刚刚创建了新主题、请帮助我尽快解决此问题
    文章链接:链接

    此致、
    Aditya T

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

    您好!
    从 Android SDK v8.6切换到 SDK v10.00后、亮度控制问题得到了解决。

    此致、
    Aditya T