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.

[参考译文] AM6442:TMDS64EVM 板 SPI0 EEPROM 93LC46B

Guru**** 2448780 points
Other Parts Discussed in Thread: TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1547323/am6442-tmds64evm-board-spi0-eeprom-93lc46b

器件型号:AM6442
Thread 中讨论的其他器件:TMDS64EVM

工具/软件:

尊敬的团队:

我使用 TMDS64EVM 板通过 EEPROM 93LC46B 访问 SPI 接口。 但我无法使用 A53 core_1 通过 RT-Linux 进行访问。 我怀疑驾驶员缺失、并尝试多种方式添加它。

如何为 EEPROM  93LC46B 添加驱动程序以通过 SPI 接口访问?

1) 当检查在板上电和内核在 rootfs 侧检测到 EEPROM 芯片是活动时不?

root@am64xx-EVM:~# dmesg | grep -i 93.
[   1.039359] nfs:注册 id_resolver 密钥类型
[   1.149304] usbcore:注册的新接口驱动程序 usbhid
[   1.149316] usbhid:USB HID 核心驱动程序
[4.293660]   systemd[1]:已排队的默认目标图形界面启动作业。
[4.687093]   systemd[1]:装入 POSIX 消息队列文件系统...
[4.930293]   systemd[1]:正在启动 Journal Services...
[5.093390]   systemd-journald[123]:已启用收集审计消息。
[5.141093]   systemd[1]:已启动 RPC 绑定。
[   9.693915] OMAP-MAILBOX 29020000.MAILBOX:OMAP MAILBOX rev 0x66fc9100
[10.316066]  remoteproc remoteproc3:引导固件映像 am64-main-R5F1_0-fw、大小为 93260
[  10.931855] GPIO 多路复用器 — 控制器:已注册双向多路复用器-控制器
[ 4078.249384]审计:type=1006 审计 (173636364651.829:2):pid=1834 uid=0 old-auid=4294967295 auid=0 tty=(无)old-ses=4294967295 ses=1 res=1

2) 检查内核的 SPI 端的 EEPROM 驱动程序,它没有显示?

root@am64xx-EVM:~# ls /sys/bus/spi/devices
spi0.0 spi1.0
root@am64xx-EVM:~# ls /sys/bus/spi/devices/spi0.0
driver driver_override modalias mtd_node power spi-nor 统计 子系统 uevent

4) 在内核中检查 NVMEM 侧的 EEPROM 驱动程序是否未显示?

root@am64xx-EVM:~# ls /sys/bus/nvmem/devices
0-00507 mtd0 mtd1 mtd2 mtd3 mtd4 mtd5 mtd6       

5) 访问它尝试了多种方式  

  1. 器件驱动程序 — 其他器件- EEPROM 支持 — Microware EEPROM 93xx46 支持 使能。  
  2. 器件驱动程序 — NVMEM - Microware EEPROM 93xx46 支持 Enable(选项在 kconfig 中未更改、Makefile 也更改,但仅禁用没有使用选项)

