Linux 内核中的 STM32H743 支持解析:Cortex-M7 高主频 MCU 的硬件特性、设备树与板级移植

发布时间:2026/9/12 3:19:03
Linux 内核中的 STM32H743 支持解析:Cortex-M7 高主频 MCU 的硬件特性、设备树与板级移植 Linux 内核中的 STM32H743 支持解析Cortex-M7 高主频 MCU 的硬件特性、设备树与板级移植【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux本文基于 Linux 内核源码树中的 STM32H743 Overview 文档结合 stm32h743.dtsi 设备树、mach-stm32 平台代码与 stm32_defconfig 默认配置系统梳理 STM32H743 这颗面向高性能嵌入式应用的 Cortex-M7 MCU 的硬件能力、Linux 内核对它的软件支持方式以及如何基于设备树完成板级移植与内核构建。读完本文你将理解 STM32H743 在 Linux 生态中的定位并能独立解读其 SoC 级与板级设备树、定位外设使能方法。STM32H743 硬件特性总览STM32H743 是 STMicroelectronics 推出的一款面向各类高性能应用的 Cortex-M7 微控制器MCU。内核文档将其核心特征概括如下Cortex-M7 内核最高运行频率400MHz2MB 内部 Flash1MB 内部 RAMFMC 控制器可连接 SDRAM、NOR 与 NAND 存储器双模式 QSPIDual mode QSPISD/MMC/SDIO 支持以太网控制器USB OTG FS 与 HS 控制器I2C、SPI、CAN 总线支持多路 16 位与 32 位通用定时器串行音频接口SAILCD 控制器HDMI-CECSPDIFRXDFSDM数字滤波 Sigma-Delta 调制器。从内核视角看这颗芯片最突出的特点是高主频 大容量存储接口400MHz 的 Cortex-M7 配合 2MB Flash 与 1MB RAM足以支撑图像处理、音频编解码、工业控制网关等复杂应用而 FMC、双模式 QSPI、SD/MMC 等外部存储接口又为大数据量应用提供了灵活的扩展路径。值得注意的是同一系列还存在规格不同的姊妹型号 STM32H750见 stm32h750-overview.rst其内核运行频率提升至 480MHz但内部 Flash 缩减为 128KB其余外设与 H743 基本一致二者共享同一套设备树基座板级文件通过覆盖节点来区分。Linux 内核对 STM32H743 的平台支持STM32 家族包括 Cortex-A 微处理器 MPU 与 Cortex-M 微控制器 MCU在 ARM Linux 中由STM32平台统一承载平台代码集中在 arch/arm/mach-stm32。其中 board-dt.c 是支持 Flattened Device Tree扁平设备树的通用板级文件只要板卡的compatible字符串命中其stm32_compat列表即可引导。该列表明确包含了st,stm32h743static const char *const stm32_compat[] __initconst { st,stm32f429, st,stm32f469, st,stm32f746, st,stm32f769, st,stm32h743, st,stm32h747, st,stm32h750, st,stm32mp131, st,stm32mp133, st,stm32mp135, st,stm32mp151, st,stm32mp157, NULL };这意味着 H743 的移植完全走设备树驱动模型DT_MACHINE_START(STM32DT, ...)定义了通用的 DT machine 描述配合CONFIG_ARM_SINGLE_ARMV7M时通过armv7m_restart提供无 MMU 的 Cortex-M 重启路径。从源码结构看STM32H743 属于 MCUCortex-M7无 MMU阵营因此在总览文档中构建 MCU 内核使用make stm32_defconfig而非 MPU 的multi_v7_defconfig。从 SoC 设备树看 STM32H743 外设布局Linux 通过 arch/arm/boot/dts/st/stm32h743.dtsi 描述 H743 的 SoC 级外设资源。该文件以#include armv7-m.dtsi引入 Cortex-M 基础节点并引用 include/dt-bindings/clock/stm32h7-clks.h 与 include/dt-bindings/mfd/stm32h7-rcc.h 中的时钟/复位宏。逐个节点对照官方文档中的特性清单可以一一印证时钟与复位clk_hse、clk_lse、clk_i2s三个fixed-clock作为外部时钟源频率由板级文件覆盖如 EVAL 板将 HSE 配置为 25MHzrcc: reset-clock-controller58024400以compatible st,stm32h743-rcc, st,stm32-rcc提供#clock-cells 1与#reset-cells 1驱动整个 SoC 的时钟树与复位管理pwrcfg: power-config58024800st,stm32-power-config承担电源域配置rtc节点通过st,syscfg pwrcfg 0x00 0x100与之协作。存储与外部存储器接口sdmmc1: mmc52007000与sdmmc2: mmc48022400使用arm,pl18x/arm,primecell兼容串声明cap-sd-highspeed、cap-mmc-highspeed并将max-frequency设为 120MHz对应文档中的 SD/MMC/SDIO 支持FMCSDRAM/NOR/NAND与双模式 QSPI 由对应驱动在板级配置中使能为大数据量存储与XIP 执行提供硬件基础。网络与 USBmac: ethernet40028000兼容st,stm32-dwmac, snps,dwmac-4.10a即 DesignWare 以太网 MAC时钟名stmmaceth/mac-clk-tx/mac-clk-rx对应 ETH1MAC/ETH1TX/ETH1RX并通过st,syscon syscfg 0x4关联 SYSCFG 寄存器usbotg_hs: usb40040000st,stm32f7-hsotg与usbotg_fs: usb40080000st,stm32f4x9-fsotg分别对应 HS 与 FS 两套 OTG 控制器HS 节点还配置了g-rx-fifo-size、g-np-tx-fifo-size、g-tx-fifo-size等 FIFO 参数。总线外设SPIspi1~spi6兼容st,stm32h7-spi分布于 APB1/APB2/APB4 总线域均带resets属性I2Ci2c1~i2c4兼容st,stm32f7-i2cU(S)ARTusart1/usart2/usart3/uart4/uart8兼容st,stm32h7-uart定时器timer5通用定时器与lptimer1~lptimer5低功耗定时器各自带st,stm32-pwm-lp、st,stm32-lptimer-trigger、st,stm32-lptimer-counter子节点转换器dacdac1/dac2、adc_12adc1/adc2与adc_3adc3ADC 采用st,stm32h7-adc-corest,stm32h7-adc的分层描述。DMA 与显示dma1、dma2st,stm32-dma各 8 通道dma-requests 8与dmamux1st,stm32h7-dmamux16 通道、128 请求、可路由至两个 DMA 主机构成灵活的 DMA 请求路由矩阵mdma1: dma-controller52000000st,stm32h7-mdma提供 16 通道、32 请求的主 DMA用于大块内存搬运ltdc: display-controller50001000st,stm32-ltdc即 LCD 控制器TFT-LCD Display Controller带两个中断号并关联LTDC_CK时钟对应文档中的 LCD 控制器特性。GPIO 与中断pinctrl: pinctrl58020000st,stm32h743-pinctrl下挂gpioa~gpiok共 11 个 GPIO 组GPIOA~GPIOJ 各 16 脚、GPIOK 8 脚每个 bank 均声明gpio-ranges、ngpios与 bank 名并通过extist,stm32h7-exti中断控制器支持引脚中断systick被配置为clock-frequency 250000000250MHz并置为status okay作为 Cortex-M7 系统节拍时钟。可以看到dtsi 中绝大部分外设节点默认status disabled只有板级设备树显式置为okay才会真正使能——这是 Linux 设备树描述硬件、板级激活的经典分层设计。板级移植实例EVAL 与 Discovery仓库在 arch/arm/boot/dts/st 目录提供了两块官方评估板的完整设备树STM32H743i-EVALstm32h743i-eval.dtsmodel STMicroelectronics STM32H743i-EVAL boardcompatible st,stm32h743i-eval, st,stm32h743chosen指定stdout-path serial0:115200n8aliases将serial0指向usart1即调试串口为 USART1、波特率 115200、8N1内存节点memoryd0000000声明 32MB0x2000000外部存储器区LED 采用gpio-leds绿色心跳灯接gpiof 10低有效linux,default-trigger heartbeat红色灯接gpioa 4clk_hse覆盖为clock-frequency 25000000板载 25MHz 晶振i2c1使能并配置i2c-scl-rising-time-ns 185、i2c-scl-falling-time-ns 20mac预留 RMII 模式 PHY 描述当前status disabledsdmmc1使能 4 线 SD 卡带broken-cd、st,sig-dir、st,neg-edge等 ST 私有属性与vmmc-supply2.9Vusbotg_hs使能并配置dr_mode otg关联usb-nop-xceiv无源 PHYadc_12使能并开放adc1通道 0板载电位器采样。STM32H743i-Discoverystm32h743i-disco.dtscompatible st,stm32h743i-disco, st,stm32h743调试串口改用usart24 颗板载 LED绿/橙/红/蓝挂在gpioi 12~15绿色 LED 同样作为心跳触发使能sdmmc14 线、broken-cd、st,neg-edge、vmmc-supply3.3V使能usart2并预留 RMII 以太网 PHY 节点。两块板共用stm32h743.dtsi作为 SoC 基座通过#include stm32h743.dtsi#include stm32h7-pinctrl.dtsi组合再以node覆盖语法激活各自外设——这正是将芯片级描述与板级差异解耦的标准做法读者在移植自研 H743 板卡时照此模式新建一个 dts 并覆盖所需节点即可。内核构建与启动配置按总览文档的指引针对 MCU含 STM32H743构建内核只需make stm32_defconfigarch/arm/configs/stm32_defconfig 中与 H743 直接相关的关键配置包括CONFIG_ARCH_STM32y启用 STM32 平台对应 arch/arm/mach-stm32/KconfigCONFIG_CPU_V7M_NUM_IRQ240Cortex-M7 的 240 个中断号CONFIG_SET_MEM_PARAMy、CONFIG_DRAM_BASE0x90000000以参数方式指定内存基址H743 无 MMU内存映射由硬件决定CONFIG_XIP_KERNELy、CONFIG_XIP_PHYS_ADDR0x08008000支持XIPeXecute In Place就地执行——内核直接从内部 Flash0x08000000 段偏移 0x8000 处运行无需先拷贝到 RAM这正契合 H743 2MB 内部 Flash 的容量优势# CONFIG_MMU is not setCortex-M 内核无 MMUCONFIG_SERIAL_STM32y与CONFIG_SERIAL_STM32_CONSOLEySTM32 USART 串口驱动与控制台CONFIG_I2C_STM32F7yF7/H7 系 I2C 驱动H743 的 i2c1~i2c4 兼容st,stm32f7-i2cCONFIG_MMCy、CONFIG_MMC_ARMMMCIyMMC 子系统与 PrimeCell PL18x 驱动对应 sdmmc1/sdmmc2CONFIG_LEDS_GPIOy、CONFIG_LEDS_TRIGGER_HEARTBEATyGPIO LED 与心跳触发两块官方板均使用。启动时板载设备树通过chosen节点的bootargs如root/dev/ram与stdout-pathserial0:115200n8完成内核参数与控制台初始化对无 MMU 的 MCU 内核设备树描述的外设会由各自驱动在probe阶段按status属性决定是否注册。小结与延伸阅读综上所述STM32H743 在 Linux 内核中的支持是一套完整的文档 平台代码 设备树体系内核文档给出硬件特性基线board-dt.c 提供通用 DT machinestm32h743.dtsi 描述全部 SoC 外设而 stm32h743i-eval.dts 与 stm32h743i-disco.dts 给出可直接编译运行的官方板级范例。芯片的数据手册与参考手册由 ST 官方公开提供原文档已在 Resources 一节给出 ST 官网入口内核侧的行为细节则以本仓库源码为准。如需进一步深入可继续阅读同目录下的 STM32 平台总览MCU/MPU 构建方式与平台布局、stm32h750-overview.rstH750 变体差异以及 DMA 相关的 stm32-dma-mdma-chaining.rstH743 的时钟/复位宏定义可查阅 include/dt-bindings/clock/stm32h7-clks.h 与 include/dt-bindings/mfd/stm32h7-rcc.h。【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考