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.

[参考译文] AM2434:AM243x MCU+ SDK08.06.00.43中的 SFPD 闪存驱动程序支持

Guru**** 2439560 points
Other Parts Discussed in Thread: AM2434, UNIFLASH, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1243600/am2434-sfpd-flash-driver-support-in-am243x-mcu-sdk08-06-00-43

器件型号:AM2434
主题中讨论的其他器件: UNIFLASHSysConfig

您好、

   我对 AM2434 GP EVM 上的闪存驱动器设置有疑问。  

1.运行 ospi_flash_diag 演示工程、从默认闪存 S28HS512T 获取 SFDP 数据。  然后、我为 S28HS512T 创建 json 文件、

e2e.ti.com/.../s28hs512t.txte2e.ti.com/.../s28hs512t.json 

2.在 sbl_uart_uniflash 项目中,我创建新的自定义配置

加载我以前获取的 json 文件。 (我使用 syscfg-tool 1.16、而不是默认1.14、因为1.4出现问题)

3.重新编译它并将其用作新的闪存写入器。 对默认 SBL_null 映像进行编程。

但是、新的 SBL_UART_uniflash 映像不起作用。  

4.我比较了默认闪存驱动器设置和从 json 文件加载之间的差异。 我发现多项设置不同。

我在这里强调一下:

虚拟周期设置、协议启用配置设置和寄存器位/位掩码在默认情况下是不同的。  

4.我改回默认设置,重新编译,然后一切顺利。  

在这里提问。  

1.为什么默认设置要比 SFPD 表中得到的结果差? 哪一个与闪存数据表中的描述匹配?

2.自动从"加载 SFPD" json 文件生成的 syscfg 不起作用?

此致

