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/TMS320DM355:DM355功耗的奇怪行为。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/699709/linux-tms320dm355-strange-behavior-of-power-consumption-of-dm355

器件型号:TMS320DM355
Thread 中讨论的其他器件:DM385

工具/软件:Linux

尊敬的所有人:

是否有人知道使用 XDS560 USB 仿真器跟踪 GPIO 引脚的方法?

原因如下。

我们面临着系统功耗的一种奇怪行为。

我们的电路板基于 Linux、配备了多个外设、如 GPS、SD 插槽。

功能方面、系统按预期工作、但功耗行为比较奇怪。

当我们测量 VDD 的电流(3.3V)时、当我们将手指放在器件(DM355)上时、电流 会下降大约20mA!

我们认为、有些引脚的阻抗较高且不稳定。

因此、当手指靠近器件时、可能会对器件产生一些电感影响。

我们从软件视图中没有发现错误。

由于器件采用 BGA 封装、因此我们无法访问多个没有外部连接的引脚。

因此、我们想知道我们是使用仿真器跟踪引脚的状态、还是使用仿真器跟踪引脚状态。

如果有任何建议、我将不胜感激。

此致、

大田泰苏

 

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

    有些 GPIO 引脚(即 H15 GIO30和 B18 GIO006])没有内部拉电阻器、默认情况下为输入(复位后)。 如果您未正确处理此类未使用的引脚、则这些引脚上的浮点可能会产生功耗。 我建议您将这些引脚设置为输出。

    您还可以使用边界扫描和/或转储控制模块引脚多路复用寄存器来尝试查找有关 DM35x 器件引脚状态的更多信息。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另请参阅类似器件 DM385的未使用引脚的建议值:

    www.ti.com/.../dm385.pdf

    4.4处理未使用的引脚

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Pavel-San:

    感谢您的建议。

    我们一方的调查显示了类似的结果。

    我希望我们可以通过正确设置未使用的引脚来解决这个问题!

    此致、

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

    很抱歉打扰您、但我们没有解决问题。

    我们一直在尝试修改 VIDCTL 等寄存器、但似乎它们受到了用户级访问保护。

    是否有模块或工具可以从用户应用程序中修改此类寄存器?

    我们正在考虑将弹出的0-7端口修改为"输出"、并通过设置 YCDIR = 0、YCOL = 1和 YVYL = 0将其设置为"L"。

    非常感谢您的建议、因为我们不熟悉 MontaVista Linux、我们的软件人员将无法加入我们一周左右。

    此致、

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

    在某些器件(如 DM8148)上、我们无法从用户空间写入引脚多路复用寄存器(控制模块)、因为 ARM 内核应处于监控器/特权模式。 ARM 仅在 u-boot/内核阶段处于主管/特权模式、而不在用户空间中。 如需更多信息、请参阅以下 e2e 文章:

    e2e.ti.com/.../2274078


    我不确定 DM355器件是否存在这种情况、我在 DM355文档中找不到这种限制:

    www.ti.com/.../sprufb3a.pdf
    www.ti.com/.../spruf72c.pdf

    我用于从用户空间修改寄存器的工具是 devmem2。

    另请参阅以下 Wiki 页面:

    processors.wiki.ti.com/.../O_Power_Consumption_on_DM355_and_DM335
    processors.wiki.ti.com/.../O_Power_Consumption

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Pavel-San:


    由于您的建议、我们几乎可以确定问题的原因是我们想要修改的寄存器的保护级别。

    是否可以确认寄存器"VIDCTL"是否属于无法从用户模式模块访问的寄存器?
    如果我们确认无法从用户级模块访问"VIDCTL"、我们将必须修改将在内核中运行的引导模块或器件驱动程序。

    我们处于非常艰难的境地,我们非常感谢你的建议。

    此致、

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

    VIDCTL 不是控制模块寄存器的一部分、VIDCTL 属于 VPBE 寄存器。 因此、我认为 VIDCTL 应该可以使用 devmem2工具从用户级别进行访问(读取/写入)。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Pavel-San:

    感谢您的好消息!

    我们正在尝试根据您在以下站点中告诉我们的情况、将弹出0-7端口设置为输出模式。

    VPBE:OUT[7:0]将引脚设置为代码中的输出。
    1.确保已启用到 VPSS 模块的 PSC 时钟
    2.确保系统控制模块中的 VPSS 时钟多路复用器控制寄存器(VPSS_CLK_CRTL)配置为选择合适的 VPBE 时钟源并启用它。
    3.在 VPBE 用户指南中的 VPSS 时钟控制寄存器(CLKCRTL)中将 VPBE_CLK 位设置为1。
    4.将视频接口 I/O 控制寄存器(VIDCTL)的 YCDIR 域设置为零(输出)

    通过读取相应的寄存器、我们已确认步骤2已完成。

    但是、我们无法将 CLKCTRL.VPBE_CLK 的值更改为"1"。

    在尝试将 CLKCTRL.VPBE_CLK 更改为"1"之前、我们是否应该执行任何步骤?

    此致、

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

    Tetsuo、

    [引用 USER="TETSUOMA">但是、我们无法将 CLKCTRL.VPBE_CLK 的值更改为"1"。

    在尝试将 CLKCTRL.VPBE_CLK 更改为"1"之前、我们是否应该执行任何步骤?[/QUERP]

    我已检查 VPBE 指南、但在设置 CLKCTRL[0] VPBE_CLK = 1之前、我找不到要遵循的任何程序

    确保使用正确的 CLKCTRL 地址0x01C70004。

    此致、
    帕维尔

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

    感谢您的建议。

    我已经检查了 SPRUF72C 数据表。

    该文档指出"CLKCTRL"和"VPSS_CLK_CTRL"的地址都是0x01C70004 (相同!)。

    我们知道"CLKCTRL"和"VPSS_CLK_CTRL"是两个不同的寄存器。

    为什么两个寄存器的地址相同?

    还是"CLKCTRL"和"VPSS_CLK_CTRL"是相同的寄存器?

    此致、

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

    这是两个不同的寄存器。 SPRUF72C 中的 VPSS_CLK_CTRL 地址错误、不是0x01C70004。

    有关详细信息、请参阅以下指针:

    www.ti.com/.../sprufb3a.pdf

    e2e.ti.com/.../334408
    e2e.ti.com/.../168239

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Pavel-San:

    感谢您的澄清。

    我们已确认 VPSS_CLK_CTRL 的地址为0x01c7:0044。

    此致、

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

    我们仍在努力将执行0 - 7设置为输出模式。
    在引导程序分析中、我们发现 VPBE 在引导过程中已关闭。

    由于我们无法修改引导顺序、我认为我们需要在系统启动后打开 VPBE。

    是否有方法使用用户程序或控制台的某些命令打开 VPBE?

    此致、

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

    您可以尝试通过使用 devmem2工具写入其寄存器来打开 VPBE 模块。 您可以从内核空间转储 VPBE 寄存器值、并在用户空间中设置相同的值。 您可能还需要配置 VPBE 引脚多路复用器和时钟来启用它。 请使用以下用户指南:

    www.ti.com/.../sprufb3a.pdf
    www.ti.com/.../spruf72c.pdf

    有关 TI 软件的任何详细软件支持、错误修复或增强功能、请联系下面推荐的任何精选合作伙伴:

    e2e.ti.com/.../622106

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的所有人:

    由于您的建议、我们终于解决了这个问题。

    我们认为,这种经验将有助于我们今后的发展。

    此致、

    大田泰苏