6) 如何 使用 SPI0 访问 EEPROM 93LC46B,说明步骤?

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

    你(们)好  

    您是否检查过设备树? 例如: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am642-evm.dts?h=ti-linux-6.12.y

    应该在这里定义它、示例如下

    &main_spi0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_spi0_pins_default>;
    	ti,pindir-d0-out-d1-in;
    	eeprom@0 {
    		compatible = "microchip,93lc46b";
    		reg = <0>;
    		spi-max-frequency = <1000000>;
    		spi-cs-high;
    		data-size = <16>;
    	};
    };

    要检查 EEPROM 驱动程序是否已加载并绑定、您可以尝试:
    dmesg | grep SPI

    如果这对我有帮助、请告诉我

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

    您好 Paula、

    1) 我在 k3-am642-evm.dts 文件中有足够的数据。

    &main_spi0{
    全部引导;
    状态=“正常“;
    pinctrl-names =“default";“;
    pinctrl-0 =<&MAIN_spi0_pins_default>;
    TI、pindir-d0-out-D1-in;
    EEPROM@0{
    Compatible =“microchip、93lc46b“;
    reg =<0>;
    SPI-max-frequency =<1000000>;
    SPI-cs 高电平;
    数据大小=<16>;
    };
    };

    2) 检查这个文件也 k3-am64-main.dtsi

    MAIN_spi0:SPI@20100000{
    兼容=“ti、am654-mcspi“、“ti、OMAP4-mcspi“;
    REG =<0x00 0x20100000 0x00 0x400>;
    中断= ;
    #address-cells =<1>;
    #size-cells =<0>;
    电源域=<&K3_PDS 141 TI_SCI_PD_EXCLUSTED>;
    Clocks =<&K3_CLKS 141 0>;
    DMA =<&main_pktdma 0xc300 0>、<&main_pktdma 0x4300 0>;
    dma-names =“tx0",“,"rx0"、"rx0";“;</s>“
    STATUS =“已禁用“;
    };

    如果问题得到解决、请参阅它。

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

    你好 Dinesh、我需要更好地了解请求。 您需要从  EEPROM 93LC46B 获取信息吗? 如果没有、请告诉我问题是什么或您预期的结果

    谢谢您、

    Paula

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

    您好 Paula、

    需要通过连接到处理器附近的 SPI0 接口访问 EEPROM、只需使用 EEPROM 进行读取/写入。

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

    您好 Dinesh、我目前没有进行测试的设置、但您似乎看到 MTD 设备 SPI0。 如果是、请参阅以下步骤中的内容  3.2.2.17. SPI—Processor SDK AM64X 文档 可能会对您有所帮助

    1) 检查 MTD 设备

    CAT /proc/mtd

    2) 读/写 MTD 设备。 在以下步骤示例中、从文档来看、想法是 通过检查 SPI 驱动程序和 MTD 接口是否正常工作、 test.imgtest1.img使用相同的校验和进行测试。

    cd /tmp

    #第 1 步:从/dev/mtd2 读取 8 KiB(例如 U-Boot 环境)
    DD IF=/dev/mtd2 of=test.img BS=8k count=1

    #第 2 步:检查原始图像的校验和
    MD5SUM TEST.img

    #步骤 3:擦除目标分区(例如/dev/mtd4 )
    Flash_eraseall /dev/mtd4

    #第 4 步:将图像写入/dev/mtd4
    DD IF=TEST.img of=/dev/mtd4 BS=8k count=1

    #第 5 步:从/dev/mtd4 回读
    DD if=test1.img bs=8k count=1 的/dev/mtd4

    #第 6 步:验证校验和
    MD5SUM test1.img

    如果这对我有帮助、请告诉我

    Paula

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

    您好 Paula、

    我询问了  EEPROM 93LC46B 与 SPI0 的接口。 只需使用该 EEPROM 进行读取/写入。 所需步骤。

    TMDS64EVM 电路板。

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

    您好 Dinesh、您可以在 bash 中使用 U-boot i2c 命令来实现这一点。

    对于读取:

    • I2C MD
    • 示例: => i2c MD 50 0.2 FE
    • MD 是“存储器显示“、它是读取操作
    • EEPROM 的 I2C 器件地址为 0x50
    • 0.2 是 EEPROM 中的起始存储器地址、在本例中、偏移量 0 和.2 表示 2 字节内部寻址
    • 0xFE 是要读取的字节数

    同样、对于写入:

    • I2C MW
    • 示例: =>  i2c mw 50 0.2 55 1.
    • MW 是“存储器写入“
    • I2C 器件地址和起始地址与读取类似
    • 最后两个参数是要写入的数据值和最后要写入的字节数

    希望这对您有所帮助、

    Paula

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

    您好 Paula、

    感谢您的信息。

    我问的是 SPI EEPROM、而不是 I2C EEPROM。 请在下面的红色快照中找到。

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

    抱歉、您纠正错误、请忽略 U-Boot I2C 读取/写入说明。

    [引述 userid=“649949" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1547323/am6442-tmds64evm-board-spi0-eeprom-93lc46b
    • 器件驱动程序 — 其他器件- EEPROM 支持 — Microware EEPROM 93xx46 支持 使能。  
    • 器件驱动程序 — NVMEM - Microware EEPROM 93xx46 支持 Enable(选项在 kconfig 中未更改、Makefile 也更改,但仅禁用没有使用选项)
    [/报价]

    为了阐明您是否能够在内核配置菜单中启用 EEPROM?  

    顺便说一句,你尝试了“dd"命令“命令,如上面的两篇文章中所述。 只是好奇,如果你尝试了他们

    谢谢您、

    Paula