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 詳細資訊(上面的連結)。