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.

[参考译文] AM623:QSPI 闪存写入速率

Guru**** 2468610 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1457295/am623-qspi-flash-write-rate

器件型号:AM623

工具与软件:

您好、TI 专家!  

我有 AM6234的开发环境、其中包含我们自己的评估板。

软件 SDK 版本是 SDK-AM62X-08.06.00.42 PROCESSOR-SDK-LINUX-RT。

我们的 am6234芯片连接到闪存、型号为 w25q128(页面大小为256字节、擦除大小为4 KiB、总容量为16MiB)、其原理图如下所示:

相应的器件树配置如下:

	fss: bus@fc00000 {
		compatible = "simple-bus";
		reg = <0x00 0x0fc00000 0x00 0x70000>;
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		ospi0: spi@fc40000 {
			compatible = "ti,am654-ospi", "cdns,qspi-nor";
			reg = <0x00 0x0fc40000 0x00 0x100>,
			      <0x05 0x00000000 0x01 0x00000000>;
			interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
			cdns,fifo-depth = <256>;
			cdns,fifo-width = <4>;
			cdns,trigger-address = <0x0>;
			clocks = <&k3_clks 75 7>;
			assigned-clocks = <&k3_clks 75 7>;
			assigned-clock-parents = <&k3_clks 75 8>;
			assigned-clock-rates = <166666666>;
			power-domains = <&k3_pds 75 TI_SCI_PD_EXCLUSIVE>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};
	};
	
&main_pmx0 {
	ospi0_pins_default: ospi0-pins-default {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x000, PIN_OUTPUT, 0) /* (H24) OSPI0_CLK */
			AM62X_IOPAD(0x02c, PIN_OUTPUT, 0) /* (F23) OSPI0_CSn0 */
			AM62X_IOPAD(0x00c, PIN_INPUT, 0) /* (E25) OSPI0_D0 */
			AM62X_IOPAD(0x010, PIN_INPUT, 0) /* (G24) OSPI0_D1 */
			AM62X_IOPAD(0x014, PIN_INPUT, 0) /* (F25) OSPI0_D2 */
			AM62X_IOPAD(0x018, PIN_INPUT, 0) /* (F24) OSPI0_D3 */
		>;
	};
};

&ospi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&ospi0_pins_default>;

	spi_nor_flash: flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0x0>;
		spi-tx-bus-width = <4>;
		spi-rx-bus-width = <4>;
		spi-max-frequency = <25000000>;
		cdns,tshsl-ns = <60>;
		cdns,tsd2d-ns = <60>;
		cdns,tchsh-ns = <60>;
		cdns,tslch-ns = <60>;
		cdns,read-delay = <4>;
		cdns,phy-mode;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "ospi.u-boot";
				reg = <0 0x400000>; // 4MB
			};
		};
	};
};

同时、内核的配置如下:

CONFIG_MTD_SPI_NOR=y
# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set

我有两个问题:

SPI 最大频率的最大可配置值是多少?  最大速度?是否存在任何限制

https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM62X/10_01_10_04/exports/docs/linux/Foundational_Components /内核/ Kernel_Drivers / QSPI.html

当我将 SPI:频率配置为52000000Hz 时、会出现错误提示 μ s

当我将 SPI 最大频率配置为4166666Hz 时、没有错误:

如何提高 SPI 闪存的写入速度?

当 SPI:频率配置为41666hz 时、将4MB 的数据写入 SPI 闪存需要28.0269秒、如下所示

root@AM62x:~# dmesg |grep spi
[    0.746496] cadence-qspi fc40000.spi: registered master spi5
[    0.746533] spi spi5.0: setup: ignoring unsupported mode bits 200
[    0.746542] spi spi5.0: setup mode 0, 8 bits/w, 4166666 Hz max --> 0
[    0.746860] spi-nor spi5.0: w25q128 (16384 Kbytes)
[    0.746893] 1 fixed-partitions partitions found on MTD device fc40000.spi.0
[    0.746899] Creating 1 MTD partitions on "fc40000.spi.0":
[    0.746905] 0x000000000000-0x000000400000 : "ospi.u-boot"
[    0.748442] cadence-qspi fc40000.spi: registered child spi5.0
[    0.749758] omap2_mcspi 4b00000.spi: registered master spi0
[    0.750860] omap2_mcspi 20100000.spi: registered master spi2
root@AM62x:~#
root@AM62x:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00400000 00010000 "ospi.u-boot"
root@AM62x:~#
root@AM62x:~#
root@AM62x:~# dd if=/dev/urandom of=/dev/mtdblock0 bs=64K count=64
64+0 records in
64+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 28.1373 s, 149 kB/s
root@AM62x:~# dd if=/dev/urandom of=/dev/mtdblock0 bs=1M count=4
4+0 records in
4+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 28.0269 s, 150 kB/s
root@AM62x:~#
root@AM62x:~#
root@AM62x:~#
root@AM62x:~# dd if=/dev/urandom of=test.bin bs=1M count=4
4+0 records in
4+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.0695056 s, 60.3 MB/s
root@AM62x:~#
root@AM62x:~# dd if=test.bin of=/dev/mtdblock0 bs=1M count=4
4+0 records in
4+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 28.0232 s, 150 kB/s

