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.

[参考译文] AM623:如何启用动态 DT 叠加

Guru**** 2810285 points

Other Parts Discussed in Thread: AM625

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1620226/am623-how-to-enable-dynamic-dt-overlay

器件型号: AM623
主题中讨论的其他器件: AM625

您好、

我已经浏览了https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/latest/exports/docs/linux/How_to_Guides/Target/How_to_enable_DT_overlays_in_linux.html“、它只说明了启动时间 dt 重叠。 我需要动态叠加方法。

我们需要 在读取 USB 端口或内核启动完成后加载/启用 i2c 端口。

请分享动态 dt 叠加方法。

此致、

Gireesh Hiremath

 

 

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

    尊敬的 Gireesh:

    sysfs 结构 (由 CONFIG_OF_CONFIGFS 启用)动态 DT 覆盖所需的该功能不会合并到上游、也不适用于 TI 内核中的驱动程序。

    但是、您可以在内核中启用以下 configs

    CONFIG_CONFIGFS_FS=y
    CONFIG_OF_OVERLAY=y

    并使用 dtbocfg — 设备树 Blob 覆盖配置文件系统 执行完全相同的操作。

    我已在 AM62X 上验证过这一点、运行正常。

    如果您需要更多支持、请告诉我。

    此致、
    Vinu

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

    尊敬的 Vinuchandran:

    感谢您的信息。 请按照步骤 操作、并在加载 dtbocfg 驱动程序后获取目录“/sys/kernel/config/device-tree/overlays /“。

    但在启用 dtbo 时遇到类似错误

    sudo cp i2c2-enable-overlay.dtbo  /sys/kernel/config/device-tree/overlays/i2c2/dtbo

    Echo 1 >/sys/kernel/config/device-tree/overlays/i2c2/status  

    以及 dmesg 日志

    [69.529290]  dtbocfg:0.1.1
    [69.529399]  dtbocfg:好的
    [117.452488] of:解析器:设备树的根中没有符号。
    [117.458273] of:resolver: overlay phandle fixup failed:–22
    [117.463979] dtbocfg_coverlay_item_create:应用叠加失败 (ret_val=–22)

    main dtbs

    &MAIN_i2c2{
        pinctrl-names =“default";“;
        pinctrl-0 =<&MAIN_i2c2_pins_default>;
        时钟频率=<10000>;
        STATUS =“已禁用“;
    };

    供电

    /dts-v1/;
    /plugin/;

    /{
      兼容=“ti、am625“;

      片段@0{
        目标=<&MAIN_i2c2>;
        __覆盖__{
          状态=“正常“;
        };
      };
    };

    请给出建议。

    此致、

    Gireesh Hiremath  

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

    您好、

    您的基本 dtb 未使用__symbols__ node 进行编译。

    需要将片段正确映射到“main_i2c2"。“。

    使用符号重新编译 dtb、或使用 target_path 而不是 phandle 创建片段。

    示例:  

    /dts-v1/;
    /plugin/;
    
    / {
        compatible = "ti,am625";
    
        fragment@0 {
            target-path = "/bus@f0000/i2c@20000000";   /* full path to main_i2c2 node- change as required */
            __overlay__ {
                status = "okay";
            };
        };
    };

    此致、
    Vinu

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

    尊敬的 Vinuchandran:

    感谢您的建议、我们取得了一些进展、

    根据 i2c-2 更新了 dts

    /dts-v1/;
    /plugin/;

    /{
        兼容=“ti、am625“;

        片段@0{
            target-path =“/bus@f0000/i2c@20020000“;
            __覆盖__{
                状态=“正常“;
            };
        };
    };

    但加载后仍然出现错误、如所示  

    [110.248709] dtbocfg:0.1.1
    [110.248830] dtbocfg:好的
    [ 141.318776] of:overlay:警告:如果删除 overlay、将发生内存泄漏、属性:/bus@f0000/i2c@20020000/status
    [ 141.331765] OMAP-Li2c 20020000.i2c:无法获取 fck:–2
    [ 141.338157] OMAP-Li2c 20020000.i2c:100kHz 时总线 3 rev0.12

    然后感觉我需要添加时钟相关的信息

    按如下方式更新了 DTS  

    /dts-v1/;
    /plugin/;

    /{
        兼容=“ti、am625“;

        片段@0{
            target-path =“/bus@f0000/i2c@20020000“;
            __覆盖__{
                状态=“正常“;
                Clocks =<&{/bus@f0000/system-controller@44043000/clock-controller}104 2>;

                 时钟名称=“fck";“;
            };
        };
    };

    但这个时间错误日志

    [36.456696]  dtbocfg:0.1.1
    [36.456890]  dtbocfg:好的
    [  77.284047] of:解析器:设备树的根中没有符号。
    [  77.289924] of:解析器:覆盖座圈固定失败:–22
    [77.295603]  dtbocfg_coverlay_item_create:应用叠加失败 (ret_val=–22)

    请提供解决时钟错误的建议。

    此致、

    Gireesh Hiremath

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

    尊敬的 Gireesh:

    of:overlay:警告:如果删除 overlay、将发生内存泄漏、属性:/bus@f0000/i2c@20020000/status

    这是一个警告、而不是错误。 这是加载重叠时的正常行为。

    OMAP_i2c 20020020000.i2c:无法获取 fck:–2

    在 K3 平台上、时钟由 ti-sci 而不是通过 fck 管理。 OMAP-Li2c 驱动程序将尝试获取闪存、失败和回退。  

    [报价 userid=“489291" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1620226/am623-how-to-enable-dynamic-dt-overlay/6250546 ]OMAP-Li2c 20020000.i2c:100kHz 时总线 3 rev0.12 [/报价]

    这是成功探测的消息。 I2C 总线在 100kHz 时初始化。

    [引述 userid=“489291" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1620226/am623-how-to-enable-dynamic-dt-overlay/6250546

    请提供解决时钟错误的建议。

    [/报价]

    第二次尝试不正确。 您正在尝试再次为使用 ti-sci 初始化的 i2c 总线提供时钟。

    第一次尝试后、尝试查看是否可以访问 i2c 总线。

    此致、
    Vinu

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

    尊敬的 Vinuchandran:

    感谢您的确认。

    加载完覆盖后、能够看到节点

    /sys/class/i2c-dev/i2c-3 ->./../devices/platform/bus@f0000/20020020000.i2c/i2c-3/i2c-dev/i2c-3.

    但当我尝试执行“i2cdetect -y 3“时、会出现类似“OMAP-Li2c 20020000.i2c:控制器超时“的错误。

    请给出建议。

    此致、

    Gireesh Hiremath  

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

    尊敬的 Gireesh:

    您是否可以检查这是否适用于静态 DT 覆盖或 直接更新基础 DT?

    此致、
    Vinu

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

    尊敬的 Vinuchandran:

    是的、它适用于 Direct DTB。

    dt 叠加出现问题。

    此致、

    Gireesh   

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

    尊敬的 Gireesh:

    我可以做到 成功启用 MAIN_i2c2 开始进行测试。

    在下面共享我的日志。 dmesg 日志嵌入在日志中。

    root@am62xx-evm:~# ls /dev/i2c-*
    /dev/i2c-0  /dev/i2c-1
    root@am62xx-evm:~# cd /home/dtbocfg/
    root@am62xx-evm:/home/dtbocfg# sudo insmod dtbocfg.ko
    [   72.910582] dtbocfg: loading out-of-tree module taints kernel.
    [   72.917746] dtbocfg: 0.1.1
    [   72.920630] dtbocfg: OK
    root@am62xx-evm:/home/dtbocfg# mount -t configfs none /sys/kernel/config
    root@am62xx-evm:/home/dtbocfg# mkdir -p /sys/kernel/config/device-tree/overlays/main_i2c2 
    root@am62xx-evm:/home/dtbocfg# cp /home/main_i2c2_overlay.dtbo /sys/kernel/config/device-tree/overlays/main_i2c2/dtbo
    root@am62xx-evm:/home/dtbocfg# echo 1 > /sys/kernel/config/device-tree/overlays/main_i2c2/status 
    [  212.454605] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /bus@f0000/i2c@20020000/status
    [  212.466580] omap_i2c 20020000.i2c: could not get fck: -2
    [  212.473211] omap_i2c 20020000.i2c: bus 2 rev0.12 at 400 kHz
    root@am62xx-evm:/home/dtbocfg# ls /dev/i2c-*
    /dev/i2c-0  /dev/i2c-1	/dev/i2c-2
    root@am62xx-evm:/home/dtbocfg# i2cdetect -y 2
    Warning: Can't use SMBus Quick Write command, will skip some addresses
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                                                 
    10:                                                 
    20:                                                 
    30: -- -- -- -- -- -- -- --                         
    40:                                                 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60:                                                 
    70:                                                 
    root@am62xx-evm:/home/dtbocfg# dmesg | tail
    [   21.945711] audit: type=1334 audit(1748544521.424:62): prog-id=40 op=LOAD
    [   22.046505] audit: type=1334 audit(1748544521.528:63): prog-id=40 op=UNLOAD
    [   22.053596] audit: type=1334 audit(1748544521.532:64): prog-id=41 op=LOAD
    [   22.174604] audit: type=1334 audit(1748544521.656:65): prog-id=41 op=UNLOAD
    [   72.910582] dtbocfg: loading out-of-tree module taints kernel.
    [   72.917746] dtbocfg: 0.1.1
    [   72.920630] dtbocfg: OK
    [  212.454605] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /bus@f0000/i2c@20020000/status
    [  212.466580] omap_i2c 20020000.i2c: could not get fck: -2
    [  212.473211] omap_i2c 20020000.i2c: bus 2 rev0.12 at 400 kHz
    root@am62xx-evm:/home/dtbocfg# 

    我无法重现您所面临的问题。 我已逐字使用您更正的 DT 覆盖。

    [引述 userid=“489291" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1620226/am623-how-to-enable-dynamic-dt-overlay/6250546 ]/dts-v1/;
    /plugin/;

    /{
        兼容=“ti、am625“;

        片段@0{
            target-path =“/bus@f0000/i2c@20020000“;
            __覆盖__{
                状态=“正常“;
            };
        };
    };

    作为调试步骤、请尝试从工作用例和非工作用例中提取正在运行的 DT(在应用叠加之后)、并比较 MAIN_i2c2 节点以查找差异。

    此致、
    Vinu

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

    尊敬的 Vinuchandran:

    i2c-2 端口时钟和数据线的硬件行为存在一些差异

    使用标准 DTB、能够看到适当的 3V3 电压电平变化

    但使用 dt 叠加、在理想阶段为 3V3、如果问题是 i2cdetect -y -r 2、

    没有看到适当的电压电平运动。

    还有一个观察结果是移除了连接到端口的所有器件以及上拉电阻器

    此外、我还在时钟和数据线上看到了 3V3、这是预期行为吗?  

    用于参考的 I2C 引脚多路复用器

        main_i2c2_pins_default:main-i2c2-default-pins{
            pinctrl-single、pins =<
                AM62X_IOPAD (0x0b0、PIN_INPUT_PULLUP、1)/*(K22/H18) GPMC0_CSn2.I2C2_SCL */
                AM62X_IOPAD (0x0b4、PIN_INPUT_PULLUP、1)/*(K24/H19) GPMC0_CSn3.I2C2_SDA */
            >;
        };  

    请给出建议。

    此致、

    Gireesh Hiremath  

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

    尊敬的 Gireesh:

    您能尝试一下吗?

    [报价 userid=“678328" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1620226/am623-how-to-enable-dynamic-dt-overlay/6254510

    作为调试步骤、请尝试从工作用例和非工作用例中提取正在运行的 DT(在应用叠加之后)、并比较 MAIN_i2c2 节点以查找差异。

    [/报价]

    这是在定制硬件上还是在 AM62x EVM 上?

    您使用的是哪个 SDK?

    此致、
    Vinu

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

    尊敬的 Vinu:

    是的、我使用命令比较运行/proc 中的工作和非工作 DT  

    DTC -I FS -O dts -o running.dts /proc/device-tree

    应首先返回值  

    应用叠加后未发现任何差异。

    能够列出所有 i2c 端口

    # ls -l /sys/class/i2c-dev/i2c-*
    lrwxrwxrwx 1 根根根  0 3 月 9 日 05:36 /sys/class/i2c-dev/i2c-0 ->./../devices/platform/bus@f0000/20000000.i2c/i2c-0/i2c-dev/i2c-0
    lrwxrwx 1 根根根  0 3 月 9 日 05:36 /sys/class/i2c-dev/i2c-1 ->./../devices/platform/bus@f0000/20010000.i2c/i2c-1/i2c-dev/i2c-1
    lrwxrwx 1 根根根  0 3 月 9 日 05:36 /sys/class/i2c-dev/i2c-2 ->./../devices/platform/bus@f0000/20030000.i2c/i2c-2/i2c-dev/i2c-2
    lrwxrwxrwx 1 根根根  0 3 月 9 日 05:40 /sys/class/i2c-dev/i2c-3 ->../../devices/platform/bus@f0000/20020000.i2c/i2c-3/i2c-dev/i2c-3.

    但在执行“i2cdetect -y -r 3“时、仅对 i2c-3 获取“OMAP-L20000.i2c:控制器超时“、而不对其他端口执行此操作

    我正在开发定制硬件和软件参考 ti-processor-sdk-linux-am62xx-evm-11.01.05.03。

    有关我旧问题的任何信息

    “另一个观察结果是、移除了连接到端口的所有器件以及上拉电阻器

    此外、我还在时钟和数据线上看到了 3V3、这是预期行为吗?“

    请给出建议?

    此致、

    Gireesh Hiremath  

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

    尊敬的 Gireesh:

    查看探测到的信号、故障可能是由于 padconfig 问题、这就是为什么我要检查“ 工作 — 静态 DT 覆盖 “与“ 非工作 — 采用动态 DT ovelay “。 不是“应用叠加前“与“应用叠加后“。

    [引述 userid=“489291" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1620226/am623-how-to-enable-dynamic-dt-overlay/6260298

    是的、我使用命令比较运行/proc 中的工作和非工作 DT  

    [/报价]

    请确保已正确应用 pin-Ctrl。 如果应用不正确、请尝试使用 pinctrl 更新来更新片段。

    [引述 userid=“489291" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1620226/am623-how-to-enable-dynamic-dt-overlay/6260298

    “另一个观察结果是、移除了连接到端口的所有器件以及上拉电阻器

    此外、我还在时钟和数据线上看到了 3V3、这是预期行为吗?“

    [/报价]

    这将取决于您的默认 pinctrl 配置(如果启用了内部上拉电阻等)。

    另请注意、这不是 TI SDK 固有支持的功能。  

    此致、
    Vinu