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.

[FAQ] [参考译文] [常见问题解答] SitarA/Jacinto 器件的 OSPI 常见问题解答

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1181116/faq-ospi-faq-for-sitara-jacinto-devices

常见问题解答内容

有多种基于 NOR 和 NAND 的闪存器件可供选择、这使得为设计选择闪存变得极具挑战性;与其他用例相比、由于缺乏软件控制或灵活性、选择用于引导的闪存可能特别具有挑战性。 此常见问题解答将展示有关如何选择闪存器件的粗略决策指南、包括指向文档的示例链接以及如何/何时使用它们。 虽然本常见问题解答突出了 AM64x/AM62x、但相同的决策流程适用于具有相同 OSPI IP 的所有 K3器件。  

适用器件/系列

  • AM64x
  • AM62x
  • AM65x
  • AM243x
  • TDA4x
  • DRA8x

IP 限制/要求

OSPI 控制器用于许多 Sitara 和 Jacinto 器件、在选择闪存器件时首先要检查其局限性。 除了以下几点外、没有其他需要考虑的相关事项:

  • 最大虚拟周期为31

可能会有一些影响小众情况的限制、但对于大多数 NOR/NAND 闪存、可用的特性将是足够的。 有关在器件上实例化的 OSPI IP 的完整说明、请参阅所选器件的 TRM (技术参考手册)中的外设部分。 (例如、请参阅 AM62x TRM 中的第12.4.2节或 AM64x/AM243x TRM 中的第12.3.2节)。 特定器件 TRM 中的 OSPI 部分将详细介绍特性和寄存器、包括器件可能唯一的任何修订版本。

每个产品页面都有一个技术文档列表:

AM625产品页面

AM6442产品页面

AM62x TRM 的示例链接如下所示(请参阅最新 TRM 修订版的产品页面)

AM62x TRM (链接:10/22): https://www.ti.com/lit/pdf/spruiv7

器件限制/要求

要考虑的下一个级别是特定于器件的质量;每个器件都有一个数据表、其中显示了各种电气特性、包括开关/时序特性和布局指南。 对于 OSPI、在规划电路板拓扑和选择闪存器件时、应阅读并考虑电路板设计/布局指南和时序/开关特性。 虽然可以实现其他时钟拓扑/模式组合、但除非在数据表中提供、否则这些组合不受官方支持。 这些指南也  能代替板级仿真、我们建议始终执行这些指南。  我们还建议在大规模生产之前验证实际电路板上的闪存部件。

另一个要查看的文档是器件勘误表、其中将包含器件的使用说明和已知故障。 以 AM64x 为例:勘误表 i2351 "OSPI:控制器不支持 NAND 闪存的连续读取模式"将影响选择要使用的 NAND 闪存器件、而勘误表 i2249 "OSPI:具有 DDR 时序不可运行的内部 PHY 回送和内部焊盘回送计时模式"将影响某些 OSPI DDR 模式配置。

  1. 《OSPI/QSPI/SPI 电路板设计和布局指南》
    1. 使用此部分确定用于连接到闪存和规划布局的适当时钟拓扑。 应结合使用时序和开关特性信息来确定哪种拓扑最适合用例。
  2. OSPI 时序和开关特性
    1. 本节深入介绍 OSPI 控制器可在各种模式下运行的最大频率和电气特性。 与设计和布局指南结合使用。
  3. 使用说明和已知错误的器件勘误表
    1. 本文档将记录所有需要注意的使用说明以及 OSPI IP、实施或 OSPI 引导中已知的错误。

器件数据表可在产品页面的技术文档下找到、AM64x 数据表的示例链接如下所示(请参阅产品页面以了解最新的数据表修订版)

AM64x 数据表(链接:10/22): https://www.ti.com/lit/gpn/am625

勘误表可在产品的技术文档部分找到、AM64x 勘误表的示例链接如下所示(有关最新勘误表修订版、请参阅产品页面)

