
本文档描述在 STM32MP1 系列 MPU 产品上配置 DDR 子系统(DDRSS)所需的流程和步骤。 设定 DDR 控制器(DDRCTRL)、PHY 接口(DDRPHYC)和 SDRAM 模式寄存器的多个参数以及设置完成 DDRSS 配置。 & x) ~7 {) D2 w 根据 DDR 类型、DDR 大小、DRAM 拓扑、运行时间频率和 SDRAM 器件数据手册参数确定这些参数。所有这些参数必须在初始化序列期间设定。 ; T: l s8 m% R% |/ x STM32CubeMX DDR 测试套件使用直观的面板和菜单隐藏了与确定正确参数和初始化启动相关的复杂性(请参考[6])。为了快速设置要运行的 DDRSS,用户只需提供很少几个输入参数即可完成配置。可以使用一些高级用户模式和特殊功能(当它们对于应用而言十分重要时)。 % T7 ]+ q: }+ b) u 在系统启动阶段,为了优化时序裕量,支持多种 PHY 调谐。可以使用 STM32CubeMX 启动这些调谐。PHY 调谐结果可以保存并在后续冷复位时恢复。 在启动阶段,用户可以运行大量测试套件。这些测试可以使用 STM32CubeMX 启动,并用于确认 DDR 配置的稳健性。 ) _! z/ m" k" w+ f# {0 z : }7 n1 N* v7 O: d8 b, V" V 1. 概述 本文档适用于 STM32MP1 系列基于 Arm®的 MPU。 $ A% i) b3 ?/ j9 J9 h2 | 2.DDR 子系统初始化和配置 DDR 子系统包括 DDRCTRL 和 DDRPHYC(参见下图)。 2 z2 T- g% c( [" n% \ DDRCTRL 支持在正常操作期间通过命令和刷新调度进行 DDR 命令调度。 DDRPHYC 是一种 DDR PHY 接口,具有连接 DDRCTL 的 DFI 接口[7]和字节通道架构,适合连接频率不超过 533MHz 的 DDR3/3L 和 LPDDR2/3。 + q. J3 z/ C! v6 Y3 O2 p# [5 W: d DDRPHYC 完全支持具有多个 PHY 调谐选项(内置)的 DDR 初始化。 1 S& X& G g+ M$ H% D DDRPYC 包含 BIST 引擎,用于支持软件驱动的调谐。9 t/ T* m, e* b4 C- [ ; d6 z+ Y* {* |4 U; ~7 A) F8 K# w
![]() , U8 t, J% h/ j, T& e8 o* n; ?: p 2.1 DDRSS 和 SDRAM 初始化8 `; ?4 C2 Y0 d1 g/ g! ?5 k0 O 器件根据 SDRAM 启动序列对电源、时钟和复位进行内部排序。 图 2 所示的 PHY 初始化序列由 DDRPHYC 物理实用模块(PUB)控制。这一基于 PUB 的初始化序列在DDRPHYC 从复位状态释放后启动,并根据 DDRPHYC.PIR 寄存器进行排序。 初始化序列包括以下步骤: 1.DDRCTRL 和 DDRPHYC 初始化包括内部时序模块(ITM)复位以及 DLL 复位和锁定 $ B: a" R2 Q( t' A! T9 l6 k/ R 2. DDRPHYC I/O 初始校准(ZCAL),与 DLL 锁定同时启动 & ~: x; g% q" n8 C6 m( y* L' x9 R 3. 通过模式寄存器写入和校准命令执行 SDRAM 初始化 : _: H6 l' T0 p# e) J 4. 内置 DQS 门控训练(DQSTRN) # d3 _( U2 B! r: G+ B. d 提示 : • 在 SSTL 模式下为所有 SDRAM 设置 DDRPHYC I/O。 • DQS 门控训练是可选的。但是,建议在每次初始化时运行内置 DQS 门控训练。 0 |6 _5 f+ [0 V1 F ]& t
![]() / S* a9 @& z5 ]. j& ` : K% @8 }. G# Z1 h1 I: H2.2 DDRCTRL 配置8 @# e. A8 R5 q" \- D( A 6 ]3 M! W) G- n# ? 大多数 DDRCTRL 寄存器是静态的,并在 DDRCTRL 从复位状态释放和 AXI 端口使能前加载。这是在 DDR 软件驱动器的支持下实现的。 6 Q, `' H* ]! s' N1 l: z" W7 } 在 DDRPHYC 和 DDCTRL 完成初始化后,DDR 子系统就绪,使能 AXI 端口是最后一个步骤。 2 i. H" {* V7 E 通过从 STM32CubeMX DDR 面板选择的菜单/选项提供的极少信息确定 DDRCTRL 和 DDRPHYC 寄存器的配置。 然后,DDRSS 配置被保存并恢复到 DDRCTRL 和 DDRPHYC 寄存器,用于后续的复位和正常操作。 % F. f" z5 D+ ? H% b 2.3 DDR 配置 , k/ N3 x, B! s l' J 配置 DDR 所需的步骤如下: 1.为 DDRCTRL 和 DDRPHYC 寄存器确定并设定合适值。 - t6 k0 \* z. z# d 2. 启动 DDRCTRL 和 DDRPHYC 初始化序列。 3 K* a' E# H8 E+ n7 M0 R- K! D 3. 启动具有参数保存和恢复功能的 DDR 调谐(可选)。 5 ?# s g1 H! j, H* v 4. 启动 DDR 测试(可选)。完整配置流程和参数如下图所示 " Q* I0 L4 ^8 \& v4 O; _6 r![]() 按照第 3 节 配置参数中的类型描述配置参数。 1 _+ ^( m' C# U' X6 P% T* m* o 0 H7 q- m. L! r# v8 \: k. y2.4 DDR PHY 调谐% W" w" {9 t8 D3 V/ g 7 ?* V( M8 o" G* I" o" z- x 除了使用强制 DQS 门控训练(DQSTRN)确定读脉冲期间 DQS 门控的最佳位置,DDRPHYC 还支持两种读取时序优化,即 PHY 调谐。 以下从 STM32CubeMX 驱动的软件例程支持 PHY 调谐,以优化读时序裕量: • DQS 门控训练(可在 DDR PHY 调谐期间以交互方式启动的软件) • DQ 位去时滞,以补偿 DQ 位通道读取延迟 • DQS 眼图居中,用于调节 DQS/DQS#延迟以实现最佳 DQ 采样 建议在系统初启阶段进行 PHY 调谐。为每个字节通道执行调谐。由于 PHY 调谐时间可能较长(几十秒),必须为后续复位和 PHY 初始化(例如,在冷复位和待机退出时)保存和恢复调谐参数。 更多详细信息,请参见第 3.4 节 PHY 调谐。 2.5 DDR 测试4 E. ~- D' g, `; ]3 a G% p ; Z1 \8 W/ O: v" h# R" g 在配置 DDR 并为优化时序调谐 PHY 后,必须通过运行从 STM32CubeMX 启动的大量测试序列检查配置的稳健性。 在初启阶段使用 DDR 之前, 必须运行 STM32CubeMx 建议的所有测试和级别。第 8 节 STM32CubeMX 的 DDR 测试中描述了 DDR 测试和测试流程,以及故障诊断和处理措施。 7 E9 l' u$ v# @9 W, h8 c DDR 子系统初启在 DDR 配置、调谐和压力测试成功后完成。保存配置参数用于正常运行模式初始化和 DDR run 模式。 3.配置参数 DDR 配置参数(无论适用于 DDRCTRL 还是 DDRPHYC)可分为以下几组: • 系统参数:DDR 类型(DDR3/LPDDR2/3)、总线宽度(16 位/32 位)、时钟频率和密度。脉冲长度和时序模式取决于系统配置并由 STM32CubeMX 设置,用户只需在 DDR 配置面板中输入几个必填项。 • 时序参数,根据 DDR 时钟频率和 SDRAM 数据手册确定。该组包括以下参数: – 基础时序 – JEDEC 内核时序 – 次级时序 5 N' j. B, b6 b% o9 ? • 运行模式和特殊参数,与性能调度、刷新时序和地址映射有关。从配置面板上推荐给用户的预定义设置中选择这些参数。STM32CubeMX DDR 配置提示了一些参数和选项(例如,设置特定模式或扩展温度支持)。 , A. L/ c g4 p4 P • PHY 调谐参数,与在初始化期间使用一些 PHY 内置模块或执行的软件序列确定的 PHY 时序有关。该组包括以下参数: – DQS 门控训练(DQSTRN) – DQ 通道位去时滞细步长延迟 – DQS 眼图居中细步长延迟PHY 调谐结果可通过 STM32CubeMx 进行保存和恢复。 如有侵权请联系删除 |
基于STM32MP1和STM32MP2在嵌入式Linux平台上部署有效的安全保护机制
利用STM32MP1和STM32MP2为嵌入式Linux提供有效的安全措施:供当今决策者参考的3条宝贵经验
STM32MP1 WiFi连接
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【STM32MPU 安全启动】 TF-A BL2 TrustedBoot原理学习
《STM32MPU安全启动》学**结
《STM32MPU安全启动》学习笔记之optee 如何加载CORTEX-M核和使能校验
《STM32MPU安全启动》学习笔记之TF-A BL2校验optee和uboot的流程以及如何使能
《STM32MPU 安全启动》课程学习心得+开启一扇通往嵌入式系统安全领域深处的大门。
《STM32MPU安全启动》 课程学习心得