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.

[参考译文] AM5718:Pinmux 工具不能#39;t 生成.dts 文件

Guru**** 2581345 points
Other Parts Discussed in Thread: AM5718, TMDSEVM572X

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/589276/am5718-pinmux-tool-doesn-t-generate-dts-file

器件型号:AM5718
主题中讨论的其他器件: TMDSEVM572X

您好!

当您使用基于云的 AM5718引脚多路复用工具生成引脚多路复用设计并选择器件:AM5718_SR2.0_beta 时、该工具当前不会为生成的文件生成 devicetree 文件输出。 对于任何在 pinmux 工具上处于 Beta 状态的器件、情况似乎也是如此、对吧?

当您使用此实用程序生成 pinmux 配置时、是否有任何其他方法可以自动生成器件树输出、或者是否有其他实用程序或方法可以从 pinmux 配置自动生成器件树文件?

谢谢!

Jeff Andich

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

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

    尊敬的 Jeff:

    当前云版本仅具有 AM572x 器件的器件树文件输出。  AM571x 器件将在即将推出的工具版本中提供器件树输出、该工具版本将很快推出。 也就是说、以这种方式命名的器件树文件会引起一些混淆、因为它只会生成 MMC/DCAN "运行时焊盘配置"。  我们可能会决定更改文件输出命名规则以避免混淆、但底线是输出格式将仅生成 MMC/DCAN 运行时焊盘配置。

    您可能需要生成一个完整的"器件树" uboot 格式文件、以便在源代码中使用。 为此、请阅读此处提供的 PinMux 工具应用手册:  该手册介绍了如何配置工具、根据需要生成文件以及如何通过附加脚本 e2e.ti.com/.../am57xx_5F00_uboot_5F00_pin_5F00_config_2D00_master.zip 对其进行后处理 、以获取最终所需的焊盘配置代码。

    希望这对您有所帮助、

    谢谢、

    Alex

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

    我们将查看它、并让您知道我是否有问题、中间结果或对论坛上的其他人可能有用的信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因此、如果我了解正确定制 IO 焊盘与外设连接的过程(通过查看 SPRAC44文档):

    *大多数 I/O 焊盘(MMC 除外)只能在启动时与外设和其他信号相关联、此时 SPL/MLO 从57xx 芯片上的内部 SRAM 运行。

    * perl 脚本 am57xx_generate_pin_config_data.pl 生成 IO 端口配置和 IO 延迟表,这些表合并到用于构建 MLO 的 mux_data.h 头文件中。

    *当定制构建的 MLO 运行时,它首先在芯片上设置所有静态焊盘配置设置,将 BGA 引脚与外设相关联。

    *然后,MLO 通过将 U-boot 加载到外部 SRAM 并跳转到 U-boot 来启动“运行时代码”(其余 U-boot、内核引导、FS 装载等)。

    *!!然后、当内核启动并处理 DTB 时、系统将无法再静态配置 I/O 焊盘或 Pinmux (请参阅下面的问题)。

    *内核可配置的唯一 pinmux/IO 填充设置是 MMC 设置。

    问题:

    1)是否有适用于 TI 处理器 SDK 的文档或 wiki (可能是入门指南的一部分) 适用于 am57xx 芯片、它描述了为 定制硬件板修改/定制 TI Linux SDK 引脚多路复用和 IO 焊盘配置设置的整个过程、该定制板"设计" 57xx 器件?  还是从 pinmux 工具输出生成头文件、然后生成 perl 脚本、再生成 U-boot、那么简单?

    2) 2) mux_data.h 头文件是否仅适用于 U-boot 的 MLO 部分?

    3) 3)上述声明是否仅在初始引导时在 MLO 中发生静态 pinmux IO 焊盘设置(外设和 PAD/BGA 引脚之间的关联)是正确的、或者在内核加载 MLO 和发生静态 IO 焊盘配置时是否存在其他情况?

    谢谢!!!

    Jeff

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

    我将邀请软件团队来回答您的问题、因为您的问题在引脚多路复用工具范围之外、他们应该有更准确的答案。

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

    您对该流程的理解通常是正确的。

    现在回答您的问题:

    1)。 不、我们还没有此类 Wiki 或用户指南、不确定是否有创建此类 Wiki 的计划。 这是一个通用的 Linux/u-boot 移植工具。
    [引用]或者它是否真的很简单、就像从 pinmux 工具输出生成头文件、然后生成 perl 脚本、然后生成 U-boot?
    是的、引脚多路复用就像创建 mux_data.h 文件一样简单、其中包含与您的用例相对应的条目。 然后、board.c 文件使用 mux_data.h 中的定义来配置器件焊盘

    2)。 是的。

    3) 3)是的、这是正确的。 但是、您可以通过在 am57xx DTS 文件中添加条目来覆盖器件引脚多路复用或从 Linux 内核执行其他引脚多路复用设置。 指定的 pinmux 设置应在内核接管后立即生效。

    希望这对您有所帮助。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Yordan 花时间回答我的新问题!

    关于#3、DTS pinmux 覆盖是否仅限于 MMC pinmux、因为这些操作是在运行时完成的、或者是否还有方法可以重新配置另一个 pinmux?

    此外、sprac44表示 TI 572X EVM 的 pinmux 文件可从 www.ti.com/.../tmdsevm572x 获取、但我尚未找到它们。

    理想情况下、我们可以将一个文件加载到 pinmux 工具中、以重现572xEVM 的 pinmux/IO 焊盘配置和时序。 您是否知道 pinmux 工具文件和/或其他输出文件(例如 genericFileFormatPadConf.txt、IODELAN.txt、....) 572xEVM 或571xIDK 是否存在?

    再次感谢!

    Jeff
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jeff、
    关于"此外、sprac44表示 TI 572X EVM 的 pinmux 文件可从 www.ti.com/.../tmdsevm572x 获取、但我尚未找到它们。 “——谢谢您的观看……我将在星期一检查发生了什么……
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jeff:

    如果在 DTS 文件中添加了相应的条目,则可以重新配置所有 pinmux 设置。

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

    我想我没能清楚地说明我正在讨论为每个适用的焊盘配置/重新配置 MUXMODE 寄存器、因为我们将使用5718制作定制板。 TRM 和 SPRAC44表示、在 Linux 中、必须在与从内部 SRAM 运行的代码隔离的"引导时间"模式下完成、TRM 的第18.4.6.1.7节(spruhz6h.pdf)。

    我知道、对于大多数外设、除了 MMC 外、MUXMODE 寄存器只能由加载到内部 SRAM 的 MLO 在隔离模式下写入。

    如果我查看572x EVM、am57xx-EVM-reva3.dts 的器件树文件、我只能看到 MMC 焊盘寄存器的 MUXMODE 配置:

    ** am57xx-evm-reva3.dts**

    &dra7_PMX_CORE{

    /*
    * TODO:我们应该能够将这里定义的 PinMux 值移动到
    * am57xx-beagle-x15-revb1.dts、该板可用后、请执行和
    *验证了其 MMC/SD 接口。 到目前为止、这些都是住在这里的
    *该练习已完成。
    *

    mmc1_PINS_DEFAULT:mmc1_PINS_DEFAULT{
    pinctrl-single、pins =<
    DRA7XX_CORE_IOPAD (0x3754、(PIN_OUTPUT 上拉| MUX_MODE0))/* mmc1_clk.clk *
    DRA7XX_CORE_IOPAD (0x3758、(PIN_INPUT_PULLUP | MUX_MODE0))/* mmc1_cmd.cmd *
    DRA7XX_CORE_IOPAD (0x375c、(PIN_INPUT_PULLUP | MUX_MODE0))/* mmc1_data0.data0 *
    DRA7XX_CORE_IOPAD (0x3760、(PIN_INPUT_PULLUP | MUX_MODE0))/* mmc1_dat1.data1 *
    DRA7XX_CORE_IOPAD (0x3764、(PIN_INPUT_PULLUP | MUX_MODE0))/* mmc1_data2.dat2 *
    DRA7XX_CORE_IOPAD (0x3768、(PIN_INPUT_PULLUP | MUX_MODE0))/* mmc1_dat3.dat3 *






    您是否意味着 Sitara 芯片确实需要处于隔离模式时存在某些例外情况(例如、只要 UART 未运行、就可以在内核中重新配置 MUXMODE 寄存器(从外部 SDRAM 运行)以实现 UART 和 GPIO 引脚等功能)?

    或者您在谈论其他事情吗?

    感谢您的耐心!!

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

    [引用]我知道、对于除 MMC 外的大多数外设、MUXMODE 寄存器只能由加载到内部 SRAM 的 MLO 在隔离模式下写入。[/quot]

    实际上可以从内核(从 DDR 执行)重新配置寄存器。 您可以在内核 DTS 文件中添加相应的 pinmux 设置、Linux 内核将在启动时重新配置 pinmux 设置。

    对于 MMC 的 IODELAY 设置、请参阅 drivers/pinctrl/pinctrl-ti-iodelay.c 中的注释:
    /**
    * ti_iodelay_pinconf_set()-配置引脚配置
    *@iod:IODelay 器件
    *@val:配置值
    *
    *根据 TRM 更新配置寄存器并在完成后锁定。
    ***重要说明* SoC TRM 建议仅执行 iodelay 编程
    *隔离时。 但是、隔离也意味着每个引脚
    * SoC 上的(包括 DDR)将被隔离。 唯一的好处是
    *无毛刺脉冲配置、但是、此驱动程序的目的纯粹是为了实现
    *以支持适用的"毛刺脉冲"配置。
    *
    *如果成功、则返回:0、否则为适当的错误值
    *

    在最新的 SDK (内核4.4.4.1)中、寄存器处于解锁状态、甚至可以使用 devmem2从用户空间访问和修改。

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

    非常有趣!

    两个后续问题:

    1) 1)我们仍然可能需要 u-boot 中的自定义 IO 焊盘配置、仅为了启动和运行内核、其余 IO 焊盘配置可由内核使用我们的 DTS 和 IO 焊盘配置来完成?

    2) 2)我们仍在使用内核版本4.4.30。 内核版本中的 pinctrl-ti-iodelay 驱动程序是否也会处理 DTS IO PAD 配置中的干扰?

    谢谢!

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

    尊敬的 Jeff:

    [引用]1)我们仍然可能需要 u-boot 中的自定义 IO 焊盘配置、以便启动和运行内核、其中其余 IO 焊盘配置可由内核使用我们的 DTS 和 IO 焊盘配置来完成?

    是的、您需要自定义 u-boot 配置来启动和运行引导加载程序(即、如果您从 nand 启动、则需要 GPMC pinmux 集、类似地、对于 eMMC 启动、您需要 MMC pinmux 等)、稍后、u-boot 需要获取内核。 您可以在 Linux 内核中进行其他 IO 板配置。  

    [引用]我们仍在使用内核版本4.4.30。 内核版本中的 pinctrl-ti-iodelay 驱动程序是否也会处理 DTS IO PAD 配置中的干扰?[/quot]

    无毛刺脉冲配置仅在从 SRAM 运行的 SPL (MLO)中受支持、请参阅上一篇文章中的注释(这是从内核驱动程序中获取的):

    "但是、隔离也意味着每个引脚

    * SoC 上的(包括 DDR)将被隔离。 唯一的好处是

    *无毛刺脉冲配置、但是、此驱动程序的目的纯粹是为了实现

    *以支持"毛刺脉冲"配置(如果适用)。"

    此致、  
    Yordan

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

    我正在通过在 mux_data.h 中编辑阵列并确认阵列的更改会导致填充配置的更改来更改 IO 填充配置、当内核和 FS 启动并运行时、可以在 sysfs 接口上看到这些更改。 当我有问题时会告诉您。

    我遇到的一个问题是、当我将 printf 的或将字符串放在 board.c 中时:rechature_iodelay、在调用 ret =__rechature_iodelay_start ()之前、当 MLO 正在运行时、字符串不会输出到控制台上。

    我将 printf 放在该函数中、以确认在每次上电时调用 reCalibrate_iodelay、并确定572X 认为是哪种板类型、以便我知道 mux_data.h 中的哪些阵列用于配置 IO 板配置和板延迟。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    [引用]我将 printf 放在该函数中、以确认在每次上电时调用 reCalibrate_iodelay、并确定572X 认为的板类型、以便我知道使用 mux_data.h 中的哪些阵列来配置 IO 焊盘配置和焊盘延迟。

    调试 UART 可能尚未启用、因此无法在控制台上打印调试输出。
    例如、尝试在任何其他驱动程序中使用 printf、即 OMAP-hsmmc.c 或 OMAP-GPIO.c 等、您会看到这是有效的。

    此致、
    Yordan