AM64x 勘误表(链接:10/22): https://www.ti.com/lit/er/sprz457f/sprz457f.pdf

用例限制/要求

最后一组限制将取决于 OSPI 将用于的用例、最常用的限制如下。 此时、这些用例将决定最终的功能限制/要求、 但 IP 限制/要求和器件限制/要求仍然是给定器件上任何这些用例的先决条件。

引导

到目前为止最常见的情况是、此用例涉及将非易失性映像加载到闪存中、然后 ROM 代码(在加电时)将加载到系统存储器中。 加载后、次级引导加载程序将继续执行系统初始化的其余部分、并对芯片以及可能的 OSPI IP 进行任何其他配置。 由于 ROM 不能被任何应用程序更改、所以一组重要的要求/限制是 ROM 将执行和能够执行的操作。 有关引导的所有详细信息、请参阅给定器件的 TRM 中相应的部分(例如 AM64x TRM 中的第4.4.1节 OSPI、xSPI、QSPI、SPI 引导)。  

Linux

Linux 是一种适用于嵌入式设备的高级操作系统。 我们提供了 Linux SDK、有关下载链接和最新文档、请参阅 产品页面中"软件开发"下的"下载选项"。

SDK Linux OSPI 文档(链接:10/22): https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_04_01_04/exports/docs/linux/Foundational_Components/Kernel/Kernel_Drivers/QSPI.html

RTOS/裸机/其他

对于所有 RTOS 或裸机类型应用、请参阅 MCU+ SDK 以获取软件资源。 MCU+ SDK 文档详细介绍了提供/需要的内容。 示例链接如下所示、有关最新文档、请参阅 产品页面中"软件开发"下的"下载选项"。

(链接:10/230)

https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_04_00_17/exports/docs/api_guide_am64x/DRIVERS_OSPI_PAGE.html 

https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_04_00_17/exports/docs/api_guide_am64x/BOARD_FLASH_PAGE.html

U-boot

U-boot 是一款常用的开源引导加载程序、可用作器件中的次级引导加载程序。 要了解我们提供的 U-Boot 软件使用 OSPI 所需的内容、请参阅 SDK Linux 文档中的 U-Boot 部分。 下面给出了一个示例链接、 要获得最新的文档、请参阅产品页面中软件开发下的下载选项

Linux U-boot OSPI/QSPI (链接日期:10/22): https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_04_01_04/exports/docs/linux/Foundational_Components/U-Boot/UG-QSPI.html 

XIP

此用例(就地执行的简称)涉及内核直接从闪存执行代码、而不是首先加载到内部存储器中。 此用例中没有太多限制、因为这可能会在自定义应用程序中发生。 根据软件环境的不同、您可能需要在自定义代码中写入/添加以配置 XIP 的闪存、并将任何内核的 MMU/MPU 配置为可执行的 OSPI 存储器区域(并建议对适用的内核也可缓存、这将提高性能并允许缓存行获取)。  

存储

此用例涉及使用 OSPI IP 向闪存中写入/读取数据以进行非易失性存储。 此用例中没有太多限制、因为这可能会在自定义应用中发生。 根据软件环境的不同、您可能需要写入/添加自定义代码来配置/与闪存器件通信、并选择大小合适的闪存来存储所有必要的信息。

(WIP)有关如何使用 AM62x 引导常见问题解答的非详尽示例

使用 OSPI 作为引导方法不仅是使用 OSPI 最常用的用例、而且是限制性最高的用例、因为对 ROM 代码的功能控制相对较少、下面提供了一些示例来确定它们是否适用于器件的引导。 这是一个使用 AM62x 作为参考的非详尽列表、并不是一个全面的列表。

首先要考虑的是 IP 限制:任何闪存器件都需要对任何适用的命令使用31个虚拟周期。 这通常在较高的速度下起作用、因此在记下这一点的同时不应起作用。 就器件限制/要求而言、时钟拓扑的选择会受到电路板资源(空间/成本/引脚)和闪存本身的影响。 出于这些示例的目的、我们假设我们建议执行的板级仿真产生了通过仿真的兼容板拓扑。

