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.

[参考译文] PROCESSOR-SDK-J784S4:即使在使用器件树创建节点后、也会出现写入 EEPROM 的问题

Guru**** 2469140 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1468615/processor-sdk-j784s4-facing-issue-in-writing-to-the-eeprom-even-after-creating-nodes-using-the-device-tree

器件型号:PROCESSOR-SDK-J784S4

工具与软件:

环境:
我使用的是通过 MCU_spi0接口进行通信的 AT25128 EEPROM。 我的目标是从 EEPROM 读取数据并向其中写入数据。

器件树:
我为 EEPROM 创建了以下器件树节点:

&MCU_spi0{
状态="正常";
pinctrl-names ="默认值";
pinctrl-0 =<&MCU_spi0_pins_default>;

EEPROM@0{
Compatible ="Atmel、at25";
REG =<0>;
spi-max-frequency =<1000000>;
pagesize =<64>;
大小=<16384>;
地址宽度=<16>;
};
};

MCU_spi0的引脚配置已在器件树中的其他位置定义为:

&wkup_pmx2{
mcu_spi0_pins_default:mcu_spi0-more-default-pins{
PINCTL-SINGLE、PINS =<
J784S4_WKUP_IOPAD (0x038、PIN_INPUT、0)/*(G38) MCU_SPI0_CLK */
J784S4_WKUP_IOPAD (0x044、PIN_INPUT、0)/*(F37) MCU_SPI0_CS0 */
J784S4_WKUP_IOPAD (0x03c、PIN_INPUT、0)/*(H36) MCU_SPI0_D0 */
J784S4_WKUP_IOPAD (0x040、PIN_INPUT、0)/*(J38) MCU_SPI0_D1 */
>;
};
};

结果:
应用器件树更改后、我会在/sys/bus/spi/devices 中看到以下节点:

root@j784s4-evm:/sys/bus/spi/devices ls
spi0.0

此外、我在 spi0.0中找到 EEPROM 节点:

root@j784s4-evm:/sys/bus/spi/devices/spi0.0 ls
驱动程序 EEPROM of_node sernum 统计信息 uevent

问题:
尝试使用命令将数据写入 EEPROM 时:

echo -n "hello"| dd of=/sys/bus/spi/devices/spi0.0/eeprom bs=1 seek=0

此命令完成且没有错误、但是数据似乎没有反映在 EEPROM 中。 在检查内容时、它们看起来没有变化:

hexdump -C /sys/bus/spi/devices/spi0.0/eeprom | head -n 1.
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |.......... |


出现上述行为的可能原因是什么?

请尽快回复

