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/OMAP-L138:最新达芬奇 Git 中的时钟器件树支持

Guru**** 2539500 points
Other Parts Discussed in Thread: OMAP-L138

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/603959/linux-omap-l138-clock-device-tree-support-in-latest-davinci-git

器件型号:OMAP-L138
主题中讨论的其他器件: DA8XX

工具/软件:Linux

我正在为基于 OMAP L-138的平台实施器件树。 我使用的是 Linux、最近刚推出 了最新的达芬奇 Git。 我意识到这棵树从主线中拉出、目前正在拉进 RC、但我觉得这可能是一个问题、已经存在一段时间了、或者从未得到完全支持。

下面是我的问题的说明:

  1. 编译和加载内核
  2. U-Boot 启动内核并传递到设备树 blob 中
  3. 内核解压缩、然后停止打印任何其它内容

我已经确定这是因为所有

平台串行探针的说明 

调用失败、使内核没有有效的控制台。 以下是导致探测器失败的调用链:

  1. 平台串行探针的说明
    1. 说明
      1. devm_clk_get
        1. CLK_Get

看一下这个混乱的情况,我看到了

_of _clk_get_By_name 

由 clk_get 调用编译(从 CCS 中拉出):

E2503000副本 R3、R0、#0x0
01A00003 MOVeq R0、R3
0A000002 BEQ 0xC018F9DC
E593002C LDR R0、[R3、#0x2C]
E3500000 CMP R0、#0x0
05930008 LDREQ R0、[R3、#0x8]
EAFFFBF B CLK_GET_sys 

这意味着 clk_get_sys 在 DEV_id ="1d0c000.serial"或类似地址时被调用。 但是、文件 da850/c 为 UART 时钟设置器件 ID、如下所示:

静态结构 clk_lookup da850_clks[]={
...
CLK ("serial8250.0"、 null、 uart0_clk)、
CLK ("serial8250.1"、 null、 uart1_clk)、
CLK ("serial8250.2"、 null、 uart2_clk)、
...
}; 

这会导致时钟查找、从而导致探测器失败。

我认为这是因为 CONFIG_common_CLK 未设置、从而导致了这种情况  

_of _clk_get_By_name 

无效。 在浏览 menuconfig 时、我没有清楚地看到启用此功能的任何方法。

我在这里是否缺少一些东西来使器件树时钟查找在我的平台上正常工作? 我实际上应该能够启用此选项吗? 或者、是否有其他解决方案可以在不修改8250/clk 内核代码的情况下使其正常工作?

作为一种变通办法、我可以将所有时钟 dev_id 重命名为"da850/c 中的 address.device"、但这似乎是对我的问题的错误解决方案。

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

    您需要修改 Kconfig 文件、以便在平台下选择 common_CLK。 我不熟悉最新的达芬奇内核、但例如、如果您参考最新的源代码(Proc SDK 03.02.00.05中的内核4.32)、则应进行修改
    arch/arm/arch-davinci/kconfig、在 arch_davinci_DA850下、尝试添加:
    配置 ARCH_DaVinci_DA850
    bool "基于 DA850/OMAP-L138/AM18x 的系统"
    取决于!arch_Davinci_DMx || AUTO_ZRELADDR
    选择 ARCH_DaVinci_DA8XX
    + 选择 common_clk
    选择 CP_INTC

    配置 ARCH_DaVinci_DA8XX
    布尔
    选择 CPU_ARM926T

    这将启用它。

    仅供参考、TI 正在发布新的处理器 SDK Linux (我想使用内核4.9mm)、并增加了对 OMAP-L138的支持、这意味着我们将在源代码中提供 OMAP-L138 DTS。

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

    Yordan

    感谢您的回答。 是的、我知道即将推出的 SDK -我正在尝试在该版本之前解决我们修改的大部分问题、以便我们可以在其发布时继续工作。 我是否可以对 DaVinci git 网页与 SDK (与内核相关、不是 U-Boot)之间的关系进行一些澄清? 通过查看日志、我看到 da850更改被推入 git 网页。 发布的 SDK 是否只是该存储库的快照、该存储库已经过"正式测试"或其他内容、或者代码库是否存在实际差异(如果是、在哪里)?

    基本上、假设我们将平台升级到即将推出的 SDK、但稍后 Linux 发布了一项我们确定真正想要拥有的功能、这个达芬奇存储库是否"最新"了所有 da850更改? 我意识到其中一些可能尚未经过测试、但了解这一点很有用、这样我们就可以逐步升级我们的内核、而不是在 SDK 版本相隔数年时实现巨大飞跃。

    关于最初的问题、我认为我找到了解决此问题的 Linux 风格。 如果您在调用中查看 da8xx-dt.c

    默认值 

    有一个传入的 auxdata 表。 该表基本上将设备节点名称重命名为更传统的名称。 我认为这是必要的、因为 da850平台尚未升级(至少在 git repo 中)以使用-仍在开发中- Linux 器件树时钟绑定。

    总之、对于阅读该帖子的其他人而言、该表的外观如下:

    静态结构 of _dev_auxdata da850_auxdata_lookup[]__initdata ={
    of _dev_AUXDATA ("ti、davi-i2c"、0x01c22000、"i2c_Davinci1.1"、NULL)、
    of _dev_AUXDATA ("ti、davinci-i2c"、0x01e28000、"i2c_Davinci.2、NULL)、
    of _dev_AUXDATA ("ti、Davinci-WDT"、0x01c21000、"Davinci-WDT"、NULL)、
    of _dev_AUXDATA ("ti、DA830-MMC"、0x01c40000、"DA830-MMC.0"、NULL)、
    of_dev_AUXDATA ("ti、da850-ehrpwm"、0x01f00000、"ehrpwm.0"、NULL)、
    of_dev_AUXDATA ("ti、da850-ehrpwm"、0x01f02000、"ehrpwm.1"、NULL)、
    of_dev_AUXDATA ("ti、da850-ECAP"、0x01f06000、"ECAP.0 "、空)、
    of_dev_AUXDATA ("ti、da850-ECAP"、0x01f07000、"ECAP.1"、空)、
    of_dev_AUXDATA ("ti、da850-ECAP"、0x01f08000、"ECAP.2"、空)、
    of _dev_AUXDATA ("ti、DA830-SPI"、0x01c41000、"SPI_Davinci.0"、NULL)、
    of_dev_AUXDATA ("ti、DA830-SPI"、0x01f0e000、"SPI_Davinci.1、NULL)、
    of _dev_AUXDATA ("ns16550a"、0x01c42000、"serial8250.0"、NULL)、
    of _dev_AUXDATA ("ns16550a"、0x01d0c000、"serial8250.1"、NULL)、
    of _dev_AUXDATA ("ns16550a"、0x01d0d000、"serial8250.2"、NULL)、
    of _dev_AUXDATA ("ti、Davinci_MDIO"、0x01e24000、"Davinci_MDIO.0"、NULL)、
    of _dev_AUXDATA ("TI、DaVinci-DM6467 - EMAC"、0x01e20000、"Davinci_EMAC.1"、
    null)、
    of _dev_AUXDATA ("ti、DA830-McASP-AUDIO"、0x01d00000、"Davinci-McASP/0"、NULL)、
    of _dev_AUXDATA ("ti、da850-aemif"、0x68000000、"ti-aemif"、&aemif_data)、
    of _dev_AUXDATA ("ti、da850-tilcdc"、0x01e13000、"da8xx_LCDC.0"、NULL)、
    of _dev_AUXDATA ("ti、DA830-ohci"、0x01e25000、"ohci-da8xx"、NULL)、
    of _dev_AUXDATA ("ti、DA830-musb"、0x01e00000、"musb-da8xx"、NULL)、
    of _dev_AUXDATA ("ti、DA830-USB-phy"、0x01c1417c、"da8xx-USB-phy"、NULL)、
    of _dev_AUXDATA ("ti、da850-AHCI"、0x01e18000、"ACCI_da850"、NULL)、
    of _dev_AUXDATA ("ti、da850-vpif"、0x01e17000、"vpif"、NULL)、
    {}
    };
    

    现在、我可能会坚持这一点、而不是尝试使用 Kconfig、因为这是 Linux 提供的可接受解决方法。

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

    [引用]我看到通过查看日志、da850更改被推入 git 网页。 发布的 SDK 是否只是该存储库的快照、该存储库已经过"正式测试"或其他内容、或者代码库中是否存在实际差异(如果是、在哪里)?

    处理器 SDK 存储库与达芬奇 Git 不同。 如果可用、您应参阅产品文件夹中提供的来源。 在软件清单中、您将能够找到 git 存储库、从中获取内核源。

    此致、
    Yordan