GPMC (通用用途存储控制器)

GPMC 是一种统一的存储控制器,专门用于连接外部存储设备,如

  • 异步 SRAM 存储器和特定于应用的集成电路设备。

  • 异步、同步和页面模式突发 NOR 闪存设备 NAND 闪存

  • 伪 SRAM 设备

GPMC 位于德州仪器 SoC(基于 OMAP)上。IP 详细信息: https://www.ti.com/lit/pdf/spruh73 第 7.1 节

GPMC 通用时序计算:

GPMC 具有必须编程的时序,以便外设正常工作,而外设具有另一组时序。 为了让外设与 gpmc 一起工作,必须将外设时序转换为 gpmc 可以理解的形式。 它的转换方式取决于连接的外设。 此外,某些 gpmc 时序取决于 gpmc 时钟频率。 因此,开发了一种通用时序例程来实现上述要求。

通用例程提供了一种从 gpmc 外设时序计算 gpmc 时序的通用方法。 必须使用连接到 gpmc 的外设的数据手册中的时序来更新 struct gpmc_device_timings 字段。 一些外设时序可以以时间或周期为单位提供,已经提供了处理这种情况的规定(请参阅 struct gpmc_device_timings 定义)。 可能会发生外设数据手册中指定的时序不在时序结构中。 在这种情况下,尝试将外设时序与可用的时序相关联。 如果这不起作用,请尝试添加外设所需的新字段,指导通用时序例程处理它,确保它不会破坏任何现有内容。 然后可能存在外设数据手册未提及 struct gpmc_device_timings 的某些字段的情况,将这些条目归零。

通用时序例程已经过验证,可以正确地在多个 onenand 和 tusb6010 外设上工作。

友情提示:通用时序例程是基于对 gpmc 时序、外设时序、可用的自定义时序例程的理解、一种没有大多数数据手册和硬件的逆向工程(确切地说,主线中没有自定义时序例程支持的任何东西)以及通过模拟开发的。

gpmc 时序对外设时序的依赖性

[<gpmc_timing>: <外设时序 1>, <外设时序 2> ...]

  1. 通用

cs_on

t_ceasu

adv_on

t_avdasu, t_ceavd

  1. 同步通用

sync_clk

clk

页面突发访问

t_bacc

clk_activation

t_ces, t_avds

  1. 读取异步复用

adv_rd_off

t_avdp_r

oe_on

t_oeasu, t_aavdh

访问

t_iaa, t_oe, t_ce, t_aa

rd_cycle

t_rd_cycle, t_cez_r, t_oez

  1. 读取异步非复用

adv_rd_off

t_avdp_r

oe_on

t_oeasu

访问

t_iaa, t_oe, t_ce, t_aa

rd_cycle

t_rd_cycle, t_cez_r, t_oez

  1. 读取同步复用

adv_rd_off

t_avdp_r, t_avdh

oe_on

t_oeasu, t_ach, cyc_aavdh_oe

访问

t_iaa, cyc_iaa, cyc_oe

rd_cycle

t_cez_r, t_oez, t_ce_rdyz

  1. 读取同步非复用

adv_rd_off

t_avdp_r

oe_on

t_oeasu

访问

t_iaa, cyc_iaa, cyc_oe

rd_cycle

t_cez_r, t_oez, t_ce_rdyz

  1. 写入异步复用

adv_wr_off

t_avdp_w

we_on, wr_data_mux_bus

t_weasu, t_aavdh, cyc_aavhd_we

we_off

t_wpl

cs_wr_off

t_wph

wr_cycle

t_cez_w, t_wr_cycle

  1. 写入异步非复用

adv_wr_off

t_avdp_w

we_on, wr_data_mux_bus

t_weasu

we_off

t_wpl

cs_wr_off

t_wph

wr_cycle

t_cez_w, t_wr_cycle

  1. 写入同步复用

adv_wr_off

t_avdp_w, t_avdh

we_on, wr_data_mux_bus

t_weasu, t_rdyo, t_aavdh, cyc_aavhd_we

we_off

t_wpl, cyc_wpl

cs_wr_off

t_wph

wr_cycle

t_cez_w, t_ce_rdyz

  1. 写入同步非复用

adv_wr_off

t_avdp_w

we_on, wr_data_mux_bus

t_weasu, t_rdyo

we_off

t_wpl, cyc_wpl

cs_wr_off

t_wph

wr_cycle

t_cez_w, t_ce_rdyz

注意

许多 gpmc 时序依赖于其他 gpmc 时序(一些 gpmc 时序完全依赖于其他 gpmc 时序,这是上面缺少某些 gpmc 时序的原因),这将导致外设时序间接依赖于除上述之外的其他 gpmc 时序,有关更多详细信息,请参阅时序例程。 要了解这些外设时序对应于什么,请参阅 struct gpmc_device_timings 定义中的说明。 对于 gpmc 时序,请参阅 IP 详细信息(上面的链接)。