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] [参考译文] [常见问题解答] MCU-PLUS-SDK-AM243X:[常见问题解答]如何调试/开发/迁移非 TI EVM (OSPI/xSPI)上自定义闪存的闪存驱动程序?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1230063/faq-mcu-plus-sdk-am243x-faq-how-to-debug-develop-migrate-the-flash-driver-for-custom-flash-on-non-ti-evm-ospi-xspi

器件型号:MCU-PLUS-SDK-AM243X
主题中讨论的其他器件:UNIFLASH
  • 我在为自定义闪存迁移闪存驱动程序时遇到问题。
  • 按照上述步骤、闪存开箱后无法正常工作。
  • 如何调试问题,我不熟悉外部闪存环境?
  • 为什么我的 UART Uniflash 在电路板上无法正常工作? 为什么我的 JTAG Uniflash 在电路板上无法工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    简介

    AM243x 是一款支持外部闪存的片上系统。 客户可以自由选择自己的定制闪存。 在集成定制闪存的同时、确实存在一些挑战。 此常见问题解答将介绍使用具有 xSPI 控制器的 AM243x 器件进行软件配置时遇到的问题。

    注意 : AM243x 支持不同芯片的不同闪存。

    假定用户已经通过这里提到的步骤尝试了闪存集成- https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/CUSTOM_FLASH_SUPPORT_GUIDE.html

    本常见问题解答向您介绍了 MX25U51245GXDI00 (Macronix 闪存)的集成、它不是 TI EVM 的一部分、用于模拟自定义闪存集成体验。

    将闪存与1s-1s 模式集成(标准读取/SPI)

    1s-1s-1s 模式是最简单的第一步。 它具有影响闪存运行的最少量的变量。

    在 ospi_io 示例的 syscfg 中填充以下各项

    会发生什么变化

    •  输入时钟频率(Hz)设置 200MHz、即200000000  输入时钟分频器 为8。
    • 禁用 电压

    发生了变化

    • 配置以下项目。 这些项目不会在任何配置中发生变化(用于大部分闪存)
    可配置项目
    块擦除 CMD (3B)
    块擦除 CMD (4B)
    芯片擦除命令
    闪存块大小、以字节为单位
    闪存繁忙超时
    闪存 JEDEC 器件 ID
    闪存 JEDEC 制造商 ID
    闪存页大小、以字节为单位
    以字节为单位的闪存扇区大小
    闪存大小、以字节为单位
    页面程序超时
    读取状态寄存器 CMD
    扇区擦除 CMD (3B)
    扇区擦除 CMD (4B)
    WEL 位
    WIP 位
    写入启用 CMD
    写入/页编程命令
      • 将读取命令设置为  0x3 (通常是标准类型)
      • CMD/数据的虚拟周期和所有其他项目应不是必需的0。
      • quirks 函数设置为 NULL

      按照这些更改重新编译 OSPI IO 的测试应用。 对于这些类型的测试、确保将引导模式保持为 DEV-BOOT 模式。 如果这不起作用、请使用数据表或 SFDP 表重新检查配置。 如果软件的一切正常、则重新检查 HW。

      将闪存与1s-1s 模式集成(快速读取)

      这些更改与前一个步骤有所不同、并假定之前的步骤适用于1s-1s 标准读取

      OSPI 中的更改-不需要。

      发生了变化

      • 读取命令从发生变化 0x3到0xB 。 此外、读取是一个快速读取、因此需要虚拟周期。
      • 设置 虚拟周期(读取) 作为 10. (根据数据表)

      • 此外、用户还必须配置 虚拟周期配置 了一个函数

      请注意、仅支持对配置进行写入 仅1b (8bit)寄存器 。 如果要写入的数据大于8位、则需要在闪存驱动器中进行更改。

      对于 MX25U51245GXDI00、写入寄存器写入 2b. 因此、这需要重新写入驱动程序以支持与此相同的功能(函数名称 Flash_norOspiSetRegCfg)

      按照这些更改重新编译 OSPI IO 的测试应用。 对于这些类型的测试、确保将引导模式保持为 DEV-BOOT 模式。 如果这不起作用、请使用数据表或 SFDP 表重新检查配置。

      将闪存与1s-4s 模式集成(四路读取/QSPI 模式)

      • 将协议更改为 1S-1S-4S
      • 将 Read Cmd 更改为 0x6B
      • 更改 QE 位设置序列 。 根据闪存数据表和所提及的详细信息、这是必需的。

      有关 QE 位的详细信息、请参阅 syscfg 信息 (?) -

      4)使用这些更改重新编译应用测试 OSPI_IO 的应用。 如果这不起作用、请使用数据表或 SFDP 表重新检查配置。 如果软件的一切正常、则重新检查 HW。

      将闪存与4S-4S-4S 模式集成(四路读取/QPI 模式)

      • 将协议更改为 4S-4S-4S
      • 将 Read Cmd 更改为  0xEB
      • 根据闪存数据表配置 QPI 序列。 这也取决于闪存、某些闪存可能不需要此操作。

      syscfg 信息中提供了有关 QPI 序列的详细信息  (?)

      完成这些更改后、重新编译 OSPI_IO 的测试应用。 如果这不起作用、请使用数据表或 SFDP 表重新检查配置。

      将闪存与4S-4D-4D 模式集成(四路读取/ QPI 模式 DTR)

      • 将协议更改为 4S-4D-4D.
      • 将 Read Cmd 更改为  0xED
      • 配置 STR/DTR 序列 。 对于此闪存器件、不需要配置、因此可以跳过该配置。

       完成这些更改后、重新编译 OSPI_IO 的测试应用。 如果这不起作用、请使用数据表或 SFDP 表重新检查配置。


      这是此闪存支持的最大配置、但以下是有关更高配置的一些提示 

      将闪存与1至8秒模式(八路读取/OSPI 模式)相集成

      1s-1s-4s 模式后完成。

      • 协议更改为 1s-1s-8s.
      • 更改读取命令 (取决于闪存器件、请查看数据表)
      • 配置八进制使能类型(取决于闪存器件、请查看数据表)

      有关八进制使能 位的详细信息 、请参阅 syscfg 信息  (?)

      将闪存与8s-8s-8s 模式集成(八路读取/OPI 模式 STR)

      1s-1s-8s 模式后完成。

      • 协议更改为 8s-8s-8s.
      • 更改读取命令 (取决于闪存器件、请查看数据表)
      • 配置 OPI 启用序列(取决于闪存器件、请查看数据表)

      有关 OPI 序列的详细信息、请参阅 syscfg 信息  (?)

      将闪存与8d-8d-8d 模式(八路读取/OPI 模式 DTR)集成

      4S-4D-4D 模式后完成。

      • 协议更改为 8D-8d-8d.
      • 更改读取命令 (取决于闪存器件、请查看数据表)
      • 配置八进制使能类型(取决于闪存器件、请查看数据表)
      • 配置 OPI 启用序列(取决于闪存器件、请查看数据表)
      • 检查是否为提供了虚拟时钟 命令 这些概念。

      有关八进制使能 位的详细信息 、请参阅 syscfg 信息  (?)

      有关 OPI 序列的详细信息 、请参阅 syscfg 信息  (?)

      部分查询-

      Q.何时应使能 PHY?

      a.在 DTR <= 25MHz 和 STR <= 50MHz 的工作频率之前、不应启用 PHY。 此外、SDK 提供的 PHY 配置仅适用于8d-8d-8d (对于 EVM 上的 Cypress 闪存)、因此建议保持禁用状态。

      问:如果协议不是 SYSCFG 的一部分,用户需要运行,该怎么办?

      a:此协议不是标准协议、因此需要用户重写驱动程序。 但是、它可能受硬件支持、由于其复杂性和特定实现方式、SDK 可能无法开箱即用地支持它。

      问:硬件支持的最大频率是多少?

      a.启用 PHY 后、支持的最大频率为200MHz。 但是、建议将工作频率保持为133MHz、以在所有 PVT 值上保持不变。

      问:使能 PHY 后如何配置分频器?

      a:当使能 PHY 后、分频值将被忽略。

      问: 如果 读取的值与 写入的值不匹配,该怎么办?

      a. 检查虚拟周期值。 有时、虚拟周期的值 也许与数据表中提到的值有些不同。 另外, 如果仍然存在数据不一致,则用户可能必须  Flash_open()之后调用 OSPI_setRdDataCaptureDelay API