安德烈   

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

    尊敬的 

    驱动程序配置的 SFDP 值可能在不同的 SFDP 版本上工作。 因此、我们创建了一个常见问题解答、支持在添加和理解这些配置的同时进行手动添加和理解。

    常见问题解答链接- 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

    这样、您便可使用最快的方式之一访问闪存、而无需依赖 TI 支持。

    希望它有所帮助。

    此致、
    Aakash

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

    1. 我怎么知道 SPFD 的哪个版本是可行的呢?

    2.默认闪存 S28HS512T 支持 SPFD、为何常见问题解答中的方法不适用于 EVM?

    3. EVM 或 Launchpad 可以演示任何正常工作的 SPFD 驱动器?

    此致

    安德烈  

     

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

    尊敬的 AndreTseng:

    请在此处查找详细信息- https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/CUSTOM_FLASH_SUPPORT_GUIDE.html

    1.在非常高的工作频率下,即使数据表建议的虚拟周期也可能不起作用。 因此,通过实验,这是设计什么价值将是适当的。

    2.它不能和 EVM 的 SFDP 一起使用。 问题是这些信息最好来自数据表。 读取和写入的命令命令 CMD 将是 SFDP 表的一部分、但 "位电平信息" 无法进行展示。 但其余被填充的所有数据基本上是正确的、并且符合规范。

    因此、如果器件因这些配置而停止工作、则最好使用数据表恢复数据。

    常见问题解答是以最简单的方式编写的、用户可以在其中准确地了解正在进行的更改。

    此致、
    Aakash

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

    Askash、

      您是否愿意在双方都同意问题得到解决后结束该问题?

    我还有很多问题需要回答客户:

    在哪个 EVM 上、我们从 opsi_flash_diag 中加载 json git 演示可在没有修改的情况下直接工作? 我们如何验证该功能是否可行?

    2.在报告 ospi_flash_diag: " bitP":11 是二进制0b11或十进制11 ?

    "dummyCfg":{
    "isAddrReg":真、
    "cmdRegRd":"0x65"、
    "cmdRegWr":"0x71"、
    "cfgReg":"0x00800003"、
    "移位":0、
    "屏蔽":"0x03"、
    "位 P":11

    如果此值为十进制数11 / 0b1011虚拟周期设置为24。


    默认设置25与寄存器设置冲突。

    并且 json 中的掩码值为0x00、这是错误的。  

    "protoCfg":{
    "isAddrReg":真、
    "cmdRegRd":"0x65"、
    "cmdRegWr":"0x71"、
    "cfgReg":"0x00800006"、
    "Shift":0、
    "掩码":"0x00"、
    "位 P":0
    }、
    "strDtrCfg":{
    "isAddrReg":真、
    "cmdRegRd":"0x65"、
    "cmdRegWr":"0x71"、
    "cfgReg":"0x00800006"、
    "移位":1、
    "掩码":"0x00"、
    "位 P":1
    }  

    我们如何信任 ospi_flash_diag 中的结果?  

    此致

    安德烈

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

    我还想知道133MHz 来自哪里、

    根据 TRM、来自 MAIN_PLL0_HSDIV1_CLKOUT 或 MAIN_PLL1_HSDIV5的 OSPI_RCLK。


    应为200MHz 和160MHz。

    那么、该133MHz 来自哪里?

    此致

    安德烈

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

    您好、Andre、

    在 K3架构中、时钟是通过 TISCI 服务启用和配置的-

    您需要更多详细信息吗? 时钟是非常抽象的、直接通过 TISCI 处理。

    此致、
    Aakash

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

    是的、我确实需要确切地知道该133MHz 来自哪里。 即使使用 TISCI 来请求和配置、芯片硬件仍有其源代码。  

    类似 MAIN_PLL0_HSDIV1的频率是2000MHz、并且除以10、因此它为200MHz。  除非 TRM 手册错误或只是 TISCI 配置、否则不遵循 TRM 并设置不同的值。  

    我没有收到从 ospi_flash_diag 演示项目中执行 SFPD 报告为何不起作用的答案。 我们可以在哪个平台验证负载 SFPD json 是否正常工作?

     您能提供 答案吗?

    此致

    安德烈

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

    是的、我确实需要确切地知道该133MHz 来自哪里。 即使使用 TISCI 来请求和配置、芯片硬件仍有其源代码。  

    类似 MAIN_PLL0_HSDIV1的频率是2000MHz、并且除以10、因此它为200MHz。  除非 TRM 手册有误或仅 TISCI 配置未遵循 TRM 并设置不同的值、否则将执行以下操作。  

    我没有收到从 ospi_flash_diag 演示项目中执行 SFPD 报告为何不起作用的答案。 我们可以在哪个平台验证负载 SFPD json 是否正常工作?

     您能提供 答案吗?

    此致

    安德烈

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

    来自 TRM 的答案是133MHz。  

    请提供答案、我们使用哪一个可行的平台进行"SFPD 从 json"自动加载验证。  

    此致

    安德烈  

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

    无响应?

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

    您好、Andre、

    由于您现在已经了解了时钟规格、因此我将介绍 JSON 加载特性。

     SysConfig 中 JSON 加载按钮的后端只是一个 JSON 解析器。 无论给出何种 JSON 文件、后端都将根据从文件读取的值更新可配置文件。 它归结为 JSON 文件。 为了生成这个文件、我们使用了名为 ospi_flash_diag 的示例应用程序/工具。 诊断使用闪存的 SFDP (串行闪存可发现参数)特性来获得关于闪存的数据。 现在、SFDP 不是最标准化的表。 就 NOR/NAND 闪存而言、可能有许多特定于供应商的习语。 这就是支持定制闪存成为一项挑战的原因。  

    闪存诊断生成的 S28HS512T.json 为什么与您看到的不同、就像我现在所说的和定制闪存指南中提到的、在这种情况下、虚拟周期和写入延迟等一些内容需要进一步改进。 我们希望 OOB 配置正常工作、这就是我们给出可正常工作配置的原因。

    如果您使用的是默认闪存、我想 知道您为什么要在已经有 OOB 支持的情况下完成自定义闪存支持过程?

    此致、
    阿南德·马哈德万·SS

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

    Anand、

      感谢您的答复。  

    1.为什么客户使用 EVM 验证客户闪存支持流程:  

       在客户开始定制自己的设计之前、当然他们希望先检查 TI 提供的功能是否起作用。 默认闪存支持 SFPD。 他们认为我们在我们的 EVM 上实现了该支持功能。 检查是否有效、然后根据价格或其需求选择其他 SPFD 支持的闪存、从而最大程度地减少移植工作量。  这是一个合理的过程。 我不认为这是奇怪的要求。 如果 json load 无法在 TI EVM 上工作、如果您是客户、您是否会接受它?   

    2.从 SFPD 报告和闪存数据表中,8D-8D-8D 协议的读取虚拟周期为24。 默认设置使用25。 我无法解释为什么在我们的器件上、我们无法遵循闪存数据表、需要使用尝试和错误体验。 闪存数据表是否有问题? 或 OSPI 控制器错误?

    我可以有你的评论吗?  

    3、我无法向客户解释的更多问题:

    答:在 TRM 中、有一个读取捕获的方框图。 我们无法找到 OSPI_ICLK 这个引脚、我们想这个引脚是 OSPI_LOOPLBCLKO。 您能确认吗?

    b. 我们还希望 通过禁用 PHY 模式、点击 EVM 来检查读取捕获的方案。

        我们修改 ospi_flash_io_am243x-evm_r5fss0-0_nortos_ti-arm-clang syscfg、使输入时钟源为100MHz、除法器为4。  

        根据计算结果、OSPIO_CLK 为25MHz。 演示代码在 EVM 上运行良好。

        不过、我们将 OSPI_RCLK 更改为200MHz、分频器为8。 测试结果失败。 我们在 flash_nor_ospi.c 中发现、问题发生在 Flash_norOspiReadId  ()上。 读取的数据不正确。  这使我们感到吃惊。 所以我们再做一些测试。  首先,我们 在 Flash_norOspiOpen ()中将 readDataCapDelay 从4修改到15。 已重新编译 driverlib、并尝试不同的组合。  

    下面是显示结果的表:

    根据结果、我们知道外部 OSPI 时钟可以与将分频器设置为4的100MHz 一起使用。 不过、如果我们选择除4之外的分频器、这些分频器都不起作用。 我们无法确定问题来自哪里。 所有这些都在读取芯片 ID 中失败。

    即使 OSPI_OCLK 是25MHz、我们也不明白为什么 RCLK=RCLK/Divider=4 100MHz 有效、而 RCLK=RCLK/Divider=8 200MHz 无效。 是什么让它们与众不同?

    2.为什么有两个因素可以推理捕获点: OPSI _RD_DATA_CAPTURE_REG 中的 SMAPLE_EDGE_SEL_FLD 和 DELAY_FLD

    问题、为什么我们仅在我们的驱动器中调整 DELAY_FLD?

    c.在方框图中、如果我们启用 PHY、看起来来自外部的 RX 数据不会传递到抽头/采样边沿选择方框图。

    但在源代码 ospi_phy.c OSPI_phySetRdDelayTxRxDLL ()中、我们在 PHY 调优过程中设置这两个位字段。 客户要求我们提供正确的信息。 他们认为 TRM 不正确。

    我无法回答所有这些问题。 并且很容易在 AM2434 EVM 上重现问题。 您能帮助吗?

    此致

    安德烈

     

     

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

    您好、Andre、

    1.我之前说过、通过 SFDP 和 JSON 加载支持定制闪存并不是一种准确的方法、因为它高度依赖于闪存并且供应商对这些标准的同意程度不是很严格。 每个人都让这个概念有所不同。 SFDP 只能帮助某一点。 读取由 ospi_flash_diag 生成的 JSON 数据(使用 SFDP) 下载客户代码。  因此、如果有错误、可能闪存中的数据有误。 即使不是这样、八进制 SPI 在较高速度下的时序要求也很棘手、因此需要一些手动干预。 通常情况下、闪存的数据表会更加准确、因此我们在指南中提到过一次使用数据表对生成的值进行交叉检查。 对于 EVM 中的闪存、就是这种情况。 要使其正常工作、需要手动进行一些调整。 这些更改随后被重新添加到 JSON 文件中、这样、如果有人想要开始处理特定闪存、他们可以直接加载该文件、而无需再次运行闪存诊断。

    2.我想我已经回答了上述问题。 SFDP 表中的信息可能不正确、或者可能是由于某些其他条件的变化、我们必须增加/减少建议的虚拟周期值。 这并不意味着任何人都犯了错误。 设置外部闪存可能就像这样复杂。 总之、这是一次性设置。 有了工作配置后、我们就可以将其保存下来。 这就是我们对 S28HS512T 闪存所执行的操作。

    3.答对了。LBCLK 不是外露引脚。 这就是您找不到它的原因。 图来自 IP POV。 不用担心、我会说。

    3. B.通过点击读取捕获是一个稍微复杂的主题。 TRM 中未对其进行全面说明。 我会尽量解释我理解的。 分频值等于分频点的数量。 也就是说、如果分频器值为4、则有4个抽头点。 读取捕获延迟就是我们调整这些抽头偏移的方式、如图所示。 如果只有4个抽头点、0个延迟表示第一个抽头点、1个延迟表示第二个抽头点、依此类推。 在本例中、4个延迟意味着您已经将时钟移动了一个完整周期。 以调整为更好地使用虚拟周期。 RD 采集延迟是在此基础上进行的微调。 您提到200/8配置最初不起作用。 这可能是因为该 RD 采集延迟设置。 我不确定文档或 SysConfig 中是否提到了这一点、但时钟 div 的建议值为4。 如果您确实将 RD 采集延迟扫描更改为0-7、那么200/8应该有效。 尽管如此、我不明白100/4配置为什么不可用。

    4.我想我已经解释了上面的延时字段。 我希望明白为什么需要对其进行调整。 关于采样边沿选择、我需要回到此处的阐述、但如果没记错、当捕获方法为 TAP 时、这个值可能是 TAP、而当使用 PHY 时、它总是需要是下降沿。 我将检查并确认这一点。  

    4. a.是的、在 PHY 模式下会绕过抽头、但如果我记得正确的话、IP 规范中提到的时钟的25%恒定移位值、这就是我们即使在 PHY 模式下也必须循环0-3个抽头点以实现 RD 捕获延迟的原因。 我希望答案是明确的。

    我建议使用默认驱动程序配置、除非特别需要调整这些配置。 如果还有任何其他问题、请告诉我。

    此致、
    阿南德·马哈德万·SS

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

    阿南德

    3b. 遗憾的是、如果 EVM 上的分频器!=4、则 RD 捕获延迟、RCLK 和分频器的所有组合都不起作用。 客户要求提供更清晰的信息以读取捕获。 SPI 模式、读取捕捉边沿和读取捕捉延迟之间的时序关系。  

    4A. 请提供正确的方框图以显示如何 从 PHY 模块进行环回。

      

    基本上、错误的方框图会给现场团队带来很大麻烦、请帮助他们提供正确的方框图。

    它们的目标不仅仅是一个可行的驱动器。 他们希望提高绩效、以便他们需要非常清楚地理解。

    此致

    安德烈

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

    您好、Andre、

    让我来咨询更多的专家、然后再谈一下这个问题。 我将尝试参考我之前介绍过的规格。

    此致、
    阿南德·M

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

    Anand、

      有更新吗?

    此致

    安德烈

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

    您好、Andre、

    我需要更多时间检查一下、规格有一些差异。 但我想、与此同时、他们可以使用当前可用的驱动器开始开发、我们已在支持 PHY 和 DMA 的200 MHz 环境中对其进行了最大性能测试。

    此致、
    阿南德·马哈德万·SS