【ATU Book-i.MX8 系列-DDR】NXP i.MX8M Mini 之替換為 Winbond 512 MB DDR 方法大公開 ( 上 )

一. 前言

世平集團針對 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"。

二. Winbond 512 MB DDR 概述

本章節將針對 Winbond 的 512 MB DDR 做簡述 ( 在此不列出詳細型號 )。此 DDR 顆粒的尺寸大小為 10 mm x 14.5 mm 是一顆 200 Ball 的 LPDDR4 顆粒。200 Ball 的意思是指 IC 上有 200 根 Pin 腳,而每家廠商的 Pin 腳分布多少都會有些差異,隨著廠商的不同 Pin 腳的定義也會略為不同。這些資訊我們都可以從 Datasheet 中找到,礙於著作權的關係在此不多做說明。

值得一提的是 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 )。

以上列出的 7 個重點在後續章節填寫 RPA 文件時都會用到,隨著 DDR 容量的不同這些參數也會有所不同。對於填寫 RPA 文件而言主要就是在填寫這些參數讓 RPA 文件產生出不同的結果 ( .ds 檔 ),接著讓我們繼續看下去吧!



三. DDR Stress Test Tool 使用

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 )。

mscale_ddr_tool_v310_setup.exe.zip

接著請點擊 i.MX8MMini (m845S) DDR Register Programming Aid (RPA)。

接著請點擊 i.MX8MMini (m845S)

本博文的實作平台是 i.MX8M Mini 並且使用的是 LPDDR4 的顆粒,請對應平台下載最新版的 LPDDR4 RPA 文件。 ( 筆者撰寫文件時的最新版本是 16 版,所以選 MX8M_Mini_LPDDR4_RPA_v16.xlsx )

MX8M_Mini_LPDDR4_RPA_v16

b. 設置 RPA 文件


先將下載來的 MX8M_Mini_LPDDR4_RPA_v16.xlsx 重新命名為 MX8M_Mini_LPDDR4_RPA_v16_Winbond_512MB.xlsx。

MX8M_Mini_LPDDR4_RPA_v16_Winbond_512MB

開啟 MX8M_Mini_LPDDR4_RPA_v16_Winbond_512MB.xlsx 後,點選 Sheet "Register Configuration"

點選 Sheet

接下來我們需要搭配 Winbond 的 Datasheet 對 RPA 文件進行配置;基本上 RPA 文件中的橘色背景處就是我們需要修改的地方。

橘色區域

搭配 Datasheet 設置 "Density per channel per chip select (Gb)" 欄位。

Density per channel per chip select

搭配 Datasheet 設置 "Number of Chip Selects used" 欄位。

Number of Chip Selects used


搭配 Datasheet 設置 "ROW" 與 "COLUMN" 欄位。

ROW

配 Datasheet 設置 "Number of BANK addresses" 欄位。

Number of BANK addresses

c. 產出 .ds 檔

以下將會敘述如何將稍早修改的 RPA 文件轉成 ".ds" 檔。而存為 ".ds" 檔的目的是為了讓 DDR Stress Test Tool ( MSCALE_DDR_Tool.exe ) 可以 Load DDR 顆粒參數並做 Calibration。

請在 Excel 中切換到 "DDR Stress Test Script" 這個 Sheet 以後,全部選取再按右鍵複製

DDR Stress Test Script

將複製的內容貼到 ".ds" 去。筆者的做法是先建立了一個 txt 檔之後,再貼入上述複製的內容最後把 txt 重新命名為 "MX8M_Mini_LPDDR4_RPA_v16_Winbond_512MB.ds"。

ds

d. 透過 Tool 驗證 DDR 參數

以下將實際操作如何透過 DDR Stress Test Tool ( MSCALE_DDR_Tool.exe ) 做 Calibration、Generate Code、Stress Test。請跟著筆者的腳步一步步操作吧!

先將下載來的 "mscale_ddr_tool_v310_setup.exe.zip" 解壓縮並執行 "mscale_ddr_tool_v310_setup.exe" 後,最終可取得 "mscale_ddr_tool_v310" 資料夾。

mscale_ddr_tool_v310_setup

進入 "mscale_ddr_tool_v310\mscale_ddr_tool_v3.10" 後,開啟 "MSCALE_DDR_Tool.exe"。


MSCALE_DDR_Tool.

將 PC 連接上 i.MX8M Mini 開發板 ( 詳細接法請參考以下示意圖 )。

將 PC 連接上開發板

請確保開發板的 Boot Mode 是選擇 Serial Download Mode。

Serial Download Mode

接著,請依照以下步驟操作程式:

(1) 點擊 "Search",選好 COM Port 。

(2) 按下 "Connect"。

(3) 點擊 "Load DDR Script" 匯入 ".ds" 檔。

(4) 選擇平台 ( 本博文使用的平台為 i.MX8M Mini )。

(5) 點擊 "Download"。

確保板子有完成以下動作

以下為按下 "Download" 後的截圖。 ( 我們可以從 Log 中看到,稍早設定在 RPA 文件中的參數 )

按下 “Download” 後的截圖

(6) 接著,請點擊 "Calibration"。

請點擊 “Calibration”

當 Calibration 結束後,"Gen Code" 的按鈕就會出現。

(7) 此時請點選 "Gen Code",此 Tool 會在 "mscale_ddr_tool_v3.10" 目錄下產生出 "lpddr4_timing.c",而這支 "lpddr4_timing.c" 之後需要重新編譯並打包到 Bootloader 中。

Gen Code

最後可以點選 "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 文件時有遇到問題也歡迎找世平集團一起討論。


五. 參考文件
 
 

★博文內容參考自 網站,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論