工具/软件:
您好:
我们要使用 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
