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.

[参考译文] TMDSIDK437X:GPMC NOR 型存储器访问

Guru**** 2555630 points
Other Parts Discussed in Thread: AM4377

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/566651/tmdsidk437x-gpmc-nor-type-memory-access

器件型号:TMDSIDK437X
主题中讨论的其他器件:AM4377

您好!

我将定制板与 am4377和 CCS 6.1.2以及 SDK 2.1.1.2一起使用

我对 NOR 类型存储器执行了基本 GPMC 配置、具有 0x08000000芯片基址、没有预取和 ECC 功能。 我现在想访问(写入/读取)存储器,但我没有成功-每次我想写入/读取 GPMC 存储器中的寄存器(从0x0000_0000到0x1FFF_FFFF ) Assert_param 函数都会返回 EXIT()。 您能告诉我在我的项目中要检查/更正的内容吗? 我的数据访问尝试如下所示:

volatile uint16 * pmem16;

pmem16=(uint16*) 0x08000000;

*(pmem16+0x00001)=0x00AA;

通用模块设置看起来很有希望-我启动了 NAND 类型的通信,并通过 GPMCNandDataWrite()函数通过数据总线发送了一些数据。 直接访问数据存储器的 NOR 类型存在问题。  我是否必须执行任何存储器映射或存储器初始化? 我只在 MMU 中声明了 GPMC 存储器:{(void *) 0x00000000、SYS_MMU_可 缓存}、但我不知道它是否正确。

谢谢、

JJ.

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

    GPMC 接口可用于访问 NAND 或 NOR。 配置为0x5000_0000、数据空间为0x0000_0000至0x2000_0000 (512MB)。 如果您的代码适用于 NAND 访问、那么数据空间的 MMU 设置是什么? 它是 SYS_MMU_cacheable 吗? 您是否曾尝试过 SYS_MMU_cacheable | SYS_MMU_BUFFERABLE 是否适用于 GPMC over NOR?

    GPMCNandDataWrite()函数原型如:void GPMCNandDataWrite (uint32_t baseAddr、uint32_t csNum、uint32_t data)、该原型是否适用于 NOR 访问?

    此外、Processor SDK RTOS 支持 GPMC 驱动程序(通过 NAND): software-dl.ti.com/.../index_FDS.html。 您可能会看到它。 在 DRIVER/GPMC 下有 GPMC 测试示例。

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

    对于 AM335x ICE V2 EVM、我们有:本设计中使用的是16Mbit M29W160EB NOR 并行闪存。 此 NOR 闪存连接到处理器的 GPMC 接口、仅作为半字(16位)数据宽度进行连接。

    software-dl.ti.com/.../index_FDS.html 上提供了此 GPMC 或非 GPMC 的测试示例。 这也是一个很好的参考。

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

    尊敬的 Eric:  

    感谢您的回答。

    我想提供一些详细信息:在我的情况下不需要 NAND 访问-这只是尝试查看 GPMC 模块是否已正确初始化。 这就是为什么 NAND 示例对我来说用处有限的原因。 但是、我已经检查了其中的几个以分析配置过程-  SDK_RTOS 中的 nand_lib_gpmc.c 文件确实是最有价值的。 您建议的 NOR 测试示例也非常好-配置和存储器访问看起来与许多 E2E 线程中呈现的方式类似。 我坚信、要么我忘记做一些小事、要么我的配置中存在异常问题...

    对于 GPMC、我也没有尝试过很多 MMU 选项: (sys_MMU_可 缓存)、(SYS_MMU_BUFFERABLE)和两者:(sys_MMU_可 缓存| SYS_MMU_BUFFERABLE)。 在我的案例中、所有结果都具有相同的效果(对于 NAND、结果与 e2e.ti.com/.../566040中报告的结果不相同)

    对于 NAND 访问、我使用了函数 GPMCNandDataWrite();和 GPMCNandAddrWrite();-这两个函数对我来说都是正常的、但在 NAND 访问中、地址线显然不被使用-所有内容都通过数据线。

    我想在地址和数据线路都在使用的地方使用 NOR 访问。 令人惊讶的是 、GPMCNandDataWrite()和 GPMCNandAddrWrite()仍然工作正常、但仅在数据线路上工作(对于 NAND-ACCESS)。 然后、我按照上一个帖子中的说明切换到直接存储器访问、但它给了我硬错误...

    我的观察结果和介绍方式是否正常? 我是否必须提供某些配置寄存器的内容? 我已经尝试过很多基于数十个 E2E 主题的东西、但没有什么对我有用的...

    谢谢、

    JJ.