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.

[参考译文] TMS570LS3137:EMIF:使用 GPIO 来增加访问大内存的地址线路

Guru**** 2457760 points
Other Parts Discussed in Thread: AM3358

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/634827/tms570ls3137-emif-using-gpio-for-increasing-the-address-lines-to-access-large-memories

器件型号:TMS570LS3137
主题中讨论的其他器件:AM3358

你好

我们要将一个大型异步外部闪存存储器连接到 CPU。  到目前为止、我们有8 MB 闪存、但我们需要将其扩展到64 MB。 问题是 EMIF 无法处理超过8 MB 的地址、因为它只有22条地址线。

 第17.2.6.2节中的 TRM (SPNU499B)指出:“如果需要将大型异步闪存等器件连接到 EMIF,则可以使用 GPIO 引脚来控制闪存器件的上地址线。” 遗憾的是、没有更多详细信息。 我的问题是、此类用例是否有任何限制? 例如、我们必须确保在任何 EMIF 访问外部存储器期间 GPIO 地址线都不会改变。 是否保证 EMIF 仅在访问外部存储器的 LDR 和 STR 指令期间有效(这意味着我们不必采取任何特殊的预防措施)? 或者、是否可以有一些 EMIF 活动"在后台"、如重新填充某些内部高速缓存、即使没有显式 CPU 请求也是如此? 在本例中、我们如何判断 EMIF 处于空闲状态?

谢谢你。

Josef

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

    如果存储器件为16位、则使用 EMIF_Ba1提供最低有效位 A[0]、并且 EMIF_BA0可用作高位地址行 EMIF_A[22]。 要连接64MB 内存、您需要另外2个 GIO 引脚用于高位地址 EMIF_A[23]和 EMIF_A[24]。

    如果您使用 GIO 引脚作为存储器地址、则需要手动切换这些 GIO 以选择4个存储器组:

    GIO1--EMIG_A[24] GIO0-EMIF_A[3] 银行
    0 0 0 第一个16 MB
    0 1 1 第二个16 MB
    1 0 2. 第3个16 MB
    1 1 3. 第4个16 MB
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答、但这不是问题。 我们已经将硬件设计为使用2个 GPIO 进行组切换、就像您所说的那样。 问题在于如何将组切换与 EMIF 活动同步(及时)。 您能回答我在第一篇帖子中的问题吗? 或者、如果他们需要更多的解释、请告诉我。

    谢谢

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

    EMIF 是器件中的外设。 没有显式缓冲或后台活动会转置到命令之外并直接操作 EMIF。 将 GPIO 视为不同组的芯片选择。 因此、如果要访问第一个16MB (bank0)、则将 GPIO_0和 GPIO_1设置为0、因为 Bank1 GPIO = 01b 等 从时序角度而言、您只需在访问所选组之前确保设置这些 GPIO。 从 EMIF 的角度来看、每个内存都将被视为简单的16MB 内存、系统会意识到您正在访问内存中的不同内存组/页。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答。

     

    我之前曾使用过 Sitara AM3358处理器、该处理器还具有 EMIF 外设、但其先进得多(DDR 存储器)。 不可能使 GPIO 与其同步,因此我提出问题的原因是什么。

     

    是否可以再确认一件事:必须将 MPU 存储器类型设置为严格排序的外部存储器地址空间。 这将确保 EMIF 仅在访问外部存储器的 LDR 和 STR 指令期间有效(这意味着我们不必针对与 GPIO 的同步采取任何特殊的预防措施)。 无法使用正常或设备存储器类型。 是这样吗?

     

    谢谢你。

     

    Josef

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

    很抱歉、回答延迟、但可以。 请根据您的解释/理解配置严格排序。