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.

[参考译文] TDA4VM:OMAP-Li2c 2050000.i2c:控制器超时

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1487505/tda4vm-omap_i2c-2050000-i2c-controller-timed-out

器件型号:TDA4VM
Thread 中讨论的其他器件:TCA6408

工具/软件:

尊敬的 TI:

我想在核心中使用 I25、但失败了。 请帮助我了解:

arch/arm64/boot/dts/ti/ k3-j721e-common-proc-board.dts:

&main_i2c5
pinctrl-names ="default"
pinctrl-0 =<&MAIN_i2c5_pins_default>
时钟频率=< 400000>
}
main_i2c5_pins_default:main-i2c5-pins-default
pinctrl-single、pins =<
J721E_IOPAD (0x260PIN_INPUT_PULLUP4)/*(T28) MMC2_DAT3.I2C5_SCL */
J721E_IOPAD (0x264PIN_INPUT_PULLUP4)/*(T29) MMC2_DAT2.I2C5_SDA */
>
};
arch/arm64/boot/dts/ti/ k3-j721e-vision-apps.dts:
&main_i2c5
状态="正常"
};
 
但是:

Root@J7-EVM:/opt/vision_apps
root@j7-EVM:/opt/vision_apps # dmesg |grep i2c
[ 0.783406] i2c /dev 条目驱动程序
[ 1.151980] OMAP-Li2c 40b00000.i2c:100kHz 时总线0 rev0.12
[ 1.158799] OMAP-Li2c 40b10000.i2c:100kHz 时总线1 rev0.12
[ 1.166049] OMAP-Li2c 4212000.i2c:100kHz 时总线2 rev0.12
[ 1.173119] i2c i2c-3:在0x20 (-16)注册 i2c 客户端 tca6408失败
[ 1.180158] i2c i2c-3:of_i2c:注册/bus@10000/i2c@2010000/GPIO@20失败
[ 1.187897] i2c i2c-3:无法为/bus@10000/i2c@2010000/GPIO@20创建 I2C 器件
[ 1.195996] OMAP-Li2c 2010000.i2c:400kHz 时为总线3 rev0.12
[ 1.206245] OMAP-Li2c 202000.i2c:400kHz 时为总线4 rev0.12
[ 1.257773] OMAP-Li2c 2030000.i2c:400kHz 时为总线5 rev0.12
[ 1.264762] OMAP-Li2c 205000.i2c:100kHz 时总线6 rev0.12
[ 7.778548] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 8.802551] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 9.826547] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 10.842544] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 11.862541] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 12.882542] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 13.902541] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 14.918541] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 15.934542] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 16.954543] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 17.974541] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 18.990541] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 20.010540] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 21.030542] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[ 22.046541] OMAP-Li2c 2020000.i2c:总线就绪等待超时
[23.058541] OMAP-Li2c 2020000.i2c:总线就绪等待超时
Root@J7-EVM:/opt/vision_apps
Root@J7-EVM:/opt/vision_apps

Root@J7-EVM:/opt/vision_apps
Root@J7-EVM:/opt/vision_apps
Root@J7-EVM:/opt/vision_apps i2cdetect -y -r 6
0 1 2 3 4 5 6 7 8 9 a b c d e f
00:[ 84.638545] OMAP-Li2c 2050000.i2c:控制器超时
-[ 85.6945] OMAP-Li2c 2050000.i2c:控制器超时
-[ 86.750546] OMAP-Li2c 2050000.i2c:控制器超时
-[ 87.806546] OMAP-Li2c 2050000.i2c:控制器超时
-[ 88.862541] OMAP-Li2c 2050000.i2c:控制器超时

