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.

[参考译文] OSPI-AM243X:有关 MCU-PLUS-SDK 无效8D 模式的问题

Guru**** 2460850 points
Other Parts Discussed in Thread: SYSCONFIG

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

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

器件型号:MCU-PLUS-SDK AM243X
主题中讨论的其他器件:SysConfig

工具与软件:

尊敬的专家:

我们在8d-8d-8d 模式下测试了 OSPI DQS/DS/CLK 引脚的闪存读取波形、发现波形效率很低。 目前有什么改进方法、是否有更新 SDK 的计划?

#1。  读取 x 个连续的字节、将触发 x 次传输、而不是1次

#2。 每次通信尽管仅读取1个字节、但实际上会触发10个字节的 CLK。

问题#1和#2显示在下图中:从 ospi 闪存读取4个字节的波形。

事实上,一次 ospi 转移就足够了。

# 3. 默认虚拟周期是在低频(25MHz)下进行长牵引。 当25MHz、25->6、11->0足以。时

# 4. 不支持高频。 修改高于50MHz 的 OSPI 频率(例如100MHz (PHY/2))并启用200MHz 模式、工程无法工作。 目前不支持 PHY 模式和高频、是否有何时支持的计划?

https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/DRIVERS_OSPI_HLD_PAGE.html

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

    您好!

    我想了解您的设置。

    执行以下操作之一:

    1. AM243 SoC 定制电路板(具有 OSPI 闪存器件 S28HS512T)。
    2. 或者具有像 S28HS512T 这样的 OSPI 闪存器件的 AM243 TI EVM。
    # 4. 不支持高频。 修改高于50MHz 的 OSPI 频率(例如100MHz (PHY/2))并启用200MHz 模式、工程无法工作。 目前不支持 PHY 模式和高频、是否有计划何时支持?[/QUOT]

    您能继续尝试一下组合 166 MHz 时钟频率和时钟分频器值为4 然后启用 PHY 模式。 如果它可以与我建议的组合配合使用、请告诉我。

    [报价 userid="589657" url="~/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 "]#2。 每个通信尽管仅读取1个字节、但实际上会触发10个字节的 CLK。

    我需要了解这意味着什么、我假设这可能是以下两种情况中的任何一种:

    假设8位 unsigned int 格式的源偏移值如下所示:1、2、3、4、5 6、7、8、9、10、 11、12、

    1. 第一种情况是、您可能希望读取1个字节、这也是值1、但您最终在波形上看到了值1、2、3、4、...、10。
    2. 第二种情况是、您可能希望读取1个字节、这是值1、但您最终在波形上看到值1读取10次。  
    [报价用户 id="589657" url="~/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 ]#1.  读取 x 个连续的字节、将触发 x 次传输、而不是1次[/报价]

    由于使用 NOR 闪存部件、我假设您要执行直接读取操作。 如果愿意、那么对于大小大于1KB 的传输、则使用 DMA、否则对于小于1KB 的传输、我们假设对于32字节、您会看到32字节传输了32次、而不是波形上的1次?

    期待您的答复。

    此致、
    Vaibhav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    • AM243 SoC 定制电路板(具有 OSPI 闪存器件 S28HS512T)。
    • 或者具有像 S28HS512T 这样的 OSPI 闪存器件的 AM243 TI EVM。
    [报价]

    我们的定制电路板 ospi 闪存都是 S28HL512T (3.3V)、我们在 EVM 板 S28HS512T (1.8V)上进行了测试

    您能继续尝试一下的组合吗 166 MHz 时钟频率和时钟分频器值为4 然后启用 PHY 模式。 请告诉我它是否适用于我建议的组合。

    div4 = 41.5MHz < 50MHz 时的166MHz 可正常工作。 启用 PHY 模式不工作、INITIAL 失败。

    假设8位 unsigned int 格式的源偏移值如下所示:1、2、3、4、5 6、7、8、9、10、 11、12、

    1. 第一种情况是、您可能希望读取1个字节、这也是值1、但您最终在波形上看到了值1、2、3、4、...、10。
    2. 第二种情况是、您可能希望读取1个字节、这是值1、但您最终在波形上看到值1读取10次。  
    [报价]

    第一种情况。

    假设您在使用 NOR 闪存器件时正在执行直接读取操作。 如果是、则对于大小大于1KB 的传输、将使用 DMA、否则对于小于1KB 的传输、我们假设32字节将传输32个字节、而不是波形上的1次?[/QUOT]

    是的, 调试并发现它只是 一个 memcpy()。 32字节的32次传输。

    我遇到了一个新问题:

    从 SDK10导入"Hello world"、在 SysConfig 中启用闪存、Flash_READ () 64字节失败、EVM 板调试日志如下图所示、同时 SDK9正常。 如何解决此问题?

    示例代码(hello_world.c):

    #include <stdio.h>
    #include <kernel/dpl/DebugP.h>
    #include "ti_drivers_config.h"
    #include "ti_drivers_open_close.h"
    #include "ti_board_open_close.h"
    
    #include "FreeRTOS.h"
    #include "task.h"
    #include <string.h>
    
    
    static uint8_t buff[1<<12] __attribute__((aligned(128U)));
    void ospi_waveform_test(void)
    {
        uint32_t addr = 0;
        uint32_t length = 0;
    
    
        for (;;)
        {
            for (int i = 0; i <= 12; i++)
            {
                memset(buff, 0x00, sizeof(buff));
    
                length = (1UL << i);
    
                Flash_read(gFlashHandle[CONFIG_FLASH0], addr, buff, length);
    
                DebugP_log("\r\n[0x%X,%d]:\t %02X %02X %02X %02X\r\n", addr, length, buff[0], buff[1], buff[2], buff[3]);
    
                vTaskDelay(2000/portTICK_PERIOD_MS);
            }
    
            addr = 0x80000 - addr;
    
        }
    }
    
    
    void hello_world_main(void *args)
    {
        /* Open drivers to open the UART driver for console */
        Drivers_open();
        Board_driversOpen();
    
        DebugP_log("Hello World!\r\n");
    
        ospi_waveform_test();
    
        Board_driversClose();
        Drivers_close();
    }
    

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

    尊敬的 Vaibhav:

    #1。 对于 PHY 模式、是否需要如 Linux SDK 所述将 PHY 模式刷写到闪存?

    https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/10_01_10_04/exports/docs/linux/Foundational_Components U-Boot/UG-QSPI.html

    PHY 校准

    PHY 校准可实现更高的读取性能。 要启用 PHY、必须在最后一次擦除扇区开始时将 PHY 校准模式刷写到 OSPI。 对于 Cypress S28HS512T 闪存、该地址位于0x3FC0000。 ‘名称应为"ospi.phypattern"、因为驱动程序在 PHY 校准前查找该名称。

    从下载包含 phy 模式 here的二进制文件。 以下命令可用于刷写 PHY 模式、并根据所使用的闪存来指示模式的位置:

    #2。 是否在使用哪个 MCU SDK 的 EVM 板上进行了 PHY 模式测试?

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

    尊敬的 Tony 和 Liang:

    请花一点时间阅读以下两个常见问题解答。

    常见问题解答1 (18分钟的阅读时间): https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1431856/faq-am62a7-ospi-phy-tuning-algorithm

    常见问题2 (读取时间为5分钟): https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1459826/faq-sk-am64b-what-is-the-purpose-of---operation-flash-phy-tuning-data

    根据您发送的代码:

    Flash_READ (gFlashHandle[CONFIG_FLASH0]、addr、buffer、length);

    如果我没弄错、那么您只需从闪存偏移0x00读取64个字节。

    让我在我结束时尝试一下、我会在某个时间更新您的信息。

    此致、

    Vaibhav

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

    您好!

    我习惯从0x00开始读取4096个字节。 我使用了顶层 API Flash_READ ()。 这对我来说是有效的、我能够读取价值。 请注意、闪存偏移0x0处的值本质上将是引导加载程序映像的前几个字节。

    此致、

    Vaibhav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="53612" url="~/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/5678968 #5678968"]我厌倦了从0x00开始读取4096个字节。 我使用了顶层 API Flash_READ ()。 这对我来说是可行的,我能够读出这个价值。[/报价]

    我在 sdk9和 sdk10 sbl_ospi 上测试了上面的代码,都能工作,但在 SDK10应用程序级别它不能工作,这可能是什么原因?

    在 启用了166MHz 和 phy 的 sbl_ospi 上、我可以捕获166MHz clk、因此我认为支持 phy 模式。 但在应用级别、PHY 模式异常。

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

    尊敬的梁先生/女士:

    我下面的评论是从应用层面来看的。

    但是在 SDK10应用程序级别它不起作用、可能是什么原因?

    闪存读取失败还是闪存初始化失败? 如果您缩小范围、那将很有帮助。 您能否确认以下哪项正确:

    1. 第一种可能:您是否可以检查 流是否 从 Board_driversOpen () API 调用返回? 或者它自己卡在那里、闪存初始化失败。
    2. 第二种可能:流程从 Board_driversOpen ()返回,但最终无法使用 Flash_READ ()从闪存读取内容。

    此外、请查看以下支持的组合:

    此致、
    Vaibhav

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

    在调用具有64字节的 memcpy 时、Debug and Found 然后未崩溃、日志显示在此处:

    [报价 userid="589657" url="~/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/5677550 #5677550"]

    从 SDK10导入"Hello world"、在 SysConfig 中启用闪存、Flash_READ () 64字节失败、EVM 板调试日志如下图所示、同时 SDK9正常。 如何解决此问题?

    [报价]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="589657" url="~/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/5677550 #5677550"]

    从 SDK10导入"Hello world"、在 SysConfig 中启用闪存、Flash_READ () 64字节失败、EVM 板调试日志如下图所示、同时 SDK9正常。 如何解决此问题?

    [报价]

    如果启用 DMA:

    否则:

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

    您好、Vaibhav、 我发现如果在"MPU Armv7"(CONFIG_MPU_REGION4)中删除闪存配置、包括 ospi phy 模式并读取64字节、则闪存配置可行。 基础是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="589657" url="~/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/5680649 #5680649"]我发现如果在"MPU Armv7"(CONFIG_MPU_REGION4)中删除闪存配置、包括 ospi phy 模式并读取64字节、该方法可行。 基础是什么?

    如果您删除 CONFIG_MPU_REGIONAL 4并未启用 PHY 模式、您仍然可以读取吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您删除 CONFIG_MPU_REGION4且未启用 phy 模式、您仍能阅读吗?

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

    因此、删除此配置会有所帮助。

    默认情况下、当您打开 SDK 附带的其中一个 OSPI 应用程序时、我们会看到该区域 CONFIG_MPU_region4未定义、这就说明了这一点。 但作为一项安全措施、我会尝试在我的工作示例中包含该区域、并检查它是否对我也失败。 如果失败、我可以收集一些解释并告诉您。

    感谢您的耐心。

    此致、

    Vaibhav

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

    好的、期待您的更新。

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

    尊敬的梁先生/女士:

    我刚刚进行了检查、当您将区域从0x60000000配置为要缓存时、处理器从缓存的存储器中读取数据、并且无法从闪存中获取最新的数据、因此会导致您看到数据中止等问题。

    因此、请继续并删除配置。

    此致、

    Vaibhav