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.

[参考译文] BEAGLEBK:设置 I2C 总线2 (来自 ti-SDK u-boot)会导致 BeagleBone Black 复位

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/995057/beaglebk-setting-i2c-bus-2-from-ti-sdk-u-boot-is-causing-beaglebone-black-to-reset

您好!

U-Boot 版本:U-Boot 2019.01-g333c3e72d3

TI-SDK:TI-PROCESSOR-SDK-LINUX-AM335x-EVM-06.03.00.106

在选择"I2C 总线2"时,BeagleBone Black 将进行复位

U-boot 登录:“U-Boot 2019.01-g333c3e72d3”

------------------

U-Boot SPL 2019.01-g333c3e72d3 (2020年4月19日- 11:21:12 +0000)
尝试从 MMC1引导


U-Boot 2019.01-g333c3e72d3 (2020年4月19日- 11:21:12 +0000)

CPU :AM335X-GP 修订版2.1
型号:TI AM335x BeagleBone Black
DRAM: 512 MiB
NAND: 0 MIB
MMC:  OMAP SD/MMC:0、OMAP SD/MMC:1.
正在从 FAT 加载环境... 好的
NET:  eth0:以太网@4a100000
警告:USB_Ether MAC 地址不匹配:
ROM 中的地址为         :de:ad:be:ef:00:01
环境中的地址为 04:79:B7:A8:FD:e0
,eth1:USB_ether
按任意键停止自动引导: 0
=> I2C 探针
未选择 I2C 总线
=> I2C DEV 2
将总线设置为2
数据中止
PC:[<9ff887fa>]         LR:[<9ff887cf>]
重新分配 PC:[<808207fa>]   LR:[<808207cf>]
SP:9df3af08 IP:9df3aedc    FP:000003e8
R10:9df4b0e8 R9:9df47eb8    R8:9df4b158
R7:00000002 R6:00000001    R5:9ffc29a7 R4:4819c000
r3:000000a4 r2:0000aec4    r1:000050b4 r0:9df48748
标志:nzCv 在  模式 SVC_32上关闭 FIQ 的 IRQ
代码:2e002702 461dbf18 7b7af44f 6004f8c8 (5ae37a6b)
正在重置 CPU ...

正在重置...

--------------------

这是预期的吗?

另一方面、 电路板上的出厂 u-boot 映像(U-Boot 2018.09-00002-g0b54a51ee)也不会出现这种情况:

U-Boot "2018.09-00002-g0b54a51eee"上的 U-boot 日志

----------

U-Boot 2018.09-00002-g0b54a51eee (2018年9月10日- 19:41:39 -0500)、编译:jenkins5

CPU :AM335X-GP 修订版2.1
I2C:  就绪
DRAM: 512 MiB
与驱动程序"omap_hmc"不匹配
与驱动程序"omap_hmc"不匹配
未找到某些驱动程序
复位源:发生上电复位。
RTC 32KCLK 源:外部。
MMC:  OMAP SD/MMC:0、OMAP SD/MMC:1.
正在从 EXT4加载环境...
**无法使用 MMC 0:1加载 env **
电路板:BeagleBone Black
未设置。 验证第一个电子保险丝 MAC
BeagleBone Black:
BeagleBone:Cape EEPROM:I2C_probe:0x54:
BeagleBone:Cape EEPROM:I2C_probe:0x55:
BeagleBone:Cape EEPROM:I2C_probe:0x56:
BeagleBone:Cape EEPROM:I2C_probe:0x57:
NET:  eth0:MII 模式
CPsw、USB_ether
按空格键可在2秒钟内中止自动引导
=> I2C DEV 2
将总线设置为2
=>

------------

此致、

