
前言STM32MP2x系列芯片都有两个相互独立的异构核一个是Cortex-M33核一个是Cortex-A35核两个独立的核在同一个DDR内存运行的时候就需要配置好各自的DDR内存映射即要保证各自访问内存不能越界又要保证两个核数据交互时能访问同一块内存。目前ST只提供一种默认的内存映射有时候不能满足各种不同客户的需求所以这篇文章主要讲解如何自由的配置Cortex-M33核和Cortex-A35核的内存映射。1. 概括STM32MP2x系列MPU芯片比上一代STM32MP15x系列芯片在DDR内存的访问上有很大的区别。STM32MP2x系列的芯片异构核都能直接来访问DDR内存所以在内存配置的时候要特别注意内存映射表一定要配置清楚。默认的内存配置可以参考这个wikiDDR前面64MByte的内存空间是预留给OPTEE和Cortex-M33使用的。但是在有些情况下这个内存配置没法满足客人的需求例如客人希望扩大CortexM33的数据内存或者扩大CortexM33和CortexA35的共享内存就需要扩大DDR前面的64M内存下面就讲解如何来扩大前面预留的64MDDR内存。2. 工作原理2.1 Linux启动时内存的动态规划MPU标准的linux启动过程是先ROM Code运行然后ROM Code通过启动外设加载第二级启动程序也就是TF-A BL2然后TF-A通过FIP文件来加载OP-TEE和U-bootU-boot起来后再加载kernel并最终运行Linux系统。具体的可以参考这个wiki。TF-A先被加载到MPU内部的SRAM然后TF-A负责初始化一些基本的电源和DDR内存然后再把FIP文件中的OP-TEE和Uboot加载到对应的内存中运行Uboot运行后又需要把kernel加载到对应的DDR内存中然后运行。所以如果希望修改默认的DDR内存映射表就需要修改TF-AUbootOP-TEEkernel的加载地址防止内存冲突。默认的A35住启动时候不同启动阶段DDR内存映射如下2.2 如何修改TF-A BL2运行后的内存映射表TF-A加载FIP文件并运行是通过FCONF文件也就是通过stm32mp25-fw-config.dtsi这个设备树这个设备树中引用的STM32MP_HW_CONFIG_BASE和STM32MP_BL33_BASE是在stm32mp2_def.h这个文件中定义的。所以如果希望修改DDR内存映射只需要修改stm32mp2_def.h这个配置文件。例如下是基于OSTL6.0的BSP把预留DDR内存再扩大32M的patch当然这里还需要修改stm32mp257f-ev-ca35tdcid-fw-config.dtsi设备树配置文件例如下列配置2.3 如何修改OP-TEE的内存配置因为OP-TEE在TF-A运行后加载到固定地址后面整个Linux运行这个地址一直不变这样才能保证U-boot和Kernel能正确访问OP-TEE的服务程序。如下是基于OSTL6.0修改的OP-TEE的补丁文件内容也是扩大32M内存2.4 如何修改U-boot运行的内存配置U-boot是TF-A加载运行的所以他本身即要告诉TF-A自己要运行的内存地址又要保证U-Boot运行后需要加载kernel和不能访问optee预留地址当然所以这边需要修改如下的文件2.5 如何修改Kernel运行的DDR内存配置Kernel就稍微简单一些只需要修改DDR的预留地址就可以了当然这里面要注意OP-TEEU-boot都需要修改设备树的预留地址保持内存预留地址一致。3. 总结因为STM32MP2x系列的芯片Cortex-M核和Cortex-A核对外设的访问和DDR的访问几乎一样没有限制所以如果默认的内存配置不能满足需求可以参考这个例子来对内存重新配置。点击下载《如何扩大MP2的A35核和M33核共享内存》原文档。重要通知 - 请仔细阅读意法半导体公司及其子公司 “ST”保留随时对 ST 产品和 / 或本文档进行变更的权利恕不另行通知。买方在订货之前应获取关于 ST 产 品的最新信息。 ST 产品的销售依照订单确认时的相关 ST销售条款。 买方自行负责对 ST 产品的选择和使用 ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财产。 本文档是ST中国本地团队的技术性文章旨在交流与分享并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档包括代码电路图等信息 我们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。 © 2020 STMicroelectronics - 保留所有权利