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> ...]
公共
- cs_on
t_ceasu
- adv_on
t_avdasu, t_ceavd
同步公共
- sync_clk
clk
- page_burst_access
t_bacc
- clk_activation
t_ces, t_avds
读取异步复用
- 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
读取异步非复用
- 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
读取同步复用
- 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
读取同步非复用
- 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
写入异步复用
- 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
写入异步非复用
- 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
写入同步复用
- 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
写入同步非复用
- 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 详细信息(上面的链接)。