Lưu ý
Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.
- Bản gốc:
- Người dịch:
Google Translate (machine translation)
- Phiên bản gốc:
8541d8f725c6
Cảnh báo
Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.
GPMC (Bộ điều khiển bộ nhớ đa năng)¶
GPMC là bộ điều khiển bộ nhớ hợp nhất dành riêng cho giao tiếp bên ngoài thiết bị bộ nhớ như
- SRAM không đồng bộ giống như bộ nhớ và ứng dụng cụ thể được tích hợp
các thiết bị mạch.
Thiết bị flash NOR không đồng bộ, đồng bộ và chế độ trang đèn flash NAND
Thiết bị Pseudo-SRAM
GPMC được tìm thấy trên SoC của Texas Instruments (dựa trên OMAP) Chi tiết IP: ZZ0000ZZ phần 7.1
Tính toán thời gian chung GPMC:¶
GPMC có một số thời gian nhất định phải được lập trình để phù hợp hoạt động của thiết bị ngoại vi, trong khi thiết bị ngoại vi có một bộ khác thời gian. Để có thể làm việc ngoại vi với gpmc, định thời gian ngoại vi phải dịch sang dạng gpmc có thể hiểu được. Cách nó phải như vậy dịch phụ thuộc vào thiết bị ngoại vi được kết nối. Ngoài ra còn có một sự phụ thuộc của thời gian gpmc nhất định vào tần số đồng hồ gpmc. Do đó một thói quen tính thời gian chung đã được phát triển để đạt được các yêu cầu trên.
Quy trình chung cung cấp một phương pháp chung để tính toán thời gian gpmc
từ thời gian ngoại vi gpmc. Các trường struct gpmc_device_timings phải
được cập nhật thời gian từ biểu dữ liệu của thiết bị ngoại vi
đã kết nối với gpmc. Một số bộ định thời ngoại vi có thể được cung cấp
theo thời gian hoặc theo chu kỳ, việc cung cấp để xử lý tình huống này đã được
được cung cấp (tham khảo định nghĩa struct gpmc_device_timings). Có thể vậy
xảy ra trường hợp không có thời gian được chỉ định bởi biểu dữ liệu ngoại vi
trong cấu trúc thời gian, trong kịch bản này, hãy thử tương quan giữa các thiết bị ngoại vi
thời gian theo thời gian có sẵn. Nếu điều đó không hiệu quả, hãy thử thêm một cái mới
trường theo yêu cầu của thiết bị ngoại vi, hướng dẫn thói quen tính thời gian chung để
xử lý nó, đảm bảo rằng nó không phá vỡ bất kỳ thứ gì hiện có.
Sau đó có thể có trường hợp bảng dữ liệu ngoại vi không đề cập đến
một số trường nhất định của struct gpmc_device_timings, loại bỏ các mục đó.
Quy trình định giờ chung đã được xác minh là hoạt động bình thường trên nhiều thiết bị ngoại vi của onenand và tusb6010.
Lưu ý: quy trình tính thời gian chung đã được phát triển dựa trên về sự hiểu biết về thời gian gpmc, thời gian ngoại vi, có sẵn thói quen định thời gian tùy chỉnh, một loại kỹ thuật đảo ngược không có hầu hết các bảng dữ liệu và phần cứng (chính xác là không có bảng dữ liệu nào được hỗ trợ trong tuyến chính có quy trình định giờ tùy chỉnh) và bằng mô phỏng.
phụ thuộc thời gian gpmc vào thời gian ngoại vi:
[<gpmc_timing>: <thời gian ngoại vi1>, <thời gian ngoại vi2> ...]
chung
- cs_on:
t_ceasu
- lời khuyên:
t_avdasu, t_ceavd
đồng bộ chung
- đồng bộ_clk:
cạch
- trang_burst_access:
t_bacc
- clk_activation:
t_ces, t_avds
đọc kết hợp không đồng bộ
- adv_rd_off:
t_avdp_r
- ôi_on:
t_oeasu, t_avdh
- truy cập:
t_iaa, t_oe, t_ce, t_aa
- rd_cycle:
t_rd_cycle, t_cez_r, t_oez
đọc không đồng bộ không trộn lẫn
- adv_rd_off:
t_avdp_r
- ôi_on:
t_oasu
- truy cập:
t_iaa, t_oe, t_ce, t_aa
- rd_cycle:
t_rd_cycle, t_cez_r, t_oez
đọc đồng bộ hóa
- adv_rd_off:
t_avdp_r, t_avdh
- ôi_on:
t_oeasu, t_ach, cyc_aavdh_oe
- truy cập:
t_iaa, cyc_iaa, cyc_oe
- rd_cycle:
t_cez_r, t_oez, t_ce_rdyz
đọc đồng bộ không trộn lẫn
- adv_rd_off:
t_avdp_r
- ôi_on:
t_oasu
- truy cập:
t_iaa, cyc_iaa, cyc_oe
- rd_cycle:
t_cez_r, t_oez, t_ce_rdyz
viết không đồng bộ
- Adv_wr_off:
t_avdp_w
- we_on, wr_data_mux_bus:
t_weasu, t_aavdh, cyc_aavhd_we
- chúng tôi_off:
t_wpl
- cs_wr_off:
t_wph
- wr_cycle:
t_cez_w, t_wr_cycle
viết không đồng bộ không trộn lẫn
- Adv_wr_off:
t_avdp_w
- we_on, wr_data_mux_bus:
t_weasu
- chúng tôi_off:
t_wpl
- cs_wr_off:
t_wph
- wr_cycle:
t_cez_w, t_wr_cycle
viết đồng bộ muxed
- Adv_wr_off:
t_avdp_w, t_avdh
- we_on, wr_data_mux_bus:
t_weasu, t_rdyo, t_aavdh, cyc_aavhd_we
- chúng tôi_off:
t_wpl, cyc_wpl
- cs_wr_off:
t_wph
- wr_cycle:
t_cez_w, t_ce_rdyz
ghi đồng bộ không trộn lẫn
- Adv_wr_off:
t_avdp_w
- we_on, wr_data_mux_bus:
t_weasu, t_rdyo
- chúng tôi_off:
t_wpl, cyc_wpl
- cs_wr_off:
t_wph
- wr_cycle:
t_cez_w, t_ce_rdyz
- Lưu ý:
Nhiều cách định thời của gpmc phụ thuộc vào các cách định thời của gpmc khác (một số thời gian gpmc hoàn toàn phụ thuộc vào thời gian gpmc khác, lý do là một số thời gian gpmc bị thiếu ở trên) và nó sẽ dẫn đến sự phụ thuộc gián tiếp của thời gian ngoại vi vào thời gian gpmc khác với đã đề cập ở trên, hãy tham khảo lịch trình thời gian để biết thêm chi tiết. Để biết những gì những thời gian ngoại vi này tương ứng với, vui lòng xem giải thích trong định nghĩa cấu trúc gpmc_device_timings. Và để biết thời gian gpmc hãy tham khảo Chi tiết IP (liên kết ở trên).