世平集團針對 DDR 相關技術整理了一系列博文,下圖為詳細的博文索引架構;筆者希望能夠透過這些博文協助大家更了解如何在 i.MX8 相關平台上使用 DDR,未來筆者也會持續更新此系列的相關博文還懇請支持!而本篇博文會針對 DDR 相關技術索引架構中的【ATU Book-i.MX8 系列-DDR】NXP i.MX8M Mini 之替換為 Winbond 512 MB DDR 方法大公開 ( 上 ) 這篇文章做介紹,本篇博文會對 DDR 顆粒的參數填寫做敘述接下來讓我們開始進入正題吧!
市面上有很多家記憶體廠商,那要怎麼在 NXP 的平台上替換不同廠牌的記憶體顆粒呢? 而替換記憶體顆粒以後又要怎麼確保這顆記憶體可以正常使用呢? 對於此問題 NXP 提供了 Register Programming Aid ( RPA ) 文件與 DDR Stress Test Tool 來解決以上困擾。我們可以將 DDR 的參數填入 RPA 文件中,再透過 DDR Stress Test Tool 做 Calibration 與 Stress Test 驗證填入之參數沒問題,並重新編譯程式等一系列操作後就可以在 NXP 平台上使用不同廠商的記憶體了。本博文將會以使用 Winbond 的 512 MB DDR 為範例,實際帶領各位讀者做以下示範:
(1) 將 Winbond 的 512 MB DDR 參數填入 RPA 文件。
(2) 透過 DDR Stress Test Tool 完成 Calibration,並佐證參數配置沒問題。
接著請各位跟著筆者的腳步一步步完成這些操作吧!
a. 系統流程圖
本篇博文會依照以下議題做介紹及探討:
(1) 如何填寫 RPA 文件。
(2) 透過 DDR Stress Test Tool 做 Calibration 及壓力測試。
(3) 最後產出 "lpddr4_timing.c"。
值得一提的是 Datasheet 中還會有一頁在敘述 DDR 顆粒的組態資訊,而這些資訊包含:
(1) 此顆粒有幾個 Die:
從 Datasheet 中可得知本顆粒有 2 個 Die。而 Die 的數量跟 DDR 顆粒內部線路接法和 Pin 腳有關。
(2) 總容量為多少:
本顆粒總容量為 4 Gb ( 512 MB )。
(3) 幾個 Channel:
本顆粒有 2 組 Channel。基本上 1 個 Die 會接到 1 組 Channel。
(4) Bank 數量:
本顆粒每 1 Channel 上有 8 個 Bank。而 Bank 再往下拆分,就是各個儲存單元;橫向的稱為 Row,直向的稱為 Column。
(5) Bank Address 數量:
本顆粒 的 Bank Address 數量是 3 ( B0 ~ B2 )。
(6) Row Address 數量:
本顆粒 的 Row Address 數量是 14 ( R0 ~ R13 )。
(7) Column Address 數量:
本顆粒 的 Column Address 數量是 10 ( C0 ~ C9 )。
a. 環境設置
請至 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX-8M-Family-DDR-Tool-Release/ta-p/1104467 下載最新版的 DDR Stress Test Tool。 ( 筆者撰寫此文章時最新版為 3.10 版,所以選擇 mscale_ddr_tool_v310_setup.exe.zip )。
接著請點擊 i.MX8MMini (m845S) DDR Register Programming Aid (RPA)。
本博文的實作平台是 i.MX8M Mini 並且使用的是 LPDDR4 的顆粒,請對應平台下載最新版的 LPDDR4 RPA 文件。 ( 筆者撰寫文件時的最新版本是 16 版,所以選 MX8M_Mini_LPDDR4_RPA_v16.xlsx )
先將下載來的 MX8M_Mini_LPDDR4_RPA_v16.xlsx 重新命名為 MX8M_Mini_LPDDR4_RPA_v16_Winbond_512MB.xlsx。
開啟 MX8M_Mini_LPDDR4_RPA_v16_Winbond_512MB.xlsx 後,點選 Sheet "Register Configuration"。
接下來我們需要搭配 Winbond 的 Datasheet 對 RPA 文件進行配置;基本上 RPA 文件中的橘色背景處就是我們需要修改的地方。
搭配 Datasheet 設置 "Density per channel per chip select (Gb)" 欄位。
搭配 Datasheet 設置 "Number of Chip Selects used" 欄位。
搭配 Datasheet 設置 "ROW" 與 "COLUMN" 欄位。
配 Datasheet 設置 "Number of BANK addresses" 欄位。
以下將會敘述如何將稍早修改的 RPA 文件轉成 ".ds" 檔。而存為 ".ds" 檔的目的是為了讓 DDR Stress Test Tool ( MSCALE_DDR_Tool.exe ) 可以 Load DDR 顆粒參數並做 Calibration。
請在 Excel 中切換到 "DDR Stress Test Script" 這個 Sheet 以後,全部選取再按右鍵複製。
將複製的內容貼到 ".ds" 去。筆者的做法是先建立了一個 txt 檔之後,再貼入上述複製的內容最後把 txt 重新命名為 "MX8M_Mini_LPDDR4_RPA_v16_Winbond_512MB.ds"。
先將下載來的 "mscale_ddr_tool_v310_setup.exe.zip" 解壓縮並執行 "mscale_ddr_tool_v310_setup.exe" 後,最終可取得 "mscale_ddr_tool_v310" 資料夾。
進入 "mscale_ddr_tool_v310\mscale_ddr_tool_v3.10" 後,開啟 "MSCALE_DDR_Tool.exe"。
將 PC 連接上 i.MX8M Mini 開發板 ( 詳細接法請參考以下示意圖 )。
請確保開發板的 Boot Mode 是選擇 Serial Download Mode。
接著,請依照以下步驟操作程式:
(2) 按下 "Connect"。
(3) 點擊 "Load DDR Script" 匯入 ".ds" 檔。
(4) 選擇平台 ( 本博文使用的平台為 i.MX8M Mini )。
(5) 點擊 "Download"。
以下為按下 "Download" 後的截圖。 ( 我們可以從 Log 中看到,稍早設定在 RPA 文件中的參數 )
(6) 接著,請點擊 "Calibration"。
當 Calibration 結束後,"Gen Code" 的按鈕就會出現。
(7) 此時請點選 "Gen Code",此 Tool 會在 "mscale_ddr_tool_v3.10" 目錄下產生出 "lpddr4_timing.c",而這支 "lpddr4_timing.c" 之後需要重新編譯並打包到 Bootloader 中。
最後可以點選 "Stress Test" 進行壓力測試確保 DDR 運作穩定。
補充:如果時間充裕的話可以勾選 "Over Night Test" 選項,測試個幾天幾夜。
本篇博文介紹了查看 DDR Datasheet 的時候需要注意哪些重點,也示範了如何將 Winbond 的 512 MB DDR 參數填入 RPA 文件中並做 Calibration 與 Stress Test,最後產出 "lpddr4_timing.c" 檔。如果做了 Calibration 與 Stress Test 都沒有問題,那就離「使用此 DDR 顆粒開機」這個目標不遠了;若是要達成「使用此 DDR 顆粒開機」這個目標還需要將 "lpddr4_timing.c" 檔打包進 Bootloader 中並且根據 DDR Size 修改程式,後續筆者會再撰寫一篇博文針對使用 Winbond 512 MB DDR 開機議題做敘述,再請各位讀者到大大通搜尋【ATU Book-i.MX8 系列-DDR】NXP i.MX8M Mini 之替換為 Winbond 512 MB DDR 方法大公開 ( 下 )。希望各位讀者看完此篇文章後對填寫 RPA 文件會有更深刻的體會,假設讀者們在看 DDR Datasheet 填寫 RPA 文件時有遇到問題也歡迎找世平集團一起討論。
評論