https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1470405/dra821u-about-ospi
器件型号:DRA821U工具/软件:
尊敬的团队:
我们 设计了基于 J7200XSOMXEVM 参考设计的定制电路板。
定制板通过 QSPI (MCU_OSPI)连接到 FRAM (MB85RS4MT)。
在上述电路中、我们将器件树编写如下:
&wkup_pmx0 { fram_pins_default: fram-default-pins { pinctrl-single,pins = < J721E_WKUP_IOPAD(0x0, PIN_OUTPUT, 0) /* (B6) MCU_OSPI0_CLK */ J721E_WKUP_IOPAD(0x2c, PIN_OUTPUT, 0) /* (D6) MCU_OSPI0_CSn0 */ J721E_WKUP_IOPAD(0xc, PIN_INPUT, 0) /* (D8) MCU_OSPI0_D0 */ J721E_WKUP_IOPAD(0x10, PIN_INPUT, 0) /* (C7) MCU_OSPI0_D1 */ J721E_WKUP_IOPAD(0x14, PIN_INPUT, 0) /* (C5) MCU_OSPI0_D2 */ J721E_WKUP_IOPAD(0x18, PIN_INPUT, 0) /* (A5) MCU_OSPI0_D3 */ J721E_WKUP_IOPAD(0x8, PIN_INPUT, 0) /* (B7) MCU_OSPI0_DQS */ J721E_WKUP_IOPAD(0x4, PIN_INPUT, 0) /* (C8) MCU_OSPI0_LBCLKO */ >; }; }; &ospi0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&fram_pins_default>; mb85rs4mt@0 { status = "okay"; compatible = "jedec,spi-nor", "fujitsu,mb85rs4mt"; reg = <0x0>; spi-tx-bus-width = <4>; spi-rx-bus-width = <4>; spi-max-frequency = <40000000>; cdns,tshsl-ns = <60>; cdns,tsd2d-ns = <60>; cdns,tchsh-ns = <60>; cdns,tslch-ns = <60>; cdns,read-delay = <4>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "fram.data"; reg = <0x00000000 0x000080000>; }; }; }; };
此外、"board-support/ti-linux-kernel-6.6.32+git-ti-RT/Documentation/devicetree/bindings/EEPROM/at25.yaml"中没有关于与 mb85rq4ml 兼容性的信息。 因此、我们能够通过修改"board-support/ti-linux-kernel-6.6.32+git-ti-RT/drivers/MTD/spi-nor/Fujitsu.c"使其兼容、如下所示。
// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2005, Intec Automation Inc. * Copyright (C) 2014, Freescale Semiconductor, Inc. */ #include <linux/mtd/spi-nor.h> #include "core.h" static const struct flash_info fujitsu_nor_parts[] = { /* Fujitsu */ { "mb85rs1mt", INFO(0x047f27, 0, 128 * 1024, 1) FLAGS(SPI_NOR_NO_ERASE) }, + { "mb85rq4ml", INFO(0x047f29, 0, 512 * 1024, 1) + FLAGS(SPI_NOR_NO_ERASE) + NO_SFDP_FLAGS(SPI_NOR_QUAD_READ) }, }; const struct spi_nor_manufacturer spi_nor_fujitsu = { .name = "fujitsu", .parts = fujitsu_nor_parts, .nparts = ARRAY_SIZE(fujitsu_nor_parts), };
当我们进行这些设置并启动程序时、会显示以下消息、并且程序无法识别 FRAM。
~# dmesg | grep spi [ 0.738259] cadence-qspi 47040000.spi: registered master spi0 [ 0.738292] spi spi0.0: setup mode 0, 8 bits/w, 40000000 Hz max --> 0 [ 0.738857] spi-nor spi0.0: unrecognized JEDEC id bytes: 08 fe 53 0b ff ff [ 0.738884] cadence-qspi 47040000.spi: registered child spi0.0
由于获得的 JEDEC id 与 MB85RS4MT 不同、我们使用示波器检查了以下信号线、发现信号没有变化。
MCU_OSPI0_CLK
MCU_OSPI0_CSn0
MCU_OSPI0_D0
MCU_OSPI0_D1
查看源代码、看起来好像 RDID 命令是从 OSPI 端口发送的、但出于某种原因、我们无法获取信号波形。
你知道什么原因吗?
此外、我想在不使用 FRAM 驱动程序的情况下使用 SPI 驱动程序检查信号、但查看以下论坛、好像 spidev_test 无法与 OSPI 一起使用。
您能告诉我如何调查原因吗?
此致、
Mizutani