此致、
Kowshika.

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

    您好!

    我将 请我的 SPI 专家来调查这个问题。

    我们的团队正在进行部门郊游、 请 预计下周早些时候会有回应。

    此致、
    Sudheer

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

    好的

    感谢您的及时响应。

    此致、
    Kowshika.

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

    尊敬的 Kowshika:

    您可以检查 Linux 内核配置以查看是否 启用了 EEPROM_AT25吗?

    否则、对于您的原理图、D0是输出还是输入? 默认情况下、D0是输入、要配置为输出、在 devicetre 中需要有一个标志、如"ti、windir-d0-out-D1-in"。

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否检查您的 Linux 内核配置以查看是否 启用了 EEPROM_AT25?

    是的、启用 EEPROM_AT25。

    root@j784s4-EVM:~# zcat /proc/config.gz | grep AT25.
    CONFIG_EEPROM_AT25=y

    否则、对于您的原理图、D0是输出还是输入? 默认情况下、D0是输入、要配置为输出、在 devicetre 中需要有一个标志、例如:"ti、windir-d0-out-D1-in"。


    我在这里将 D0保持为输出、

    mcu_spi0_pins_default:mcu_spi0-more-default-pins{
           PINCTL-SINGLE、PINS =<
               J784S4_WKUP_IOPAD (0x038、PIN_OUTPUT、0)/*(G38) MCU_SPI0_CLK *
               J784S4_WKUP_IOPAD (0x044、PIN_OUTPUT、0)/*(F37) MCU_SPI0_CS0 */
               J784S4_WKUP_IOPAD (0x03c、PIN_OUTPUT、0)/*(H36) MCU_SPI0_D0 */
               J784S4_WKUP_IOPAD (0x040、PIN_INPUT、0)/*(J38) MCU_SPI0_D1 */
           >;
       };

    我将在器件树中包含该标志、并让您知道。

    请交叉检查上面的引脚配置、如果有任何错误、请告知我

    此致、

    Kowshika.

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



    请尽快回复。 我们需要帮助。

    此致、
    Kowshika.

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

    尊敬的 Kowshika:

    在原始文章中共享的 devicetree 看起来是正确的。 但是、缺少 "ti,windir-d0-out-D1-in"标志。  

    我正在等待你的结果后,把这个旗帜。 这样可以解决该问题。

    此致、

    Takuma

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



    我理解、您要求我进行以下更改和写作测试、应该可行。

    &MCU_spi0{
    状态="正常";
    pinctrl-names ="默认值";
    pinctrl-0 =<&MCU_spi0_pins_default>;

    EEPROM@0{
    Compatible ="Atmel、at25";
    REG =<0>;
    spi-max-frequency =<1000000>;
    pagesize =<64>;
    大小=<16384>;
    地址宽度=<16>;
    ti、windir-d0-out-D1-in
    };
    };

    &wkup_pmx2{
    mcu_spi0_pins_default:mcu_spi0-more-default-pins{
    PINCTL-SINGLE、PINS =<
    J784S4_WKUP_IOPAD (0x038、PIN_INPUT、0)/*(G38) MCU_SPI0_CLK */
    J784S4_WKUP_IOPAD (0x044、PIN_INPUT、0)/*(F37) MCU_SPI0_CS0 */
    J784S4_WKUP_IOPAD (0x03c、PIN_INPUT、0)/*(H36) MCU_SPI0_D0 */
    J784S4_WKUP_IOPAD (0x040、PIN_INPUT、0)/*(J38) MCU_SPI0_D1 */
    >;
    };
    };


    是否就是您提到的器件树、我是否要测试此器件树的结果并让您知道

    此致、
    Kowshika.

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

    尊敬的 Kowshika:

    该属性是 SPI 的一部分、而不是 EEPROM、因此会如下所示:

    如果您的说法正确、D0应该输出数据、那么该问题应该会得到解决。 如果这样无法解决问题、则问题出在其他地方。

    此致、

    Takuma

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



    如果出现这种情况、您能否确认引脚配置是否正确。

    &wkup_pmx2{
    mcu_spi0_pins_default:mcu_spi0-more-default-pins{
    PINCTL-SINGLE、PINS =<
    J784S4_WKUP_IOPAD (0x038、PIN_INPUT、0)/*(G38) MCU_SPI0_CLK */
    J784S4_WKUP_IOPAD (0x044、PIN_INPUT、0)/*(F37) MCU_SPI0_CS0 */
    J784S4_WKUP_IOPAD (0x03c、PIN_INPUT、0)/*(H36) MCU_SPI0_D0 */
    J784S4_WKUP_IOPAD (0x040、PIN_INPUT、0)/*(J38) MCU_SPI0_D1 */
    >;
    };
    };

    此致、
    Kowshika.

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

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



    我将根据您提到的内容更改设备树、并让您了解推理。

    谢谢


    此致、
    Kowshika.

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


     进行上述更改后、我无法看到我写入的数据。

    root@j784s4-EVM:/dev/# cd /sys/bus/spi/devices
    root@j784s4-evm:/sys/bus/spi/devices ls
    spi0.0
    root@j784s4-evm:/sys/bus/spi/devices cd spi0.0
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 ls
    驱动程序 EEPROM of_node sernum 统计信息 uevent
    DRIVER_OVERRIDE modalias power spi0.00子系统
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 ls -l /sys/bus/spi/devices/spi0.0/eeprom
    -rw------- 1根根16384 Apr 29 05:07 /sys/bus/spi/devices/spi0.0/eeprom
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 sudo chmod 666 /sys/bus/spi/devices/spi0.0/eeprom
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 echo "Hello、EEPROM!" | sudo tee /sys/bus/spi/dces/spi0.0/eeprom
    您好、EEPROM!
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 sudo dd if=/sys/bus/spi/devices/spi0.0/eeprom b count=15
    15+0记录
    15+0记录出来
    复制了15字节、0.000930605秒、16.1 KB/s
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 dmesg | grep at25
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 dmesg | grep spi
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 # echo spi0.0 | sudo tee /sys/bus/spi/drivers/at2nbind
    spi0.0
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 # echo spi0.0 | sudo tee /sys/bus/spi/drivers/spi/bind
    spi0.0
    TEE:/sys/bus/spi/drivers/spidev/bind:无此类器件
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 echo "Hello、EEPROM!" | sudo dd of=/dev/spidev0bs=1
    15+0记录
    15+0记录出来
    复制了15字节、0.00011155秒、134 kb/s
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 sudo dd if=/dev/spidev0.0 bs=1 count=15
    您好、EEPROM!
    15+0记录
    15+0记录出来
    复制的15字节、0.00014058秒、107 kb/s
    rootoot@j784s4-evm:/sys/bus/spi/devices/spi0.0 # echo spi0.0 | sudo tee /sys/bus/spi/drivers/at25/bind

    spi0.0
    [ 694.702338] at25 spi0.0:16KB at25 EEPROM、页大小为64
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 sudo dd if=/sys/bus/spi/devices/spi0.0/eeprom b count=15
    15+0记录
    15+0记录出来
    复制了15字节、0.000948815秒、15.8 KB/s
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 dmesg | grep at25 spi.
    [ 694.702338] at25 spi0.0:16KB at25 EEPROM、页大小为64

    此致、
    Kowshika.

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

    尊敬的 Kowshika:

    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 echo "Hello、EEPROM" | sudo dd of=/dev/spidev0bs=1
    15+0记录
    15+0记录出来
    复制了15字节、0.00011155秒、134 kb/s
    root@j784s4-evm:/sys/bus/spi/devices/spi0.0 sudo dd if=/dev/spidev0.0 bs=1 count=15
    您好、EEPROM!
    15+0记录
    15+0记录出来
    复制了15字节、0.00014058秒、107 KB/s[/QUOT]

    在上面、我看到在/dev/下 枚举了 spidev 设备、并且 spidev 驱动程序正在使用中、写入/读取似乎在这里工作。 这让我怀疑 spidev 和 at25驱动程序之间存在资源冲突。

    • 是否在 devicetre 中为 mcu_spi0定义了 spidev?
    • 您是否可以从"dmesg"命令共享完整的引导日志?
    • 您能否共享电路板 dts 文件的 devicetree 文件。 如果您使用的是 J784S4 EVM 电路板、这将为 k3-j784s4-evm.dts、定制电路板应具有等效文件。

    此致、

    Takuma