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>: <peripheral timing1>, <peripheral timing2> ...]

  1. 公共

cs_on

t_ceasu

adv_on

t_avdasu, t_ceavd

  1. 同步公共

sync_clk

clk

page_burst_access

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 详细信息(上面的链接)。