【ATU Book-i.MX8 系列】iMX-Mscale DDR Tool_介紹與使用

Chapter 1 使用目的
i.MX8 / MSCALE DDR Tool 是一個 PC 端運行的軟件應用程序,可以將測試映像檔,透過 USB 連接到 i.MX 系列處理器,做 DDR Training 、Code Generation (產生參數程式碼)、Stress Test (壓力測試),目的是幫助驗證 DDR 穩定性。


Chapter 2 檔案下載
2.1 RPA 和 DDR Stress Test 下載
載下網址: https://community.nxp.com/docs/DOC-340179


下載下列檔案:
1. DDR_stress_test_subtest_description.pdf
2. mscale_ddr_tool_v300_setup.zip
3. MX8M_DDR3L_RPA_v6.xlsx
4. MX8M_DDR4_RPA_v9.xlsx
5. MX8M_LPDDR4_RPA_v24.xlsx
6. MX8M_Mini_DDR3L_RPA_v7.xlsx
7. MX8M_Mini_DDR4_RPA_v10.xlsx
8. MX8M_Mini_LPDDR4_RPA_v15.xlsx
9. MX8M_Nano_DDR4_RPA_v2.xlsx
10. preliminary_MX8M_Nano_DDR3L_RPA_v1.xlsx
11. preliminary_MX8M_Nano_LPDDR4_RPA_v1.xlsx


Chapter 3 RPA 檔案
MX8M_LPDDR4_RPA_v22.xlsx 就是 RPA (Register Programming Aid) 檔案,用來是產生 NXP iMX/Mscale DDR Tool 使用的設定檔 (副檔名 .ds) Script,RPA 檔案是Excel 檔案格式,依據 "Register Configuration" Worksheet 和 " BoardDataBusConfig" Worksheet 內部表格參數設定,產生 " DDR stress test file" Worksheet。


3.1 Register Configuration
3.1.1 LPDDR4 資訊
MCIMX8M-EVK使用 LPDDR4 料號 MT53B768M32D4NQ-062 WT:B ,由 Datasheet 提供 Part Name Ordering Information 如下。


3.1.2 填寫要點
不同顏色的欄位的意義如下,很多情況下,欄位是不需要更新的。



3.1.3 填寫結果


此次本版更新中特別提醒大家,請確認使用晶片的溫度規範,此參數會影響系統的穩定度。


3.2 DDR Stress Test file
點選下圖紅框箭頭,複製此工作表全部內容貼到純文字檔中,並使用“.ds”副檔名命名該文字檔,執行DDR壓力測試時需要使用此檔 (mx8m_micron_lpddr4.ds)。



Chapter 4 i.MX8/MSCALE DDR TOOL
i.MX8/MSCALE DDR TOOL 就是 NXP i.MX8 系列的 DDR Stress Test Tool,透過 USB 下載測試 Image 到 i.MX 系列處理器,做相關 RAM參數調校,由於運行在 PC 端時會存取 Windows Registry,所以必須用 Administrator 權限執行。

4.1 硬體設定 --- MCIMX8M-EVK
1. MCIMX8M-EVK 連接方法請參考下圖。


2. Bootmode 設定為 Uart Mode (Serial Downloader),請參考下圖。


3. 開啟電源後,確認裝置管理員可以辨識到裝置,請參考下圖。


4.2 硬體設定 --- OP-Doflamingo EVM
1. OP-Doflamingo EVM 連接方法請參考下圖。


2. Bootmode 設定為 Uart Mode (Serial Downloader),請參考下圖。


3. 開啟電源後,確認裝置管理員可以辨識到裝置,請參考下圖。


4.3 軟體安裝
解壓縮 mscale_ddr_tool_v300_setup.zip 並執行 mscale_ddr_tool_v300_setup.exe 安裝檔後,得到 “mscale_ddr_tool” 資料夾,資料夾內容說明如下:


* MSCALE_DDR_Tool.exe : PC 端軟體
* MSCALE_DDR_Tool_User_Guide.docx : 使用說明檔
* SCR-mscale_ddr_tool.txt : 版權資訊
* bin : MX8MSCALE 內部執行Binaries 檔案
* log : 測??記錄檔
* script : Script 初始設定檔案

4.4 軟體執行
在 “mscale_ddr_tool” 資料夾內,使用 Administrator 權限 (系統管理員身分) 執行 MSCALE_DDR_Tool.exe。




4.4.1 介面說明
1. Debug UART 區域

UART 下拉選單:UART Port選擇
Search Button:搜尋電腦 UART Port 列表,並顯示在 UART Port下拉選單
Connect Button:連結 UART Port 下拉選單,選擇的 UART Port

2. Download Option 區域

Load DDR Script:選擇 DDR Initialization Script 檔案
TARGET 下拉選單:選擇測試的目標板子

Clock 下拉選單:選擇 ARM CPU Clock,"Default" 意思是使用初始 ARM Clock
DDR 下拉選單:選擇 DDR 型態,有LPDDR4 / DDR4 / DDR3L 三種型態
Density 下拉選單:選擇 DDR 測試容量,"Default" 意思是測試所有容量
Download:依據選擇的條件,下載 Image 至目標平臺

3. Test Option 區域

