世平集团针对 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 文件时有遇到问题也欢迎找世平集团一起讨论。
评论