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.

[参考译文] AM62L:通过 OSPI 将操作写入 MRAM

Guru**** 2587365 points
Other Parts Discussed in Thread: AM62L

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1571174/am62l-write-operations-to-the-mram-via-ospi

器件型号:AM62L


工具/软件:

您好:

我们要使用 AM62L 的定制电路板通过 OSPI 对 MRAM 执行读写操作。
Processor SDK 版本为  11.00.15.05。我们的设备树文件如下所示。

&ospi0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&mram_pins_default>;

	mram: s3a4004r0m@0 {
		compatible = "netsol,s3a4004r0m", "jedec,spi-nor";
		reg = <0>;
		spi-tx-bus-width = <4>;
		spi-rx-bus-width = <4>;
		spi-max-frequency = <25000000>; /* 25MHz */
		cdns,read-delay = <4>;
		cdns,tshsl-ns = <60>;
		cdns,tsd2d-ns = <60>;
		cdns,tchsh-ns = <60>;
		cdns,tslch-ns = <60>;
	};
};

我们要使用的 MRAM 数据表要求 CS 在整个单个事务中保持置位状态、直到它完成。

但是、定制电路板的实际波形输出如下。


-命令完成后, CS 将关闭一次。

-数据传输后,下一个命令和地址会立即发出。

-然后没有发送数据,有一个等待期,然后再次发送命令,再次等待,然后发送命令,地址和数据。

这种差异会导致写入问题、
即使我打算向 mtd0 写入零、也会在每个 256 字节边界写入 0xA5。

dd if=/dev/zero bs=1024 count=1 | tr "\000" "\377" > test.bin
dd if=./test.bin of=/dev/mtd0 bs=1024 count=1

# hexdump /dev/mtd0
0000000 ffff ffff ffff ffff ffff ffff ffff ffff
*
00000f0 ffff ffff ffff ffff ffff ffff ffff a5ff
0000100 ffff ffff ffff ffff ffff ffff ffff ffff
*
00001f0 ffff ffff ffff ffff ffff ffff ffff a5ff
0000200 ffff ffff ffff ffff ffff ffff ffff ffff
*
00002f0 ffff ffff ffff ffff ffff ffff ffff a5ff
0000300 ffff ffff ffff ffff ffff ffff ffff ffff
*
00003f0 ffff ffff ffff ffff ffff ffff ffff a5ff
0000400

我认为驱动程序需要修改;我应该如何执行此操作?

此致、

Takayuki

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

    你好、 Takayuki-San、

    我将 ping 一个 OSPI 专家。 请期待他在 1-2 天内答复。

    谢谢您、

    Stan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的友好合作。
    通过更详细地分析数据、我们发现信号按以下顺序发送。
    CMD (WREN)
    CMD (WREN)、CMD (WR)、ADDR、DATA
    CMD (WREN)、CMD (WR)、ADDR
    CMD (WREN)
    CMD (WREN)、CMD (WR)、ADDR、DATA
    CMD (WREN)、CMD (WR)、ADDR
    ...
    通过启用 OSPI_FLASH_CFG_DEV_INSTR_WR_CONFIG_REG 的 WEL_DIS_FLD (8)、可以删除 WREN、如下所示。
    CMD (WREN)
    CMD (WR)、ADDR、DATA
    CMD (WR)、ADDR
    CMD (WREN)
    CMD (WR)、ADDR、DATA
    CMD (WR)、ADDR
    我们想移除 CMD (WR)、ADDR、DATA 之后的 CMD (WR)、ADDR。
    有办法吗?
    此致、
    Takayuki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    冈本山贵之

    我看了你的请求。

    关于在事务期间 CS 行失效,目前我遇到了以下提示 —  AM62Lx Sitara 处理器器件勘误表中的 i2351 说明

    我将尝试联系 TI OSPI Linux 软件专家、了解有关修改驱动程序和命令序列优化的问题。 请预计可能会有一些延迟。

    感谢您的耐心!

    此致

    Anastas Yordanov

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

    尊敬的 Anastas Yordanov-san:  

    感谢您提供有关勘误的信息。
    此错误是否表明不仅在阅读过程中、而且在写入过程中、都会出现相同的现象?

    事实上、虽然 CSn 被取消置位可能是不可取的、但读取指令本身似乎运行正常。

    因此、我认为问题在于写命令之后发出的“没有数据的写入命令“。

    在这个问题上是否有任何进展?

    此致、

    冈本孝之

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

    您好、冈本山贵之

    感谢您的额外输入。

    今天、我已经与我们的 OSPI Linux 软件专家讨论了这一主题。 他有一个手术,并离开办公室了几天。  

    我希望我们将在两三天内回复您提出的解决方案。

    感谢您的耐心!

    此致、

    Anastas Yordanov

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

    尊敬的 Anastas Yordanov-san:

    我们发现、单 SPI 模式下不会出现此问题。

    您能告诉我最新进展情况吗?

    我期待听到 OSPI Linux 软件专家提供的解决方案。

    此致、

    Takayuki

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

    冈本山贵之

    问题分析仍在进行中。

    请从我们的 Linux OSPI/QSPI 驱动器专家处获得解答。

    谢谢

    此致、

    Anastas Yordanov