期待您的答复。

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

    您好:

    几个请求:  

    [报价 userid="585052" url="~/support/processors-group/processors/f/processors-forum/1487505/tda4vm-omap_i2c-2050000-i2c-controller-timed-out
    J721E_IOPAD (0x260PIN_INPUT_PULLUP4)/*(T28) MMC2_DAT3.I2C5_SCL */
    J721E_IOPAD (0x264PIN_INPUT_PULLUP4)/*(T29) MMC2_DAT2.I2C5_SDA *
    [/报价]

    您能否在 Linux 中使用 devmem2读出上述引脚多路复用寄存器? 这是为了确保按预期写入值。

    其次、哪个从器件 ID 在 i2c5总线上具有有效连接?

    此致、

    Keerthy  

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

    您好、

    1.应该读取哪个寄存器?

    2.I2C5可以用于 R 内核、但将其移动到 A 内核是上面提到的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid="585052" url="~/support/processors-group/processors/f/processors-forum/1487505/tda4vm-omap_i2c-2050000-i2c-controller-timed-out/5717339 #5717339"]

    1.应该读取哪个寄存器?

    [/报价]

    devmem2 0x00011C260 (带
    devmem2  0x00011C264 w

    使用 Linux 用户空间 devmem2命令转储上述内容、并验证引脚多路复用器是否未覆盖。

    您还能回答哪些从器件 ID 连接到 I2C5吗?

    从 Linux 尝试时、能否从 R 内核禁用 R5内核访问和 I2C5的初始化?

    - Keerthy

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

    您好、

    当我在 R CORE 中使用 I2C5时、它可以对连接的解串器进行读取和写入。

    当我停止 R 内核中的 I2C5引脚配置并在内核中启用 I25时:

    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~# devmem2 0x00011c260 w
    /dev/mem opened.
    Memory mapped at address 0xffffb5a59000.
    Read at address 0x0011C260 (0xffffb5a59260): 0x08214007
    root@j7-evm:~#
    root@j7-evm:~# devmem2 0x00011c264 w
    /dev/mem opened.
    Memory mapped at address 0xffffa7efb000.
    Read at address 0x0011C264 (0xffffa7efb264): 0x08214007
    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~# dmesg |grep i2c
    [ 0.786252] i2c /dev entries driver
    [ 1.146529] omap_i2c 40b00000.i2c: bus 0 rev0.12 at 100 kHz
    [ 1.153355] omap_i2c 40b10000.i2c: bus 1 rev0.12 at 100 kHz
    [ 1.160438] omap_i2c 42120000.i2c: bus 2 rev0.12 at 100 kHz
    [ 1.167532] i2c i2c-3: Failed to register i2c client tca6408 at 0x20 (-16)
    [ 1.174570] i2c i2c-3: of_i2c: Failure registering /bus@100000/i2c@2010000/gpio@20
    [ 1.182308] i2c i2c-3: Failed to create I2C device for /bus@100000/i2c@2010000/gpio@20
    [ 1.190407] omap_i2c 2010000.i2c: bus 3 rev0.12 at 400 kHz
    [ 1.197334] omap_i2c 2020000.i2c: bus 4 rev0.12 at 400 kHz
    [ 1.203447] omap_i2c 2030000.i2c: bus 5 rev0.12 at 400 kHz
    [ 1.210276] omap_i2c 2050000.i2c: bus 6 rev0.12 at 100 kHz
    root@j7-evm:~#
    root@j7-evm:~# i2cdetect -y -l
    i2c-3 i2c OMAP I2C adapter I2C adapter
    i2c-1 i2c OMAP I2C adapter I2C adapter
    i2c-6 i2c OMAP I2C adapter I2C adapter
    i2c-4 i2c OMAP I2C adapter I2C adapter
    i2c-2 i2c OMAP I2C adapter I2C adapter
    i2c-0 i2c OMAP I2C adapter I2C adapter
    i2c-5 i2c OMAP I2C adapter I2C adapter
    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~# i2cdetect -y -r 6
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: [ 116.377504] omap_i2c 2050000.i2c: controller timed out
    -- [ 117.433504] omap_i2c 2050000.i2c: controller timed out
    -- [ 118.489499] omap_i2c 2050000.i2c: controller timed out
    -- [ 119.545509] omap_i2c 2050000.i2c: controller timed out
    -- [ 120.601498] omap_i2c 2050000.i2c: controller timed out
    -- [ 121.657502] omap_i2c 2050000.i2c: controller timed out
    -- [ 122.713499] omap_i2c 2050000.i2c: controller timed out
    -- [ 123.769503] omap_i2c 2050000.i2c: controller timed out
    -- [ 124.825497] omap_i2c 2050000.i2c: controller timed out
    -- [ 125.881500] omap_i2c 2050000.i2c: controller timed out
    -- ^C[ 126.905498] omap_i2c 2050000.i2c: controller timed out
    
    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~# devmem2 0x00011c260 w
    /dev/mem opened.
    Memory mapped at address 0xffffbe8bc000.
    Read at address 0x0011C260 (0xffffbe8bc260): 0x08214007
    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~# devmem2 0x00011c264 w
    /dev/mem opened.
    Memory mapped at address 0xffff995fa000.
    Read at address 0x0011C264 (0xffff995fa264): 0x08214007
    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~#
    root@j7-evm:~#

    期待您的答复。

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

    我可以清楚地看到的一个问题是引脚多路复用器设置不正确、这肯定会导致 I2C 超时。

     0x00011c260和0x00011c264的0x08214007值 不正确。 这些是复位值。

    - Keerthy

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

    尊敬的 Keerthy:

    关于我们:

    指定 驱动程序 :注释掉所有 MMC2_DAT2和 MMC2_DAT3配置。

    #if 0
        /* MyGPIO1 -> GPIO1_23 -> T28 */
        {
            PIN_MMC2_DAT3, PIN_MODE(7) | \
            ((PIN_PULL_DISABLE | PIN_INPUT_ENABLE) & (~PIN_PULL_DIRECTION))
        },
        /* MyGPIO1 -> GPIO1_24 -> T29 */
        {
            PIN_MMC2_DAT2, PIN_MODE(7) | \
            ((PIN_PULL_DISABLE | PIN_INPUT_ENABLE) & (~PIN_PULL_DIRECTION))
        },
    #endif

    已编译和升级 vx_app_rtos_linux_mcu2_0.out。

    并在中添加配置 这些工作

    arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts:
    
    &main_i2c5 {
    pinctrl-names = "default";
    pinctrl-0 = <&main_i2c5_pins_default>;
    clock-frequency = <400000>;
    }
    main_i2c5_pins_default: main-i2c5-pins-default {
    pinctrl-single,pins = <
    J721E_IOPAD(0x260, PIN_INPUT_PULLUP, 4) /* (T28) MMC2_DAT3.I2C5_SCL */
    J721E_IOPAD(0x264, PIN_INPUT_PULLUP, 4) /* (T29) MMC2_DAT2.I2C5_SDA */
    >;
    };
    arch/arm64/boot/dts/ti/k3-j721e-vision-apps.dts:
    &main_i2c5 {
    status = "okay";
    };
    

    已编译和升级:

    k3-j721e-vision-apps.dtbo。

    k3-j721e-common-proc-board.dtb。

    问:

    MMC2_DAT2、MMC2_DAT3

    SDK8.6是否不支持它们? 您能否在电路板上进行修改和验证? 我们还可以修改哪些内容?

    谢谢。

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

    您好:

    分配给此查询的专家(Keerthy)已离开办公室、但将于4月21日返回、因此请预计会延迟响应。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="585052" url="~/support/processors-group/processors/f/processors-forum/1487505/tda4vm-omap_i2c-2050000-i2c-controller-timed-out
    main_i2c5_pins_default:main-i2c5-pins-default
    pinctrl-single、pins =<
    J721E_IOPAD (0x260PIN_INPUT_PULLUP4)/*(T28) MMC2_DAT3.I2C5_SCL */
    J721E_IOPAD (0x264PIN_INPUT_PULLUP4)/*(T29) MMC2_DAT2.I2C5_SDA */
    >
    };
    [/报价]

    您是在 main_pmx0节点下定义它的吗? 如果怀疑 MCU2_0更改了 pinmux 值、您能否为了进行检查而重命名 MCU2_0固件名称、以便不加载它?

    - Keerthy

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

    尊敬的 Barry:

    而不是 k3-j721e-vision-apps.dts 中的 status ="oke"

    [报价 userid="585052" url="~/support/processors-group/processors/f/processors-forum/1487505/tda4vm-omap_i2c-2050000-i2c-controller-timed-out
    arch/arm64/boot/dts/ti/ k3-j721e-vision-apps.dts:
    &main_i2c5
    状态="正常"
    };
    [/报价]

    您是否可以在以下位置启用该功能:

    arch/arm64/boot/dts/ti/ k3-j721e-common-proc-board.dts:

    &main_i2c5
    状态=正常";
    pinctrl-names   ="default"
    pinctrl-0  = <&MAIN_i2c5_pins_default>
    时钟频率 = < 400000>
    }
    告诉我这是否会将 i2c5引脚多路复用正确设置为 Mode4。
    - Keerthy
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Keerthy:

    我们修改、编译并替换:

    k3-j721e-common-proc-board.dtb k3-j721e-vision-apps.dtbo    

    还是相同的问题,为什么图片中的标记总是100kHz ?

    期待您的答复。

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

    Barry、

    请分享您使用的确切路径、我将尝试检查 EVM 上的行为。

    - Keerthy

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

    当前要求是将 T29/T28配置为在 A 核心 Linux 端可用:
    t29--->I2C_SDA
    T28--- >I2C_SCL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我指的是您正在使用的确切补丁。 请将 DTS 补丁作为文本文件附件共享。

    此致、

    Keerthy  

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

    tda4-project/PDK0806_Linux/Linux-5.10.162+gitAUTOINC+76b3e88d56-g76b3e88d56/arch/arm64/boot/dts/ti/

    e2e.ti.com/.../k3_5F00_for_5F00_ti.tar.gz

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

    尊敬的 Barry:

    对长时间的延误表示歉意。

    我在 Linux 10.1 SDK 上添加的补丁:

    diff --git a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
    index 79b5f9143..256c657ed 100644
    --- a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
    +++ b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
    @@ -294,6 +294,13 @@
                    >;
            };
     
    +       main_i2c5_pins_default: main-i2c5-default-pins {
    +               pinctrl-single,pins = <
    +                    J721E_IOPAD(0x260, PIN_INPUT_PULLUP, 4) /* (T28) MMC2_DAT3.I2C5_SCL */
    +                    J721E_IOPAD(0x264, PIN_INPUT_PULLUP, 4) /* (T29) MMC2_DAT2.I2C5_SDA */
    +               >;
    +       };
    +
            main_i2c6_pins_default: main-i2c6-default-pins {
                    pinctrl-single,pins = <
                            J721E_IOPAD(0x1d0, PIN_INPUT_PULLUP, 2) /* (AA3) SPI0_D1.I2C6_SCL */
    @@ -747,6 +754,13 @@
            };
     };
     
    +&main_i2c5 {
    +       status = "okay";
    +       pinctrl-names = "default";
    +       pinctrl-0 = <&main_i2c5_pins_default>;
    +       clock-frequency = <400000>;
    +};
    +
     &main_i2c6 {
            status = "okay";
            pinctrl-names = "default";
    

    Pinmux 按预期设置:

    devmem2 0x00011c260 (带
    /dev/mem 已打开。
    映射到地址0xffffa49eA000的存储器。
    在地址0x0011C260处读取(0xffa49ea260): 0x00060004.
    root@j721e-evm:~#
    Root@j721e-EVM:~# devmem2 0x00011c264 w
    /dev/mem 已打开。
    映射到地址0xff9a775000的存储器。
    读取地址:0x0011C264 (0xff9a775264): 0x00060004.

    Mode4用于 I2C5。

    根据下面的帖子、相同的操作在您的结尾不起作用、它读出了0x08214007、看起来像是重置值:  

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1487505/tda4vm-omap_i2c-2050000-i2c-controller-timed-out/5730955#5730955

    - Keerthy