工业4.0神器?正点原子 STM32MP257 异核架构登场!Cortex-A35 x Cortex-M0,能玩出哪些花样?
本文基于正点原子ATK-DLMP257B开发板 2G DDR4 16G eMMC 版本实测STM32MP257异构双核 Cortex-A35 Cortex-M0 的低功耗唤醒机制从硬件设计、设备树配置到固件编译和remoteproc 操作全流程一网打尽正点原子STM32MP257开发板 ARM嵌入式Linux异核A35M33 AI工控工业4.0神器STM32MP257异核架构登场Cortex-A35 x Cortex-M0能玩出哪些花样一、硬件设计LPUART1 复用引脚选择二、软件配置详解1. 修改设备树配置1禁用原有 I2C8 占用2新增 LPUART1 节点及别名3配置 PZ4/PZ9 引脚复用2. 编译 MailBox_lp_wakeup 工程3. 上传固件到板子三、实验验证M0 唤醒 A35 实战演示1. 停止 remoteproc 并指定固件2. 启动 M0 内核3. 配置唤醒机制4. A35 进入休眠四、运行结果观察五、总结一、硬件设计LPUART1 复用引脚选择在意法半导体STM32MP257DAK3芯片中LPUART1可以复用多组引脚。基于正点原子ATK-DLMP257B 开发板我们选用了PZ4和PZ9这两个已经引出的引脚来完成LPUART1的调试功能PZ4- LPUART1_RXPZ9- LPUART1_TX不仅方便调试也避免了额外的硬件连线干扰。二、软件配置详解1. 修改设备树配置1禁用原有 I2C8 占用默认stm32mp257d-atk-ddr-2GB.dts设备树中PZ4 和 PZ9 被 I2C8 占用了。我们需要禁用该节点i2c8{pinctrl-namesdefault,sleep;pinctrl-0i2c8_pins_a;pinctrl-1i2c8_sleep_pins_a;statusdisabled;/delete-property/dmas;/delete-property/dma-names;};2新增 LPUART1 节点及别名/{aliases{serial3lpuart1;};};lpuart1{pinctrl-namesdefault;pinctrl-0lpuart1_pins_a;/delete-property/dmas;/delete-property/dma-names;uart-has-rtscts;statusokay;};3配置 PZ4/PZ9 引脚复用在stm32mp25-pinctrl-atk-ddr-2GB.dtsi文件中添加pinctrl_z{lpuart1_pins_a:lpuart1-0{pins1{pinmuxSTM32_PINMUX(Z,9,AF6);/* TX */bias-disable;drive-push-pull;slew-rate0;};pins2{pinmuxSTM32_PINMUX(Z,4,AF6);/* RX */bias-pull-up;};};};2. 编译 MailBox_lp_wakeup 工程使用 STM32CubeIDE 导入路径/Projects/STM32MP257D-ATK/Applications/CM0_MailBox_DEMO/MailBox_lp_wakeup编译 NonSecure 工程目标为 CA35TDCID_m0plus编译后生成的 .elf 文件路径为/CM0PLUS/NonSecure/CA35TDCID_m0plus/MailBox_lp_wakeup_NonSecure.elf3. 上传固件到板子scpMailBox_lp_wakeup_NonSecure.elf root192.168.7.1:/lib/firmware三、实验验证M0 唤醒 A35 实战演示1. 停止 remoteproc 并指定固件echostop /sys/class/remoteproc/remoteproc0/stateechoMailBox_lp_wakeup_NonSecure.elf /sys/class/remoteproc/remoteproc1/firmware2. 启动 M0 内核echostart/sys/class/remoteproc/remoteproc1/state启动成功后串口将输出来自 M0 的日志信息。3. 配置唤醒机制# 开启 IPCC 唤醒能力echoenabled /sys/devices/platform/soc0/46250000.mailbox/power/wakeup# 设置7秒后唤醒动作echo7 /dev/mailbox04. A35 进入休眠rtcwake--date30sec-m memLinux 进入 LP_Stop2 模式M0 将在 7 秒后通过 IPCC 唤醒 A35四、运行结果观察在 M0 串口输出(5)A35 wakeup requestdone!(6)Hello from CM0随后Linux 控制台出现Enabling non-boot CPUS......代表 A35 被成功唤醒验证异核低功耗唤醒机制正常工作五、总结这一整套流程清晰地展示了如何灵活配置LPUART1 用于调试 M0如何通过 remoteproc 和 IPCC 实现异核低功耗唤醒STM32MP257D 在工业低功耗控制场景中的强大潜力如果你也对STM32MP2系列的低功耗异构通信机制感兴趣欢迎留言交流我们会继续更新更多高级功能测试例如M0轮询ADC采样、M0定时任务调度、A35远程下发配置指令等