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.

[参考译文] J784S4XEVM:I2C 配置获取

Guru**** 2482195 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1437946/j784s4xevm-i2c-configuration-get

器件型号:J784S4XEVM

工具与软件:

你好

我们尝试使用 devmem2读取 I2C 配置寄存器(如下所示)

命令启动

I2C_PSC

I2C_SCLL

I2C_SCLH

WKUP_I2C0

0x421200B0

0x421200B4

0x421200B8

I2C0

0x020000B0

0x020000B4

0x020000B8

I2C1

0x020100B0

0x020100B4

0x020100B8

I2C3

0x0203 00B0

0x020300B4

0x020300B8

MCU_I2C0

0x40B0 00B0

0x40B000B4

0x40B000B8

MCU_I2C1

0x40B1 00B0

0x40B100B4

0x40B100B8

我们无法读取以红色突出显示的寄存器。 添加了读取操作期间的错误日志。

root@j784s4-evm:~# devmem2 0x020300B0
/dev/mem opened.
[  262.587319] SError Interrupt on CPU7, code 0x00000000bf000000 -- SError
[  262.587330] CPU: 7 PID: 1009 Comm: devmem2 Not tainted 6.1.80-00004-g1800603e29ef-dirty #18
[  262.587334] Hardware name: ****************
[  262.587336] pstate: 40000000 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  262.587340] pc : 0000ffff9db89c68
[  262.587342] lr : 0000ffff9db8bed0
[  262.587343] sp : 0000ffffd4b879b0
[  262.587344] x29: 0000ffffd4b879b0 x28: 0000000000000000 x27: 0000000000412000
[  262.587350] x26: 0000ffff9dbad0b0 x25: 0000ffffd4b87d78 x24: 0000ffffd4b87b80
[  262.587355] x23: 0000000000000003 x22: 0000000000000002 x21: 0000000000000048
[  262.587359] x20: 0000ffff9dbb6360 x19: 0000000000412018 x18: 0000000000000000
[  262.587364] x17: 0000ffff9db8be88 x16: 0000000000411ff8 x15: 0000000000000001
[  262.587368] x14: 0000000000000001 x13: 2073736572646461 x12: 0000ffff9dbad000
[  262.587372] x11: 000000000000000e x10: 000000000000000a x9 : 0000ffffd4b879f4
[  262.587376] x8 : 0000000000000040 x7 : 3030306461626439 x6 : 0000000000400358
[  262.587380] x5 : 0000000000000000 x4 : 0000000000411f68 x3 : 0000000000000000
[  262.587384] x2 : 00000000004003b8 x1 : 0000000000000008 x0 : 0000000000400550
[  262.587390] Kernel panic - not syncing: Asynchronous SError Interrupt
[  262.587392] CPU: 7 PID: 1009 Comm: devmem2 Not tainted 6.1.80-00004-g1800603e29ef-dirty #18
[  262.587395] Hardware name: ***************
[  262.587397] Call trace:
[  262.587399]  dump_backtrace.part.0+0xdc/0xf0
[  262.587415]  show_stack+0x18/0x30
[  262.587419]  dump_stack_lvl+0x68/0x84
[  262.587424]  dump_stack+0x18/0x34
[  262.587427]  panic+0x188/0x348
[  262.587433]  nmi_panic+0xac/0xb0
[  262.587438]  arm64_serror_panic+0x6c/0x7c
[  262.587443]  do_serror+0x58/0x5c
[  262.587447]  __el0_error_handler_common+0x40/0xa4
[  262.587451]  el0t_64_error_handler+0x10/0x20
[  262.587455]  el0t_64_error+0x18c/0x190
[  262.587458] SMP: stopping secondary CPUs
[  262.587464] Kernel Offset: disabled
[  262.587465] CPU features: 0x40000,20028084,0000420b
[  262.587468] Memory Limit: none
[  262.773881] ---[ end Kernel panic - not syncing: Asynchronous SError Interrupt ]---

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

    尊敬的 Ameer:

    崩溃是 I2C 模块未上电的典型症状。

    使用的部分 k3conf 此命令用于转储模块状态 并在模块已禁用时将其上电。

    所需的 I2C 模块上电后、应开始访问寄存器。  

    此致

    Suman

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

    尊敬的 Suman:

    感谢您的答复、我们了解模块已关闭、

    在执行读取/写入命令之前、有没有任何方法可以检查模块状态、以避免系统崩溃。

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

    尊敬的 Suman:

    我们已打开器件电源并尝试访问(读取/写入)寄存器、但仍然遇到相同的问题。

    是否有其他方法可以解决此问题?

    此致、

    Ameer Abbas  

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

    尊敬的 Ameer:

    您能提供 k3conf 的转储吗?

    谢谢!

    Neehar

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

    您好、Sawant:

    已从 k3conf 附加转储

    root@j784s4-evm:~# k3conf read 0x020300B0
    |---------------------------------------------------------------[  103.487569] SError Interrupt on CPU7, code 0x00000000bf000000 -- SError
    [  103.487585] CPU: 7 PID: 1226 Comm: k3conf Tainted: G           O       6.6.32-ti-gdb8871293143-dirty #1
    [  103.487591] Hardware name: Texas Instruments J784S4 EVM (DT)
    [  103.487594] pstate: 00000000 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [  103.487598] pc : 0000ffff80c2f580
    [  103.487599] lr : 0000000000402064
    [  103.487601] sp : 0000ffffd3e932c0
    [  103.487602] x29: 0000ffffd3e932c0 x28: 0000000000000000 x27: 000000000041fde0
    [  103.487608] x26: 0000ffff80d4a000 x25: 0000000000000000 x24: 0000ffff80d49b40
    [  103.487613] x23: 0000ffffd3e93508 x22: 0000ffffd3e934f0 x21: 0000ffffd3e93c83
    [  103.487617] x20: 0000ffffd3e934f8 x19: 00000000007ca838 x18: 0000ffff80cf1340
    [  103.487621] x17: 0000ffff80c2f580 x16: 00000000004200a8 x15: 0000ffffd3e93160
    [  103.487625] x14: 00000000012f9cc4 x13: 0000ffffd3e93160 x12: 0000ffff80d4b350
    [  103.487629] x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000010
    [  103.487634] x8 : 00000000000000de x7 : 000000000000000f x6 : 0000ffffd3e92cf9
    [  103.487638] x5 : 0000000002030000 x4 : 0000000000000003 x3 : 0000000000000001
    [  103.487641] x2 : 0000000000000003 x1 : 0000000000001000 x0 : 0000ffff80d44000
    [  103.487648] Kernel panic - not syncing: Asynchronous SError Interrupt
    [  103.487650] CPU: 7 PID: 1226 Comm: k3conf Tainted: G           O       6.6.32-ti-gdb8871293143-dirty #1
    [  103.487654] Hardware name: Texas Instruments J784S4 EVM (DT)
    [  103.487655] Call trace:
    [  103.487658]  dump_backtrace+0x90/0xe8
    [  103.487677]  show_stack+0x18/0x24
    [  103.487682]  dump_stack_lvl+0x48/0x60
    [  103.487688]  dump_stack+0x18/0x24
    [  103.487690]  panic+0x324/0x380
    [  103.487697]  nmi_panic+0x8c/0x90
    [  103.487700]  arm64_serror_panic+0x6c/0x78
    [  103.487705]  do_serror+0x3c/0x70
    [  103.487709]  __el0_error_handler_common+0x40/0xa4
    [  103.487714]  el0t_64_error_handler+0x10/0x1c
    [  103.487717]  el0t_64_error+0x190/0x194
    [  103.487721] SMP: stopping secondary CPUs
    [  103.487741] Kernel Offset: disabled
    [  103.487742] CPU features: 0x0,80000200,28020000,1000420b
    [  103.487746] Memory Limit: none
    [  103.682078] ---[ end Kernel panic - not syncing: Asynchronous SError Interrupt ]---
     

    此致、

    Ameer

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

    尊敬的 Ameer:

    让我浏览一下这个转储并 返回给您。

    谢谢!

    Neehar

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

    尊敬的 Ameer:

    因为我与您的同事讨论过这个问题。

    您是否可以尝试对 i2c 使用 k3conf 转储设备和 grep。 如下所示:

    root@j784s4-evm:~# k3conf dump device | grep -i i2c
    |   270     | J784S4_DEV_I2C0                                        | DEVICE_STATE_OFF |
    |   271     | J784S4_DEV_I2C1                                        | DEVICE_STATE_OFF |
    |   272     | J784S4_DEV_I2C2                                        | DEVICE_STATE_OFF |
    |   273     | J784S4_DEV_I2C3                                        | DEVICE_STATE_OFF |
    |   274     | J784S4_DEV_I2C4                                        | DEVICE_STATE_ON  |
    |   275     | J784S4_DEV_I2C5                                        | DEVICE_STATE_ON  |
    |   276     | J784S4_DEV_I2C6                                        | DEVICE_STATE_ON  |
    |   277     | J784S4_DEV_MCU_I2C0                                    | DEVICE_STATE_ON  |
    |   278     | J784S4_DEV_MCU_I2C1                                    | DEVICE_STATE_ON  |
    |   279     | J784S4_DEV_WKUP_I2C0                                   | DEVICE_STATE_ON  |
    root@j784s4-evm:~# [

    您可以参考有关如何使用 k3conf 的常见问题解答: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1209211/faq-tda4vm-k3conf-capabilities-with-options-help

    默认情况下、I2C0处于 DEVICE_STATE_OFF 中。

    此致、

    Takuma