当 SPI 最大频率配置为 25000000HZ 时、将4MB 的数据写入 SPI 闪存需要27.1244秒、如下所示:

root@AM62x:~# dd if=/dev/urandom of=/dev/mtdblock0 bs=1M count=4
4+0 records in
4+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 27.1244 s, 155 kB/s

时钟频率的增加似乎没有影响闪存的写入速度

此致、

Li

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

    尊敬的 Li:

    ]软件 PROCESSOR-SDK-LINUX-RT 版本为 SDK-AM62X-08.06.00.42.

    您应该使用最近发布的 SDK v10.1。 您的 SDK v8.6已使用两年、不再提供支持。 您希望充分利用的整个软件堆栈已有许多改进(安全性、性能、错误修复)。

    https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX - AM62X/10.01.10.04

    Unknown 说:
    1. SPI 最大频率的最大可配置值是多少?  最大速度是否有任何限制?

    从 OSPI/QSPI IP 的角度来看、存在两种基本操作模式、它们决定了最大值 如下所示:

    1. 轻触 Mode (模式) :此操作模式可以达到50 MHz 最大值、相对简单地进行设置。

    2. PHY 模式: 该运行模式可以上升到166 MHz、但不能低于100 MHz (由于 DLL 功能如何)。 该模式还涉及在每次初始上电设置期间进行一些数据训练。  

    OSPI NOR 应完全支持 PHY 模式、SDK 版本不会闪存、但不能用于任何其他用途。 如果您转向 SDK v10.x、您还可以获得针对 QSPI NAND 闪存的 PHY 模式支持、但仍然无法获得 QSPI、 我认为 w25q128也不支持 QSPI。

    如果没有软件支持、您只能使用"轻触模式"、表示50MHz max 调整。 为了实现这一点、器件时钟树需要能够将功能时钟输入频率清晰地除以 OSPI 外设模块(整数分频器)至50MHz、否则将使用近似值、并且即使您通过操作更改 DTS 频率、有效速度实际上也不会有差异  SPI 最大频率 .

    默认情况下、模块时钟输入频率为166MHz。 如果您希望达到50MHz SPI 频率、则需要将模块时钟输入频率配置为200MHz、因为200MHz 可以被完全分频为50MHz (/4)。

    为此、请尝试进行更改  分配的时钟速率=<166666666>  最终目的  分配的时钟速率=<200000000>  器件树中的电缆、然后配置 SPI 最大频率 50MHz。

    此致、Andreas

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

    您好、Andreas

    您应该使用最近发布的 SDK v10.1。 您的 SDK v8.6已使用两年、不再提供支持。 在您希望利用的整个软件堆栈中有许多改进(安全性、性能、错误修复)。[/QUOT]

    此问题是否与 SDK 版本相关? ‘客户的 AM62项目都是在2022年开始开发的、目前他们的产品都是 MP、更新 SDK 不切实际、我们是否应该有一些长期的 SDK 版本? 我们是否有长期维护 SDK 版本的计划? SDK10.1正常吗? 客户并不总是使用我们的 SDK 版本更新来升级其软件。

    此致

    Ethan

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

    尊敬的 Ethan:

    此问题是否与 SDK 版本有关?

    您应该能够使用我所示的步骤配置 SDK v8.6、以在50MHz 上运行 QSPI NOR 操作。 据我所知、目前对于 QSPI NOR (仅适用于 QSPI NAND)、甚至对于最新的 v10.1 SDK、都没有比这更快速的产品。 但是、有一些与此相关的内部要求(例如 SITREQ-1102)用作 SDK v11.0规划的一部分、但我尚未看到任何承诺工作。

    许多客户‘AM62项目于2022年开始开发、目前他们的产品为 MP、更新 SDK 尚不实用[/quota]

    我懂了。

    我们是否应该有一些长期维护的 SDK 版本? 我们是否有长期维护 SDK 版本的计划? SDK10.1可以吗?[/QUOT]

    SDK v10.1应是 SDK v10.x 系列的最后一个版本、与 v8.6相同、v8.6是旧版 v8.x 系列的最后一个版本。 基于较新 SDK 版本的修复/改进、我们通常不会返回更新较旧的 SDK 版本系列。 监控新的 SDK 版本并根据需要支持适用的修复被认为是客户的责任。

    这也有一个长期的维护方面。 我们的所有 SDK 版本均基于长期稳定的内核版本、这些版本由社区维护多年、远远超出了我们的 SDK 发布日期。 例如、在 SDK v8.6中、使用 Linux 内核 v5.10、该版本在2026年12月之前由社区正式提供关键修复支持、请参阅 https://www.kernel.org/category/releases.html 这意味着我们可以轻松监控/跟踪这些内核的"稳定"分支(git.kernel.org/.../ SDK v5.10内核、例如、无需费力。 但是、这仅适用于内核、当然、给定系统中还有更多的 SW 组件。

    此致、Andreas

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    然而这只适用于内核、当然、给定系统中还有更多的软件组件。

    因此、SDK v10.1可用作长期维护版本?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="4452" url="~/support/processors-group/processors/f/processors-forum/1457295/am623-qspi-flash-write-rate/5591306 #5591306"]

    您应该使用最近发布的 SDK v10.1。 您的 SDK v8.6已使用两年、不再提供支持。 您希望充分利用的整个软件堆栈已有许多改进(安全性、性能、错误修复)。

    [报价]

    TI 对最新的 SDK v10.1的支持也是两年?

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

    尊敬的 Li:

    德州仪器对最新 SDK v10.1的支持也是两年?

    标准支持为1年开发(错误修复、重新发布)和1年应用程序(主要通过 E2E)。 任何超出这一范围的事情都是"最大努力"。

    但是、软件路线图中计划基于社区的 CIP 和 Super LTS 计划提供真正的长期支持。 但这不适用于 v10.1。

    此致、Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为此、请尝试更改  分配的时钟速率=<166666666>  最终目的  分配的时钟速率=<200000000>  器件树中的电缆、然后配置 SPI 最大频率 至50MHz。[/报价]

    我按照您建议的方法进行操作、测试后出现错误、如下图:所示

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

    我目前正在国际商务旅行中的客户网站工作、无法进一步了解这一点;下周回到办公室后、我将发表评论。

    此致、Andreas

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

    您好、此问题是否有任何新的进展?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是、软件路线图中计划基于社区的 CIP 和超级 LTS 计划提供真正的长期支持。 但这不适用于 v10.1。

    TI 是否有适用于以下版本 SDK 的超级 LTS 计划?
    https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM62X/09_02_01_10/exports/docs/devices/AM62X/linux/Release_Specific_Release_Notes .html

    更多信息、TI 的超级 LTS 计划支持哪些版本的 SDK?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TI 是否有适用于以下 SDK 版本的超级 LTS 计划?
    https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM62X/09_02_01_10/exports/docs/devices/AM62X/linux/Release_Specific_Release_Notes .html

    进一步了解、TI 的超级 LTS 计划支持哪些版本的 SDK?[/QUOT]

    我们有一些针对未来 SDK 的计划方案。 虽然细节仍在讨论中、但我很确定这是一个 SDK v11+计划、没有任何东西会适用于旧的 SDK (如9.x、甚至10.x)

    我遵循了您建议的方法、测试后出现错误、如下图所示

    你能否尝试当前的 SDK v10.1来看看是否可以让它与你的闪存一起使用。 已经对驱动器进行了很多改进、所以这是您需要首先尝试的方法。 一旦您取得了一些成果、我们始终可以考虑根据需要确定并支持特定变更。

    此致、Andreas

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们针对未来的 SDK 制定了一些相关计划。 虽然详细信息仍在讨论中、但我很确定这是一个 SDK v11+计划、没有任何内容适用于旧版 SDK (如9.x、甚至10.x
    )

    您好、Andreas

    民用基础设施平台项目刚刚宣布选择新的6.12内核作为第5个 SLT(超长期稳定)内核、我们正在计划升级版本,并希望确认选择哪个版本的 SDK 作为长期版本。

    https://www.cip-project.org/blog/2025/01/13/kernel-6-12-will-have-10-years-support-via-cip-are-all-your-maintenance-problems-solved

    TI 的下一版将在今年3月发布吗? 下一个版本是 SDK v10.2还是 SDK v11+? 内核版本是否与 SDK v11+ Linux 6.12相对应?

    此致、李议员

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="4452" url="~/support/processors-group/processors/f/processors-forum/1457295/am623-qspi-flash-write-rate/5614278 #5614278"]

    你能否尝试当前的 SDK v10.1来看看是否可以让它与你的闪存一起使用。 已经对驱动器进行了很多改进、所以这是您需要首先尝试的方法。 一旦您取得了一些成果、我们始终可以考虑根据需要确定并支持特定变更。

    [报价]

    由于无法识别器件 ID:、SDK v10.1中的测试也不成功

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

    此问题是否有任何新进展?

    [报价 userid="4452" url="~/support/processors-group/processors/f/processors-forum/1457295/am623-qspi-flash-write-rate/5614278 #5614278"]

    你能否尝试当前的 SDK v10.1来看看是否可以让它与你的闪存一起使用。 已经对驱动器进行了很多改进、所以这是您需要首先尝试的方法。 一旦您取得了一些成果、我们始终可以考虑根据需要确定并支持特定变更。

    [报价]