Over Night Test:預設壓力測試做一次停止,此選項被勾選後會不停的一直做壓力測試
Stop when Fail:此選項被勾選後,遇到壓力測試有錯誤時就即刻停止,預設會一直做下去
Disable DDR Memory Cache:此選項決定是否使用 DDR的快取 / 緩衝功能
Format 下拉選單:ARRAY 或 CODE 選項,取決於 uboot 版本,BSP L4.14.78_1.0.0_ga ~ L4.19.35_1.1.0_ga 的 uboot版本請使用 ARRAY 選項,BSP L4.9.51_imx8m_ga 的 uboot 版本請使用 CODE 選項,CODE 選項是為了相容於早期舊的 uboot 版本。
Calibration and Gen Code:必須先執行 Calibration按扭,完成校準工作,才能執行 Gen Code 按扭,然後依據 Format 下拉選單產生 DDR initialization Code。
Start / End Freq:可以設置測試的頻率範圍。保留預設為 0 值,它將以 Script 內的初始頻率設定做測試。如果選擇一個範圍來測試,開始頻率必須要設定在 Script 內的初始頻率 ±50MHz 範圍內,結束頻率必須大於開始頻率且在 100Mhz 以內
Stress Test:執行壓力測試
ADDR / DATA (HEX):讀寫 Memory 時,設定位址和資料的欄位,並可以選擇 8bit / 16bit / 32bit / 64bit 模式
Read / Write:執行讀寫 Memory 功能
Save Result:儲存過程和結果為 Log 檔案。

4.4.2 步驟
1. 按下 Search 按扭在 Debug UART 區域,然後選擇正確的 UART Port (Debug UART Port) 連接到 MX8 Cortex A-Core Debug UART , 最後按下 Connect 按扭,請參考下圖。


2. 按下 Load DDR Script 按扭選擇在 2.2 DDR Stress Test File 章節產生的 Script 檔案 (mx8m_micron_lpddr4.ds),並在 Download Option 區域選擇正確選項,請參考下圖。


3. 按下 Download 按扭後,請參考下圖。


4. 按下 Calibration 按扭,做校準工作,請參考下圖。


5. 按下 Stress Tess 按扭,請參考下圖。


6. 使用的 BSP 版本為 L4.14.98_2.0.0_ga 版本,所以Format 選擇 "ARRAY" 格式輸出,然後按下 "Gen Code" 按扭,產生輸出檔案 lpddr4_timing.c,請參考下圖。



Chapter 5 DDR 參數整合 (Yocto)
5.1 BSP編譯流程
1. mscale_ddr_tool 參數整合至 BSP ---
放置 使用 3.4.2 步驟 (6) 產生的 lpddr4_timing.c 檔案,取代 "tmp/work/imx8mqevk-poky-linux/u-boot-imx/2018.03-r0/git/board/freescale/imx8mq_evk" 裡原生 lpddr4_timing.c 檔案。

2. Replace LPDDR4 Firmware (Optional) ---
使用 mscale_ddr_tool/bin 資料夾內 lpddr4_pmu_train_1d_imem.bin、lpddr4_pmu_train_2d_imem.bin、lpddr4_pmu_train_1d_dmem.bin、lpddr4_pmu_train_2d_dmem.bin 檔案,取代 "tmp/deploy/images/imx8mqevk/" 裡原生 lpddr4_pmu_train_1d_imem.bin、lpddr4_pmu_train_2d_imem.bin、lpddr4_pmu_train_1d_dmem.bin、lpddr4_pmu_train_2d_dmem.bin 檔案。

3. 產生imx-boot Image ---
在 Yocto 專案環境使用下列命令,產生 imx-boot image
$ bitbake u-boot-imx -c compile -f
$ bitbake u-boot-imx -c deploy -f
$ bitbake imx-boot -c compile -f
$ bitbake imx-boot -c deploy -f
輸出 Image (imx-boot-imx8mqevk-sd.bin) 在 "/tmp/deploy/images/imx8mqevk/" 資料夾

4. Flash imx-boot Image 到 SD 卡
$ sudo dd if=imx-boot-imx8mqevk-sd.bin of=/dev/sdx bs=1k seek=33

5.2 驗證 DDR 參數
1. 使用 memtool 指令取得系統開機後 DDRC Register 值。
$ /unit_tests/memtool DDRC.*


2. 比對 lpddr4_timing.c 檔案裡 DDRC參數是否正確寫入 DDRC (DDR Controller)。



Chapter 6 補充說明
1. dram_core_clk、DRAM Clock、Data Rate 關係
(1) DRAM Clock = Dram_Core_Clk x 2
(2) Data Rate = DRAM Clock x 2 (Clock 正負緣取 Data)
實例:
$ cat sys/kernel/debug/clk/clk_summary | grep dram 得到 dram_core_clk 資訊,所以DRAM Clock 值為 1600MHz,Data Rate 值為 3200MHz。
下圖紅框得到 dram_core_clk 值為 800000000 Hz (800MHz)。
800MHz (dram_core_clk) x 2 = 1600MHz (DRAM Clock)
1600MHz (DRAM Clock) x 2 = 3200MHz (Data Rate)


2. 專案開發必需確認清楚 LPDDR4 晶片是屬於 Industrial 或 Automotive 規範,並填寫在 “LPDDR4 MR4 manual de-rate workaround” 欄位,因為容易造成系統運行一段時間後當機,同時沒有任何 Log 訊息輸出。



Chapter 7 參考資料
1. MSCALE_DDR_Tool_User_Guide.pdf (Rev. V1.1.0)
2. 200b_z11m_ddp_pdp_auto_lpddr4_lpddr4x.pdf (Rev. C 12/17 EN)
[Micron LPDDR4 MT53D1024M32D4NQ-062 WT:B Datasheet]

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能

參考來源