ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Linux 内核中的 STM32MP157 平台支持解析:双核 Cortex-A7 MPU 的 SoC 特性与设备树实现

Linux 内核中的 STM32MP157 平台支持解析:双核 Cortex-A7 MPU 的 SoC 特性与设备树实现 Linux 内核中的 STM32MP157 平台支持解析双核 Cortex-A7 MPU 的 SoC 特性与设备树实现【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux导读本文围绕 Linux 内核仓库 Documentation/arch/arm/stm32/stm32mp157-overview.rst 展开系统梳理 STM32MP157 这颗 Cortex-A 微处理器MPU的五大核心特性——双核 Cortex-A7、带 GPU 的 2D/3D 图像合成、标准存储器接口、继承自 STM32 MCU 家族的标准连接性以及全面的安全支持。读者在读完本文后不仅能完整理解该 SoC 的硬件能力定位还能通过内核源码中的设备树Device Tree节点、machine 描述符与实际开发板配置掌握 STM32MP157 在 Linux 内核中的落地方式与验证路径。STM32MP157 概览面向多场景应用的 Cortex-A MPUSTM32MP157 是 STMicroelectronicsST推出的 Cortex-A 微处理器定位面向各类嵌入式应用场景。与纯 MCU 产品线不同它属于 Cortex-A MPU 阵营能够运行完整的 Linux 系统同时保留了 STM32 MCU 家族丰富的外设基因。根据 Documentation/arch/arm/stm32/stm32mp157-overview.rst 的官方描述该 SoC 具有以下五项核心特性双核 Cortex-A7 应用处理器Dual core Cortex-A7 application core带 GPU 的 2D/3D 图像合成能力2D/3D image composition with GPU标准存储器接口支持Standard memories interface support标准连接性广泛继承自 STM32 MCU 家族Standard connectivity, widely inherited from the STM32 MCU family全面的安全支持Comprehensive security support该文档由 ST 工程师 Ludovic Barre 与 Gerald Baeza 维护是内核中 STM32MP1 系列平台文档体系Documentation/arch/arm/stm32/的一部分同目录下还包含 stm32mp151-overview.rst单核版本与 stm32mp13-overview.rst 等同系列概述便于对比不同型号的裁剪关系。双核 Cortex-A7 应用处理器从单片到多核“双核 Cortex-A7”是 STM32MP157 区别于 STM32MP151单核 Cortex-A7的核心差异点。在内核设备树中这一特性通过分层的 dtsi 文件逐级叠加实现arch/arm/boot/dts/st/stm32mp151.dtsi 定义基础单核节点cpu0compatible arm,cortex-a7并声明了device_type cpu、reg 0以及默认clock-frequency 650000000arch/arm/boot/dts/st/stm32mp153.dtsi 在其基础上追加cpu1: cpu1构成双核arch/arm/boot/dts/st/stm32mp157.dtsi 再包含 stm32mp153.dtsi并叠加 GPU、DSI 等 STM32MP157 独有的多媒体外设。这种“151 → 153 → 157”的包含链include 链与 ST 的芯片型号梯度一一对应STM32MP151 为单核精简版STM32MP153 增加第二个 Cortex-A7 核STM32MP157 在双核基础上再增加 GPU 图形单元最终形成本文主角的完整配置。围绕 CPU 子系统stm32mp151.dtsi 还提供了配套的基础设施节点arm-pmuCortex-A7 性能监视单元PMU通过GIC_SPI 200中断上报性能事件pscicompatible arm,psci-1.0method smc说明 CPU 电源管理、热插拔CPU hotplug等操作经由 PSCI 固件接口以 SMC 调用方式完成intcCortex-A7 GIC 中断控制器映射在0xa0021000timerARMv7 通用定时器arm,armv7-timer使用 PPI 中断与 GIC 配合。从内核侧看双核的调度、同步与电源管理均由通用 ARM 内核机制承担设备树只需正确描述 CPU 拓扑与 PSCI 接口即可这体现了 STM32MP157 “继承标准 ARM 生态”的设计取向。带 GPU 的 2D/3D 图像合成多媒体显示链路STM32MP157 的图形能力来自 Vivante GPU 与 ST 自家的显示控制器组合。在 arch/arm/boot/dts/st/stm32mp157.dtsi 中可以看到关键节点gpu: gpu59000000 { compatible vivante,gc; reg 0x59000000 0x800; interrupts GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH; clocks rcc GPU, rcc GPU_K; clock-names bus, core; resets rcc GPU_R; };该 GPU 节点位于0x59000000采用vivante,gc兼容字符串通过 RCC 时钟控制器提供总线时钟bus与内核时钟core并带有独立复位线。它支撑 2D/3D 图形合成与加速是 STM32MP157 相比 MP153 的差异化卖点。GPU 的渲染结果最终要输出到显示设备配套的显示链路同样定义在该 dtsi 中dsi: dsi5a000000 { compatible st,stm32-dsi; reg 0x5a000000 0x800; clocks rcc DSI, clk_hse, rcc DSI_PX; clock-names pclk, ref, px_clk; phy-dsi-supply reg18; resets rcc DSI_R; reset-names apb; status disabled; ... };DSI 主机控制器通过port0dsi_in接收来自 LTDC 的像素流与port1dsi_out输出到面板两个图形端口完成数据通路绑定。默认status disabled由具体板级 dts 使能并接上面板。真实板级示例可参考 arch/arm/boot/dts/st/stm32mp157c-dk2.dtsSTM32MP157C-DK2 Discovery 开发板ltdc { status okay; port { ltdc_ep1_out: endpoint1 { reg 1; remote-endpoint dsi_in; }; }; }; dsi { status okay; panel0 { compatible orisetech,otm8009a; reg 0; reset-gpios gpioe 4 GPIO_ACTIVE_LOW; power-supply v3v3; port { panel_in: endpoint { remote-endpoint dsi_out; }; }; }; }; dsi_in { remote-endpoint ltdc_ep1_out; };这条完整链路为LTDCLCD-TFT 控制器→ DSI → OTM8009A 面板配合 GPU 的 2D/3D 合成正是文档所述“2D/3D image composition with GPU”在内核中的具体工程实现。此外 DK2 板还通过 I2C1 挂接 focaltech ft6236 电容触摸屏见 stm32mp157c-dk2.dts 中touchscreen38节点构成完整的人机交互方案。标准存储器接口从 QSPI 到 FMC 的多介质支持文档中的“标准存储器接口支持”指 SoC 集成了主流的存储介质控制器。虽然 overview 文档本身未逐条展开同系列 stm32mp151-overview.rst 补充了更细的清单可视为该特性族的具体化FMC 控制器连接 SDRAM、NOR 与 NAND 存储器QSPI高性能串行 Flash 接口用于快速启动与代码/数据存储SD/MMC/SDIO支持 eMMC、SD 卡以及 SDIO 外设如 Wi-Fi 模块。DK2 板级设备树即展示了 SD/MMC 接口的实际用法其sdmmc2节点配置了 4-bit 总线、non-removable板载 eMMC/SDIO、cap-sdio-irq、st,neg-edge等属性并通过mmc-pwrseq-simple电源序列控制挂接的 Broadcom Wi-Fi 模组brcm,bcm4329-fmacsdmmc2 { pinctrl-names default, opendrain, sleep; pinctrl-0 sdmmc2_b4_pins_a; pinctrl-1 sdmmc2_b4_od_pins_a; pinctrl-2 sdmmc2_b4_sleep_pins_a; non-removable; cap-sdio-irq; st,neg-edge; bus-width 4; vmmc-supply v3v3; mmc-pwrseq wifi_pwrseq; status okay; ... };存储介质的多样化为不同成本与性能档次的系统设计提供了灵活性这也是该 SoC 能覆盖从工业控制到消费电子的基础。标准连接性继承自 STM32 MCU 家族的外设生态文档强调“标准连接性广泛继承自 STM32 MCU 家族”这意味着 STM32MP157 直接复用 STM32 微控制器生态中被广泛验证过的外设 IP软件开发经验与代码资产可以平滑迁移。参考 stm32mp151-overview.rst 的具体列举该家族连接性包括以太网控制器Ethernet controllerADC/DAC模拟接口USB EHCI/OHCI 控制器与USB OTGI2C、SPI 总线支持多个通用定时器general purpose timers串行音频接口Serial Audio interfaceSPDIFRX、DFSDM等数字音频/滤波外设在 DK2 板上可以看到这些外设的典型接线i2c1挂触摸屏、usart2以硬件流控uart-has-rtscts连接 Broadcom 蓝牙模组brcm,bcm43438-bt、以太网、SDIO Wi-Fi 等一颗芯片即覆盖了连接、人机交互与无线通信需求。内核侧对这类外设的支持体现在多层面驱动位于 drivers/ 各子系统目录设备树则统一通过stm32mp15-pinctrl.dtsi与stm32mp15xxac-pinctrl.dtsi见 arch/arm/boot/dts/st/提供引脚复用pinmux配置板级文件只需引用既有的 pinctrl 组即可降低了移植成本。全面的安全支持硬件安全机制与启动信任根“Comprehensive security support”是 STM32MP157 面向工业与关键基础设施场景的重要特性。虽然 overview 文档未展开细节但结合 STM32MP1 系列的公开设计安全体系通常涵盖安全启动基于硬件信任根RoT的签名镜像校验启动流程隔离执行环境通过 TrustZone 类机制划分安全世界与普通世界密码学加速板级设备树中可见cryp1加密处理器节点DK2 板上即显式status okay使能之cryp1 { status okay; };系统资源保护通过 ETZPCExtended TrustZone Protection Controller等单元对总线、外设与内存进行访问隔离。安全世界运行代码如 OP-TEE与普通世界 Linux 的配合、PSCI 固件接口见前文psci节点method smc共同构成了从启动到运行期的可信链条。需要说明的是具体安全特性的使能与配置以 ST 官方参考手册与信任固件TF-A/OP-TEE 构建为准内核设备树主要负责描述受保护外设与密码学硬件。内核中的软件支持machine 描述与构建配置STM32MP157 作为 ARM 平台在内核中的注册入口位于 arch/arm/mach-stm32/board-dt.cstatic const char *const stm32_compat[] __initconst { st,stm32f429, ... st,stm32mp151, st,stm32mp157, NULL }; DT_MACHINE_START(STM32DT, STM32 (Device Tree Support)) .dt_compat stm32_compat, ... MACHINE_END这是一个通用的扁平设备树Flattened Device Treemachine只要板级 dts 的根节点compatible命中列表中的字符串如 DK2 的compatible st,stm32mp157c-dk2, st,stm32mp157即可被该 machine 匹配启动无需为每块板子编写重复的平台代码。构建与启动配置依据 Documentation/arch/arm/stm32/overview.rst对 MPU含 STM32MP157使用 multi_v7 配置make multi_v7_defconfig对 MCU 产品线则使用make stm32_defconfig。内核仓库中已包含大量 STM32MP157 板级设备树见 arch/arm/boot/dts/st/ 下的stm32mp157*.dts覆盖 ST 官方评估板DK1/DK2、ED1/EV1以及众多第三方板卡例如stm32mp157a-dk1.dts单核 MP157A 入门套件stm32mp157c-dk2.dts双核GPU Discovery 板本文多处引用stm32mp157c-ev1.dts评估板这些 dts 均以 stm32mp157.dtsi 为 SoC 级描述基础再叠加板级外设与 pinmux是理解“SoC 描述与板级描述分离”这一设备树设计思想的最佳范例。结语STM32MP157 通过双核 Cortex-A7、GPU 图形合成、标准存储接口、MCU 系外设生态与全面安全机制的组合在内核中形成了从 arch/arm/mach-stm32/board-dt.c 的 machine 注册到 arch/arm/boot/dts/st/ 的分层设备树描述再到板级 dts 完整外设配置的清晰支持链条。开发者只需掌握设备树的包含关系与板级覆盖规则即可基于 STM32MP157 快速开展 Linux 系统定制与产品开发。建议进一步阅读同目录的 stm32mp151-overview.rst 了解单核基线以及 stm32-dma-mdma-chaining.rst 深入了解该平台 DMA 子系统的底层设计。【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表