Adarsh

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

    您好、Adarsh、
    在较新的 AM335x SDK 中、驱动程序模型(DM)用于 SPL/u-boot 中的 I2C 端口。
    您可能需要检查 u-boot 板 DTB 文件以查看在 u-boot 器件树文件中启用了哪些 i2c 端口。
    1.一个选项是通过"DTC -i dtb board_xyz.dtb > board_xyx.dtb"将板 DTB 文件转换回 DTC 文件、然后检查在板 DTB 文件中启用了哪些 i2c 端口。
    2.另一个选项是运行"dm tree" cmd @u-boot Prompt 以列出驱动程序模型(Dm)树。 如果未设置为启用"dm ..."、则可能需要在 u-boot board_xyz_defconfig 中添加"CONFIG_CMD_DM=y" 命令
    示例"dm 树"日志位于在 AM335x GP EVM 上捕获的附件 I 中。
    请注意、两个 i2c 端口与 AM335 EVM 的 i2c0和 i2c1节点的 u-boot 器件树配置匹配、如下所示:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /arch/arm/dts/am335x-evm.dts
    &i2c0 {
    pinctrl-names = "default";
    pinctrl-0 = <&i2c0_pins>;
    status = "okay";
    clock-frequency = <400000>;
    ...
    &i2c1 {
    pinctrl-names = "default";
    pinctrl-0 = <&i2c1_pins>;
    status = "okay";
    clock-frequency = <100000>;
    ...
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    最棒的

    -香港

    e2e.ti.com/.../4617.am3_5F00_6.3_5F00_i2c_5F00_speed.txt

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

    您好、Hong、

    我同意你刚才提到的一两种选择。

    在本例中、我使用的是中的预构建映像(u-boot-AM335x-evm.img、MLO-AM335x-EVM)

    "ti-processor-sdk-linux-am335x-evm-06.03.00.106"。

    默认情况下,在这些映像中启用 i2c0和 i2c2控制器(从"am33xx.dtsi"和"am335x-bone-common.dtsi"文件中观察到这一点 )。输出也确认了这一点

    u-boot shell 提示符处的"DM 树"命令。

    确认配置并启用了"i2c 总线2"后、在运行"i2c dev 2"时、电路板是否会崩溃并重新启动?

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    U-Boot SPL 2019.01-g333c3e72d3 (Apr 19 2020 - 11:21:12 +0000)
    Trying to boot from MMC1
    U-Boot 2019.01-g333c3e72d3 (Apr 19 2020 - 11:21:12 +0000)
    CPU : AM335X-GP rev 2.1
    Model: TI AM335x BeagleBone Black
    DRAM: 512 MiB
    NAND: 0 MiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT... *** Warning - bad CRC, using default environment
    <ethaddr> not set. Validating first E-fuse MAC
    Net: eth0: ethernet@4a100000
    Warning: usb_ether MAC addresses don't match:
    Address in ROM is de:ad:be:ef:00:01
    Address in environment is 04:79:b7:a8:fd:e0
    , eth1: usb_ether
    Hit any key to stop autoboot: 0
    => dm tree
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    "ti-processor-sdk-linux-am335x-evm-06.03.00.106/board-support"中 u-boot 版本的默认"dts/dtsi"文件

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

    您好、Adarsh、
    默认情况下、所有器件都将从0开始以简单的顺序获得 DM 序列号/索引。
    如下面列出的"dm 树"所示、器件 i2c 端口2 (i2c@4819c000)映射到 u-boot DM 中的 i2c 索引#1。

    Fullscreen
    1
    2
    3
    4
    5
    6
    >>>> from "dm tree" on your board
    => dm tree
    Class index Probed Driver Name
    -----------------------------------------------------------
    i2c 0 [ ] i2c_omap |-- i2c@44e0b000
    i2c 1 [ ] i2c_omap |-- i2c@4819c000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    您是否曾尝试使用"i2c dev 1"来选择电路板上的器件 i2c 端口#2?
    最棒的
    -香港

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

    您好、Hong、

    根据您的建议、我尝试了"i2c dev 1"。但似乎不会发生这种情况。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    U-Boot SPL 2019.01-g333c3e72d3 (Apr 19 2020 - 11:21:12 +0000)
    Trying to boot from MMC1
    U-Boot 2019.01-g333c3e72d3 (Apr 19 2020 - 11:21:12 +0000)
    CPU : AM335X-GP rev 2.1
    Model: TI AM335x BeagleBone Black
    DRAM: 512 MiB
    NAND: 0 MiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT... *** Warning - bad CRC, using default environment
    <ethaddr> not set. Validating first E-fuse MAC
    Net: eth0: ethernet@4a100000
    Warning: usb_ether MAC addresses don't match:
    Address in ROM is de:ad:be:ef:00:01
    Address in environment is 04:79:b7:a8:fd:e0
    , eth1: usb_ether
    Hit any key to stop autoboot: 0
    => i2c dev 0
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好、Adarsh、
    我们可以在您的电路板上运行快速测试@u-boot 提示符吗?

    Fullscreen
    1
    2
    3
    4
    5
    #1 => md.l 0x44E00044 1
    44e00044: 00030000 ....
    #2 => mw.l 0x44E00044 0x2 1
    #3 => md.l 0x44E00044 1
    44e00044: 00000002
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    电路板上 CMD #1的返回值是多少?
    如果 CMD #1返回如上所示的"0x00030000"、则继续运行 CMDS #2和#3。
    然后、运行"i2c dev 1"以查看是否有差异?
    最棒的
    -香港

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

    您好、Hong、

    输出:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    U-Boot SPL 2019.01-g333c3e72d3 (Apr 19 2020 - 11:21:12 +0000)
    Trying to boot from MMC1
    U-Boot 2019.01-g333c3e72d3 (Apr 19 2020 - 11:21:12 +0000)
    CPU : AM335X-GP rev 2.1
    Model: TI AM335x BeagleBone Black
    DRAM: 512 MiB
    NAND: 0 MiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT... *** Warning - bad CRC, using default environment
    <ethaddr> not set. Validating first E-fuse MAC
    Net: eth0: ethernet@4a100000
    Warning: usb_ether MAC addresses don't match:
    Address in ROM is de:ad:be:ef:00:01
    Address in environment is 04:79:b7:a8:fd:e0
    , eth1: usb_ether
    Hit any key to stop autoboot: 0
    => md.l 0x44E00044 1
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好、Adarsh、
    根据在电路板上捕获的日志、似乎未在 SPL/u-boot 中启用 i2c #2时钟。
    => MD.L 0x44E00044 1.
    44e00044:00030000
    我们是否可以将以下一行添加到"arch/arm/cpU/armv7/am33xx/clock_am33xx.c"中、然后重新运行测试?

    Fullscreen
    1
    2
    3
    4
    5
    before:
    &cmper->i2c1clkctrl, /* enabling clock for i2c #1 */
    after
    &cmper->i2c1clkctrl, /* enabling clock for i2c #1 */
    + &cmper->i2c2clkctrl, /* enabling clock for i2c #2 */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    最棒的

    -香港

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

    您好、Hong、

    在"ti-processor-sdk-linux-am335x-evm-06.03.00.106" SDK 发行版的 u-boot 代码中,文件"clock_am33xx.c"位于

    "arch/arm/mach-OMAP2/am33xx"。 应用建议的修改后的输出:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    U-Boot SPL 2019.01-gc148924-dirty (Apr 23 2021 - 10:51:42 +0530)
    Trying to boot from MMC1
    U-Boot 2019.01-gc148924-dirty (Apr 23 2021 - 10:51:42 +0530)
    CPU : AM335X-GP rev 2.1
    Model: TI AM335x BeagleBone Black
    DRAM: 512 MiB
    NAND: 0 MiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT... *** Warning - bad CRC, using default environment
    <ethaddr> not set. Validating first E-fuse MAC
    Net: eth0: ethernet@4a100000
    Warning: usb_ether MAC addresses don't match:
    Address in ROM is de:ad:be:ef:00:01
    Address in environment is 04:79:b7:a8:fd:e0
    , eth1: usb_ether
    Hit any key to stop autoboot: 0
    => dm tree
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好、Adarsh、
    我将在上一份答复中补充一些澄清。
    我在 AM335x GP EVM u-boot 器件树中添加了 i2c 端口#2、并捕获了如下所示的日志:

    Fullscreen
    1
    2
    3
    4
    => i2c bus
    Bus 0: i2c@44e0b000
    Bus 1: i2c@4802a000
    Bus 2: i2c@4819c000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    因此、您需要使用"i2c dev 2"来选择电路板上的 i2c 端口#2 (i2c@4819c000)。
    我认为在 SPL 代码中添加"i2c DEV 2"后、"i2c DEV 2"现在应该适用于您的电路板。

    Fullscreen
    1
    2
    3
    /arch/arm/mach-omap2/am33xx/clock_am33xx.c"
    &cmper->i2c1clkctrl, /* enabling clock for i2c #1 */
    + &cmper->i2c2clkctrl, /* enabling clock for i2c #2 */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    最棒的

    -香港

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

    您好、Hong、

    能够设置 i2c 总线2,不会出现任何问题。

    请将此修复推入下一个"ti-sdk"版本。

    此致、

    Adarsh

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    U-Boot SPL 2019.01-gc148924-dirty (Apr 23 2021 - 10:51:42 +0530)
    Trying to boot from MMC1
    U-Boot 2019.01-gc148924-dirty (Apr 23 2021 - 10:51:42 +0530)
    CPU : AM335X-GP rev 2.1
    Model: TI AM335x BeagleBone Black
    DRAM: 512 MiB
    NAND: 0 MiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT... *** Warning - bad CRC, using default environment
    <ethaddr> not set. Validating first E-fuse MAC
    Net: eth0: ethernet@4a100000
    Warning: usb_ether MAC addresses don't match:
    Address in ROM is de:ad:be:ef:00:01
    Address in environment is 04:79:b7:a8:fd:e0
    , eth1: usb_ether
    Hit any key to stop autoboot: 0
    => dm tree
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

x 出现错误。请重试或与管理员联系。