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.

[参考译文] RTOS/TMDXIDK5728:Cache_WB 仅向 QSPI 写入64字节

Guru**** 2558250 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/597825/rtos-tmdxidk5728-cache_wb-writes-only-64-bytes-to-qspi

器件型号:TMDXIDK5728

工具/软件:TI-RTOS

您好!

我正在使用 AM572x IDK。 我们将板载 QSPI 闪存与 PDK 3.3配合使用。 我们在带有 cfg 文件中的属性设置的 QSPI 闪存的 MMU 设置中启用了缓存

Mmu.initDescAttrsMeta(attrs1);
attrs1.type = MMU。DescriptionorType_block;//块描述符
attrs1.sharedable = 2; //可重设
的 attattrs1.attatIndx=2; //缓存,正常内存 

我们将使用 PDK 中为 AM572x IDK 提供的闪存 API。 此处的要求是启用具有高速缓存的闪存、但我们需要在写入时将数据写回闪存。 因此,我们在每次写入后调用 cache_wb()指令。

写入闪存的块为256字节。 遇到的问题是、当我们调用 cache_wb 时、写入256个字节后、只有前64个字节被写回闪存、剩余192个字节全部为0xFF (闪存字节的默认擦除状态)。

我们探讨的另一个选项是在写通模式下为闪存启用高速缓存。 根据 SYSBIOS 文档、我需要为此更新 MAIRx 值。 但是、当我查看 ARM A15文档时、没有关于在写通模式下为15的 MAIRx 设置什么值的文档。

这里的任何帮助都将非常有用。

谢谢

此致、

Manmohan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Manmohan、

    您是否可以在此处提供您的代码、以便我们重现问题。 NOR_qspiWrite 在写入操作后是否返回 NOR_PASS。 结果是否更改传输一次完成64字节。

    对于 MMU 配置、是配置 FirstLevelDescriptors 还是次级 LevelDescriptors。 最近、您可能需要在此处查看 GPMC 地址空间配置的报告问题:
      

    过去在 A9 (AM437x)上、当我们希望 QSPI 存储器的 MMU 可高速缓冲时、我们使用了此处应用手册第4.2.2节中所述的设置:
    www.ti.com/.../sprac45a.pdf

    此致、
    Rahul

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

    您好、Rahul、

    我已从 AM5 PDK 3.3.0中添加了更新的 QSPI_BasicExample_idkAM572x_armTestProject 工程。 该应用程序基本上会写入0x8000偏移量并从该偏移量回读。 它已为 QSPI 启用高速缓存  

    程序首先读取、然后写入、然后再次从同一存储器位置回读。 因此、如果您运行应用程序两次、您可以看到、在第二次运行时、它在开始读取时仅会按预期显示前64个字节。 剩余的字节全部为0xFF。

    还附加了来自 UART consolee2e.ti.com/.../6648.logs.txt 的日志

    此外、我正在配置辅助描述符。

    cfg 的完整代码是  

    //描述符属性结构
    var attats1 = new MMU.DescriptionorAttrs ();
    
    Mmu.initDescAttrsMeta(attrs1);
    attrs1.type = MMU.DescriptionorType_block;//块描述符
    attr1.shareable = 2; //可重设
    的 attattrs1.attatIndx=2; //缓存、正常存储器
    
    //为(
    var i=0x5C000000;i < 0x60000000;i = i + 0x00200000){的地址范围内的每个条目设置描述符
    //每个“块”描述符条目跨越2MB 地址范围
    Mmu.setSecondLevelDescMeta(i、i、attrs1);
    } 

    此外、我尝试写入64字节的块、并对64字节执行 cache_wb、这样它就能正常工作。 但它是否也适用于256字节?

    此致、

    Manmohan

    e2e.ti.com/.../am5_5F00_idk_5F00_qspi_5F00_example.zip