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.

[参考译文] AM2431:XIP — 基准测试问题

Guru**** 2779465 points

Other Parts Discussed in Thread: SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1615582/am2431-xip---benchmark-issues

器件型号: AM2431
Thread 中讨论的其他器件: SYSCONFIG、UNIFLASH

这涉及 XIP 上的两个不同项目:

  • 基准测试

我尝试对 EVM AM243x 执行一些 XIP 基准测试、并且运行 SDK 中提供的示例基准测试工程。 我看到 SDK 11.02.00.24 与 SDK 10.01.00.32 上的数字更高。  

在 10.01->上、OSPI 输入时钟为 133.33MHz、时钟分频器为 4、采用 DDR 和 PHY 模式。 FIR 滤波器计算 — 最大 /闪存读取执行时间与 SDK 指南中列出的 XIP 样本输出(大约~55000 个周期)相匹配。

在 11.02 上-> OSPI 输入时钟为 166.66MHz、时钟分频器为 4、采用 DDR 和 PHY 模式。

此处使用相同的 FIR 滤波器计算 — 与在~58000 至 59000 个周期下的估计输出相比、最大值约为~85000 至 87000 个周期。

我尝试了时钟分频器值 2、并且“Board_drivers_open ()“中的闪存初始化失败。 我做了一些挖掘,并遇到了这个线程: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1477978/mcu-plus-sdk-am243x-questions-about-ospi-ineffective-8d-mode/5680440?tisearch=e2e-sitesearch&keymatch=AM243x%252525252520OSPI%252525252520speeds#

这列出了 OSPI 控制器的有效配置和使 PHY 模式工作的潜在配置。 请在 SDK 11.02 上确认这也是正确的。

 

根据此线程、当在 SysConfig 中启用 PHY 模式时、将跳过时钟分频器并按原样使用输入时钟。 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1431856/faq-am62x-am62ax-am62px-am62d-q1-am64x-am243x-ospi-phy-tuning-algorithm

因此、当 166.66MHz 为 8D-8D-8D 时、我们应能够实现~300MB/s 带宽。

如何确保我实际使用的是 PHY 模式、另外 OSPI 从 SW/FW 以正确的频率计时?

最新 SDK 中有哪些变化? 这是预期的性能吗?

  • XIP 中的闪存写入

这是我现在的想法。 请告诉我这是否可行。

  1. 通过 SysConfig、将所需的写入函数放入 SRAM 某个部分中的闪存。
  2. 在 MPU 上使用 WR 权限标记所需的闪存区域、但保留其余的 XIP 和 RD 权限。
  3. 当为闪存写入触发中断时、从闪存停止/停止应用程序的执行。
  4. 禁用 DAC 模式。 (可能不需要)
  5. 调用闪存写入函数来执行所需的写入。

谢谢、

