i.MX8M Nano的硬體可以支援DDR4,DDR4L和DDR3L三種不同形式的記憶體。而i.MX8M Nano開發版中所使用的記憶體為DDR4-2GB。客戶在開發中,通常為了成本考量或是效能取捨,會選擇不同的記憶體型態與容量。但在原廠程式碼中的u-boot目前只支援LPDDR4/DDR4這兩種類型記憶體,而沒有支援DDR3L類型。
以下則是教導與說明:如何在i.MX8M NANO的平台上使用DDR3L-512MB 的記憶體。
一、硬件設計部分:
1、i.MX8M Nano中設計DDR3L的硬件線路如下: 2、DDR3L 電源:由於DDR3L與LPDDR4/DDR4的電源電壓是不同的,這也是需要注意"正確提供1.35V電源給DDR3L"
目前所使用ROHM PMIC"BD71847"來提供系統電源,包含DDR的部分。所以也要確認 PMIC"BD71847"提供給DDR3L的電壓正確(1.35V)
二、軟件修改部分如下:
1、用i.MX8M Series的 MSCALE_DDR_Tool 產生正確且符合DDR3L速度容量的 "ddr3l_timing.c"
2、須將此檔案"ddr3l_timing.c"放在u-boot的source code做編譯,請參考接下來步驟:
在此以Linux 4.14.98_2.2.0的版本為範例。
a、將DDR stress tool所產生的"ddr3l_timing.c"放到/board/freescale/imx8mn_evk目錄下。
另外也要修改/board/freescale/imx8mn_evk/MakeFile檔案中第11行位置,如下
b、修改/arch/arm/mach-imx/imx8m/Kconfig,是將本來的IMX8M_DDR4改成IMX8M_DDR3L,是在Kconfig此檔案中第79行的位置
c、修改/include/configs/imx8mn_evk.h,是將本來的PHYS_SDRAM_SIZE 由2GB改成512MB,是在imx8mn_evk.h中第233行的位置
d、修改/board/freescale/imx8mn_evk/spl.c,是將本來的DDR4的設定改成DDR3L。
電壓DDR4的電壓1.2V修改成DDR3L電壓的1.35V。變更在spl.c中第175行到177行的位置,
並將其VDD_DRAM修改成0.975V,變更在spl.c中第172行的位置(i.MX8M Nano需求)
e、編譯u-boot的相關訊息如下:
f、將編譯過後產生的uboot,燒錄到開機儲存裝置上(eMMC/SD..),即可以正確開機。
在DDR3L板子成功開機的訊息如下,並顯示為512MB:
以上的流程,完整教導與說明:如何在i.MX8M NANO的平台上使用DDR3L-512MB 的記憶體。
評論