【ATU Book-i.MX8系列】OP-Killer (i.MX8M Plus) DDR Calibration & Stress Test

一、簡介

我們前一篇文章說明了 WPI OP-Killer 的 Linux 開發環境架設,讓使用者可以快速掌握編譯、燒錄及開機的操作方法與流程。接下來要介紹的是 DDR Calibration & Stress Test,這是當您要自行製作客製化板子時,很重要的一個環節。
DDR 是 MPU 最小開機系統中一個重要的部分,DDR 是否可以工作正常,關係到了 PCB 走線、板材等問題,在硬體設計時需要多加注意,軟體、韌體部分則需要注意 DDR 參數的設定。
本篇文章會以容量 4GB 的 LPDDR4 為例,說明如何調整 DDR 參數並利用壓力測試驗證參數的可靠性。

二、軟體需求

軟體開發包:NXP Linux BSP L5.10.9_1.0.0
DDR 暫存器配置表:MX8M_Plus_LPDDR4_RPA_v6.xlsx
https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX-8M-Plus-DDR-Register-Programming-Aids-RPA/ta-p/1235352
DDR 工具:mscale_ddr_tool _v3.20_setup.exe.zip
https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX-8M-Family-DDR-Tool-Release/ta-p/1104467

三、硬體需求
開發板:WPI OP-Killer EVM

                                                    圖一、OP-Killer SOM EVM 正面

                                                    圖二、OP-Killer SOM EVM 背面

                                                    圖三、OP-Killer IO EVM 正面

                                                    圖四、OP-Killer IO EVM 背面


四、填寫 DDR 暫存器配置表 (RPA)

1. 開啟 RPA 檔



2. 切換 Register Configuration 分頁並填寫表格橙色部分



  1) Manufacturer - 填寫 DDR 廠牌
  2) Memory part number - 填寫 DDR 型號
  3) Density per channel per chip select (Gb) - 填寫 DDR 容量
  4) Number of Chip Selects used - 填寫 Chip Select 數量
  5) Number of ROW Addresses - 填寫 Row 數量
  6) Number of COLUMN Addresses - 填寫 Column 數量
  7) Bus Width - 填寫 Data Bus Width
  8) Clock Cycle Freq (MHz) - 填寫 Clock 頻率

3. 建立 DS 檔

  1) 切換到 DDR stress test file 分頁


  2) 創建 DS 檔並將分頁中所有內容複製到 DS 檔中



五、使用 DDR 工具

1. 安裝 DDR 工具

  1) 解壓縮 DDR 安裝包


  2) 執行安裝檔,安裝工具包


2. 硬體設定

  1) 將 SOM 指撥開關 (SW4) 設定為 off-off-off-on


  2) 使用 USB Type-C 將 PC 與 IO PWR/USB TYPE C 插槽 (J3) 連接在一起
  3) 使用 Micro USB 將 PC 與 DEBUG 插槽 (J15) 連接在一起
  4) 打開 IO 電源開關 (J2)

3. 執行 MSCALE_DDR_Tool.exe



4. 設定 DDR 工具



  1) 按下 Search,搜尋 Debug Port


  2) 選擇 Cortex-A53 的 COM Port (數字較大的COM Port),按下 Connect


  3) 點選 Load DDR Script 選擇我們之前製作的 DS 檔,Target 選擇 MX8M-Plus,Density 選擇 4G,DDR 選擇 LPDDR4,按下 Download



  4) Script 下載完成即可在下方 log 視窗看到完成訊息。


5. 執行 DDR Calibration

  1) 按下 Calibration,DDR 工具會自動執行 DDR Calibration


  2) 按下 Gen Code,產生 U-Boot 所需的 DDR 參數檔 (lpddr4_timing.c)



6. 執行 DDR Stress Test

  1) 在 Start Freq 與 End Freq 填入希望測試的頻率區間,如設為 0,則使用當前頻率做測試


  2) 建議可以勾選 Over Night Test 選項,使用長時間測試來確保 DDR 參數的穩定度。



六、修改 U-Boot DDR 參數

1. 修改 optee-os 參數

  1) optee-os 原始碼路徑
    ${Build DIR}/tmp/work/imx8mpevk-poky-linux/optee-os/3.10.0.imx-r0/git/

  2) 修改 conf.mk,將 mx8mpevk DDR Size 從 6GB 改為 4GB
    $ vim core/arch/arm/plat-imx/conf.mk


2. 修改 u-boot-imx 參數

  1) u-boot-imx 原始碼路徑
    ${Build DIR}/tmp/work/imx8mpevk-poky-linux/u-boot-imx/1_2020.04-r0/git/

  2) 將先前使用 DDR 工具做出的 DDR 參數檔取代 board/freescale/imx8mp_evk/lpddr4_timing.c


  3) 修改 include/configs/imx8mp_evk.h,PHYS_SDRAM_SIZE 與 PHYS_SDRAM_2_SIZE 總和為 DDR 容量。


3. 重新編譯
  $ bitbake -f -c compile optee-os && bitbake -f -c deploy optee-os
  $ bitbake -f -c compile u-boot-imx && bitbake -f -c deploy u-boot-imx
  $ bitbake -f -c compile imx-boot && bitbake -f -c deploy imx-boot

4. 更新 U-Boot 映像檔
  $ dd if=imx-boot of=/dev/mmcblk2 bs=1k seek=2 && sync


七、在 Linux OS 下測試 DDR

1. 使用 free 指令確認空閒的記憶體大小

  # free -m


2. 使用 memtest 指令進行 DDR 測試

  # memtest ${DDR Free Size}



總結一下本篇文章,從填寫 DDR 暫存器配置表 (RPA),使用 DDR 工具做 Calibration 及 Stress Test,將參數回填到 U-Boot Source Code,最後使用 Linux OS 做 DDR 測試,經過這麼多繁瑣的動作,都是要確認 DDR 的穩定度。主要原因是,如果 DDR 不穩定的話,系統在相較嚴苛的環境下或是執行 Loading 較重的任務時,很容易導致系統崩潰,且崩潰的時間點及狀況都是非常隨機的,這樣的現象會讓使用者在開發階段面臨許多的問題,花費許多時間。為了減少這種時間人力的浪費,在開案初期確保 DDR 穩定性是一件非常重要的事情。

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

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

參考來源

評論