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> ...]
通用
- cs_on
t_ceasu
- adv_on
t_avdasu, t_ceavd
同步通用
- sync_clk
clk
- 頁面突發訪問
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 詳細資訊(上面的連結)。