特定器件的勘误表将有助于确定任何特定于 OSPI 或引导的使用说明和报告。 查看 AM62x 勘误表(截至2012年12月16日)、可以看到以下内容:

  • 使用说明 i2351—OSPI:控制器不支持 NAND 闪存的连续读取模式  
  • Advisory i2307—引导:ROM 无法根据引导模式正确选择 OSPI 时钟模式  
  • Advisory i2189—OSPI:控制器 PHY 调优算法是
  • Advisory i2249—OSPI:内部 PHY 环回和内部焊盘环回计时模式、DDR 时序不工作

回顾这些内容、我们在选择闪存器件时可以牢记以下几点:

  • 提供连续读取模式的 NAND 闪存器件必须禁用该模式、否则无法在引导中使用

所有其他建议都与 OSPI 时钟拓扑或引导后的 OPSI 操作有关。

MT35XU512ABA (NOR 闪存)

作为 NOR 闪存器件、我们可以排除串行 NAND 启动。 因此需要考虑 xSPI、OSPI、QSPI、SPI 引导模式。

  • 对于 xSPI 引导、该存储器在1S-1S-1S - 1S 模式下提供0x0B 的读取命令、具有3个地址字节和8个虚拟周期。 在8D-8D-8D 模式下、读取命令需要16个虚拟周期和4个地址字节。 xSPI 引导可以为该命令使用这些格式中的任何一种、这意味着这应该与 xSPI 引导兼容。
  • 对于 OSPI 引导、该存储器在1S-1S-8S 模式下提供所需的0x8B 读取命令、具有3个地址字节和8个虚拟周期、这意味着该存储器应与 OSPI 引导兼容。
  • 对于 QSPI 引导、该存储器不提供四路读取命令、因此与 QSPI 引导不兼容。
  • 对于 SPI 引导、该存储器提供所需的0x03读取命令、具有3个地址字节和0个虚拟周期、这意味着该存储器应与 SPI 引导兼容。

需要注意的另一个注意事项是、在命令表中、其中的一些命令通过闪存中的寄存器具有可配置数量的虚拟周期;应将其设置为与所需的引导模式保持一致。

MT25Q (NOR 闪存)

作为 NOR 闪存器件、我们可以排除串行 NAND 启动。 因此需要考虑 xSPI、OSPI、QSPI、SPI 引导模式。 由于该器件是 QSPI 器件、因此我们可以排除 xSPI 和 OSPI。

  • 对于 QSPI 引导、该存储器在1S-1S-4S 模式下提供所需的0x6B 读取命令、具有3个地址字节和8个虚拟周期、这意味着该存储器应与 QSPI 引导兼容。
  • 对于 SPI 引导、该存储器提供所需的0x03读取命令、具有3个地址字节和0个虚拟周期、这意味着该存储器应与 SPI 引导兼容。

需要注意的另一个注意事项是、在命令表中、其中的一些命令通过闪存中的寄存器具有可配置数量的虚拟周期;应将其设置为与所需的引导模式保持一致。

S25HS02GT、S25HS04GT (NOR 闪存)

作为 NOR 闪存器件、我们可以排除串行 NAND 启动。 因此需要考虑 xSPI、OSPI、QSPI、SPI 引导模式。 由于该器件是 QSPI 器件、因此我们可以排除 xSPI 和 OSPI。

  • 对于 QSPI 引导、该存储器在1S-1S-4S 模式下提供所需的0x6B 读取命令、具有3个地址字节和8个虚拟周期、这意味着该存储器应与 QSPI 引导兼容。
  • 对于 SPI 引导、该存储器提供所需的0x03读取命令、具有3个地址字节和0个虚拟周期、这意味着该存储器应与 SPI 引导兼容。

需要注意的另一个注意事项是、在命令表中、其中的一些命令通过闪存中的寄存器具有可配置数量的虚拟周期;应将其设置为与所需的引导模式保持一致。