Prasanna

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

    尊敬的 Prasanna:

    您能否提供与 XIP 基准测试示例一起使用的 sbl_ospi.cfg 配置文件? 我想检查闪存偏移设置和写入器配置。

    您是否还能分享要测试的 XIP 基准测试实施的链接?

    同时、我将在我的设置中在 MCU+ SDK 11.02 和 10.01 上运行 XIP 基准测试、并检查是否存在差异。

    此致、

    Aryamaan Chaurasia

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

    尊敬的 Aryamaan:

    我确保没有擦除 0x2000000 处的 phy 调优矢量、并将所有图像放在默认偏移处、因此不必担心覆盖矢量。

    XIP 映像使用闪存偏移 0x400000。

    这是我的 sbl_ospi.cfg 文件:

    #首先指向 sbl_uart_uniflash 二进制文件,它作为一个服务器来刷写一个或多个文件
    -- flash-writer=sbl_prebuilt/am243x-evm/sbl_uart_uniflash.release.hs_fs.tiimage

    #发送引导加载程序时、请确保闪存偏移为 0x0。 ROM 期望引导加载程序位于偏移量 0x0 处
    --file=sbl_ospi_am243x-evm_r5fss0-0_nortos_ti-arm-clang/sbl_ospi.debug.hs_fs.tiimage --操作=flash -- flash-offset=0x0

    -file=XIP_TEST/Debug/XIP_TEST.appimage.hs_fs --operation=flash --flash-offset=0x80000
    -file=XIP_TEST/Debug/XIP_TEST.appimage_XIP --operation=FLASH-XIP

    #对 OSPI PHY 调优攻击向量进行编程
    --操作=flash-phy-tuning-data

    这是我用于基准测试的示例工程:  

    C:\ti\mcu_plus_sdk_am243x_11_02_00_24\examples\kernel\dp\xip_benchmark\am243x-evm\r5fss0-0_freeRTOS。

    我只运行一个 R5 内核、而不使用所有其他内核。

    谢谢、

    Prasanna

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

    尊敬的 Prasanna:

    我注意到您在调试模式下运行 XIP 基准测试。

    对于生产目的、我们强烈建议在发布模式下运行示例。

    我已经在释放模式下测试了 R5FSS0-0 内核上的 XIP 基准测试:

    消耗量

    统计数据

    (number

    周期数)

    SDK 中找到
    10.01. 11.02.
    非同步

    最小值

    26741.

    24050

    最大值

    54002.

    48656.

    平均

    29580

    26513

    此外、

    XIP_Benchmark 示例使用 166MHz 的 OSPI 时钟频率(输入时钟分频为 4)、并为两个 SDK 版本启用了 PHY 和 DMA。 有关 XIP 基准测试示例中使用的 OSPI 配置的更多详细信息、请参阅 sbl_ospi 示例。

    ospi_flash_XIP 示例使用 133MHz 的 OSPI 时钟频率、输入时钟分频为 4、并为两个 SDK 版本启用了 PHY 和 DMA。

    关于您的第二个问题、

    闪存写入可在 XIP 模式下正常执行、有关如何执行闪存写入的指导、请参考 ospi_flash_io 示例。

    请注意、为了成功写入闪存、内存区域必须配置为严格顺序、而不是缓存。

    此致、

    Aryamaan Chaurasia

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

    尊敬的 Aryamaan:

    感谢您的回答。 我重新尝试了一些事情,我现在看到甚至难以置信的数字。 这些在多个跑步中都是一致的、不仅仅是一次奇迹。

    -调试/发布构建配置文件之间没有差异。 它们产生相同的数字。

    - OSPI 时无区别 — DMA 打开/关闭。  

    -在新的 SDK 11.02 中-> SysConfig 显示了在 OSPI 配置下打开/关闭“Validate OTP“的选项。 旧的 SDK 版本中不存在该功能。 我认为这是一个不同的,并尝试禁用该选项。 但没有改善。 我仍然认为 OSPI IP 可能存在一些错误配置、导致数字大量增加。

    大约比缓存访问时间长~10 倍。 SRAM @ 1600MB/s 与闪存@ 160MB/s 这意味着 OSPI 可以使用 PHY 在 166.66MHz 上运行、但采用 1S-1S-1S 模式而不是 8D-8D-8D 模式。   

    但更令人困惑的是、与我之前的运行相比、memcpy 也处于较慢的位置。 根据 SBL 配置文件日志、CPU 时钟在 800MHz 处运行。 不知何故 CPU 也减慢了?

    这是我 SBL 中的 OSPI 配置。 我的 XIP 应用根本没有启用 OSPI/QSPI 驱动器。 我完全跳过它们。  

    日志:


    DMSC 固件版本 11.2.5--v11.02.05(花哨 RAT)
    DMSC 固件版本 0xb
    DMSC ABI 修订版 4.0

    RX_buf 0xaf
    kpi_data:[bootloader_profile] CPU 时钟:800.000MHz
    kpi_data:[bootloader_profile]引导介质:NOR SPI 闪存
    kpi_data:[bootloader_profile]引导介质时钟:166.667MHz
    kpi_data:[bootloader_profile]引导映像大小:0 KB
    kpi_data:[bootloader_profile]当前核心:
    r5f0-0
    kpi_data:[bootloader profile] SYSFW init:11299us
    kpi_data:[bootloader profile] System_init:11324us
    kpi_data:[bootloader profile] Drivers_open:1694us
    kpi_data:[bootloader profile] Board_drivers 打开:31057us
    KPI_DATA:【引导加载程序配置文件】Sciclient 获取版本:9990us
    kpi_data:[bootloader profile] CPU load:3354us
    kpi_data:【引导加载程序配置文件】SBL end : 5us
    kpi_data:[bootloader_profile] SBL 总用时:68726us

    图像加载完成、切换到应用程序...

    ### XIP 基准测试###
    FIR:
    24049 周期(代码/数据完全缓存)、
    284667 个周期(未缓存代码/数据)、
    50112 个周期(代码/数据未缓存、共 10 次迭代)
    Memcpy:
    1564 个周期(代码/数据完全缓存)、
    28781 个周期(未缓存代码/数据)
    4295 个周期(代码/数据未缓存、共 10 次迭代)
    所有测试均已通过!!

    谢谢、

    Prasanna

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

    尊敬的 Prasanna:

    我观察到两个设置的最小周期(完全缓存)是相同的。 但是、最大周期数的差异表明闪存配置存在潜在问题、因为在您的情况下、闪存读取速度可能会显著降低。

    为了帮助进行调查、您能否确认 AM243x EVM 是否配备了串行 NOR OSPI 闪存 (S28HS512T)?

    此外、为了检查闪存配置、您是否想共享 SBL OSPI 示例中的 SysConfig 文件? 您是否对 XIP 基准测试示例进行了任何修改、或者是否在运行默认示例而未进行任何更改?

    关于 Validate OTP 选项、启用该选项可能会引入轻微的性能开销、但除非验证过程失败、否则不应导致速度大幅减慢。

    此致、

    Aryamaan Chaurasia

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

    尊敬的 Aryamaan:

    是的、我将 EVM 与上述板载闪存器件一起使用。 我预计在启用 OTP 验证时产生的开销也会非常小。  

    我尚未对 XIP 基准测试代码/配置进行任何更改。  

    这是我的 SBL syscfg 文件:

    e2e.ti.com/.../0451.example.zip

    谢谢、

    Prasanna

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

    尊敬的 Prasanna:

    您是否可以尝试使用新安装的 MCU+ SDK 11.02?其中包括未更改的 SBL OSPI 示例和 XIP 基准测试示例? 这将帮助我们隔离问题、因为 SBL OSPI 代码保持不变。

    我已经测试了未更改的 SBL OSPI 示例和 XIP 基准测试示例、但无法重现您遇到的问题。

    谢谢。此致、

    Aryamaan Chaurasia

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

    尊敬的 Aryamaan:

    我重新运行了 11.02 SDK 中的默认 sbl_ospi 映像、发现这些数字与您的样片相匹配。  在我切换到我的 SBL_OSPI 的那一刻、我看到报告的数字很差。  

    根据您对 SBL syscfg 文件的检查、您是否看到任何与基本 SBL OSPI 不匹配的异常值/明显设置?

    首先、我想了解这是编译时问题、运行时问题、还是两者的组合:

    -编译器设置/编译环境/ SysConfig 相关问题。 甚至可能是版本不同。

    - OSPI 速度/模式、PHY 未正确启用或使用、OTP 验证失败、重试逻辑需要更长时间才能完成。

    谢谢、

    Prasanna

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

    尊敬的 Prasanna:

    我观察到、您的 SBL OSPI 示例中的存储器配置与原始 SBL OSPI 不同、尤其是添加了一个闪存部分。 您能否分享完整的 SBL OSPI 示例? 您是否在 SBL OSPI 示例中执行任何闪存操作?

    此致、

    Aryamaan Chaurasia

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

    尊敬的 Aryamaan:

    我昨天的实验的快速更新:

    -是的。 闪存中有一些 env 变量。 这由 SBL 读取。 我已经删除了 SBL 代码的闪存读取部分、并 完全删除了 MPU 区域和存储器部分。 我让 XIP 应用将 MPU 区域配置为缓存状态并允许执行代码。 XIP 性能仍然没有改善。  

    -我试图将 OSPI 时钟更改为 133.33MHz ,但由于某种原因,这不起作用,基准测试根本不运行。 我想看看基准数据是否以这种速度减慢、以缩小问题的范围。  

    -我从 JTAG 验证 OSPI 寄存器实际上是正确设置为 8D-8D-8D 模式。  OSPI_CONFIG_REG 寄存器、 OSPI_DEV_INSTR_RD_CONFIG_REG 和 OSPI_DEV_INSTR_WR_CONFIG_REG 。 我在这里没有看到任何问题。

    -我对构建 env 做了一些快速检查,并注意到我正在使用 SysConfig 1.25 ,而 SDK 示例显示 1.21。 我进一步进行了探测、并在 SysConfig 中找到了 TargetConfigs 工具包。 这与 SDK 附带的 sbl_ospi 示例不同。 此变体是否做出任何默认假设?

    谢谢、

    Prasanna

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

    尊敬的 Prasanna:

    1)。 正确。 对于 XIP 应用、应将闪存区域标记为“缓存“并启用以允许执行代码。 但是、这是 XIP 基准测试示例的默认设置。 因此、这不是问题。

    2)。 使用 OSPI 时钟连接到 133.33MHz 时、可获得以下数字:

    基准测试

    统计数据

    (number

    周期数)

    SDK 中找到
    11.02.
    FIR

    最小值

    24050

    最大值

    51734

    平均

    26873.

    Memcpy 最小值

    1564

    最大值 4259.
    平均 1841

    最大 CPU 周期数的基准测试结果确实会更慢。

    3)。 您还能否在调试 XIP 基准测试示例期间验证 OSPI 寄存器的值?

    4)。 SysConfig 版本不应该是问题、因为我也在使用 1.25 版本。

    您还能否确认为您的闪存配置的读取和 CMD 虚拟周期数? 这存在于 SysConfig 的“Protocol Enable Configuration“部分。

    此致、

    Aryamaan Chaurasia

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

    尊敬的 Aryamaan:

    我现在正在研究其他高优先级任务。 我无法在此项目上取得进展。 这将是一段时间,直到我回到这个项目。

    您能澄清一点吗:在 CCS 中、对 syscfg 进行任何更改后、我总是点击“Rebuilding project“、希望这会为 DMSC 的 SCI 驱动程序重新生成所需的 PM/DM cfg。我不确定 DMSC 是否在某种程度上没有为 OSPI 正确计时。   

    以下是 SysConfig 中的快速闪存配置:  

       

    谢谢、

    Prasanna

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

    尊敬的 Prasanna:

    在 CCS 中、对 syscfg 进行任何更改后、我始终点击“Rebuilding project“、希望这会为 DMSC 的 SCI 驱动程序重新生成所需的 PM/DM cfg。我不确定 DMSC 是否无法为 OSPI 正确计时。   [/报价]

    这应该可以正常工作。 假设板载闪存也适合您、已连接的闪存配置均正确。

    我现在正在研究其他高优先级任务。 我无法在此项目上取得进展。 这将是一段时间,直到我回到这个项目。

    我很期待这件事。

    谢谢、

    Vaibhav

    [/quote]