|
继续研究STM32MP157C 开发板,程序员研究开发板和教师不同,不会面面俱到,往往是带着问题去寻找解决之道。 : X; c! D, k+ G 9 G) O* e m7 B' g; z$ y8 M 实现了交叉编译cortex-A 的应用程序之后,下一步需要搞定两个问题 ·M4 程序的开发和下载, 毕竟,我们是冲着异构处理器架构来的。# _8 k& k! T" f: P0 E 6 }/ {0 q2 ]! w+ @- a# q1 U" s+ { ! `& [& p5 J0 y2 R2 L+ g5 B0 P 本文参考:STM32MP157——Remoteproc和RPMsg 一文5 Y$ o; X6 V% D- u9 U 2 V+ P. u" x6 F* a V; K 9 D1 M X h) i; x3 Y2 r 1.生成M4固件- P: C1 S7 o* X! K) F" b# \0 c3 K 理论上M4 的编程和普通STM32F系列程序设计没有什么大区别,唯一不同的就是处理器上接口的配置。. n# v( ~; y9 Q5 ~9 r! v- C
可以使用STM32CubeIDE来配置M4的引脚,并且开发相关的应用程序. 2.M4固件的装入方式6 R7 \- M1 U0 ]# Y0 V4 Y5 R M4 固件下载的方式有两种 $ f7 h9 M" o6 e/ R 工程模式(Engineering Mode)' }* ]; [& ?6 s* L4 Q' D. K 9 {- u$ j1 v) J1 @9 C6 ~ % X7 a% H% x/ P1 B- ^: ?# q 类似于使用ST-LINK仿真器将STM32单片机烧录到RAM,适用于M4上电启动模式,无需加载A7核。因为烧写到RAM里面,所以掉电程序会丢失,一般用于调试。。# p8 c6 Z# Q4 R3 p- O+ p8 F% T. o8 L 产品模式(Production Mode) - P0 l; O# a3 C7 z* T / l& m W7 q& I( x0 _7 K M4 的程序存放在A7的 linux 系统的文件中,A7核先启动后,通过remoteproc 的软件引导M4核启动,固件加载执行。* H: J" F$ X6 k. T2 F 我更倾向一开始就直接使用生产方式。. @, x. w4 k7 ?. ?0 |2 y0 g* L' ~& h* s 3 remoteproc 机制9 {" b0 ]$ D6 u" H6 V Remoteproc(Remote Processor Framework),主要作用就是对远程处理器(也就是M4)的生命周期进行管理,即启动、停止远程处理器。- X0 {+ u3 g$ S3 T# k5 U7 e8 X
实际操作时,可以使用开发板上现成的linux 命令行来实现。state powering 等等。在米尔开发板中使用fw_cortex_m4.sh 6 _5 t2 X# g P5 E 不过,米尔科技开发板上相关的文件目录和其说明书不同,埋的够深的。 / M4 Z( o; x4 `: }9 D % X+ b6 P% G' }* t root@myir:/usr/local/Cube-M4-examples/STM32MP157C-EV1/Applications/OpenAMP/OpenAMP_TTY_echo# ls/ L2 Y3 W3 A; Y' v- z5 w) f README fw_cortex_m4.sh lib 而且在lib 中已经放置了OpenAMP_TTY_echo.elf 文件,倒也是满贴心的。) T; S) ^' @( D+ U+ ]# p / y; S- ?/ d# f7 w3 T6 A+ R - M/ ~& e% J0 ^1 i7 I& @+ L# M. `/ ] 4 cortex-A 和cortex-M 之间的信息交换RPMsg框架 两个处理器之间的信息交换是使用RPMsg框架来实现的。
从图上看,进一步地是采用openAMP 来实现。ST 公司在A7 端将处理器信息交换仿真成为一个TTY 终端。而在M4 端仿真成为虚拟UART 。于是,两个处理器之间的通信变成了串口通信那么简单直接。只是这个串口的速度非常块,因为他们完全是在内存完成的。7 t. q& @2 d- @$ R! {' L# q ) X' K' Y( }" G" R! n . u2 H9 K$ l) R' `& y+ d 5 测试 先要运行fw_cortex_m4.sh
+ S; K _8 g, `" \+ O2 x) X. O5 v % I" ]+ c4 O& X+ G. ]6 C+ V3 ? 文章来自:姚家湾 |
STM32MP157双A核Linux + 自研RTOS双系统镜像免费下载
扩展STM32微处理器,实现高性价比、低功耗和灵活性能
STM32MP1 自举程序编程:USB DFU/USART 协议全解析
兔哥心中的ST中文论坛
我心中的ST中文论坛
STM32 开发者指南:ST.com 全新 MCU 产品阵容视觉布局深度解析
深度拆解 STM32MP1 Boot 链路
STM32串口自动识别波特率的原理
STM32MP135 MP157 MP257 CoreMark移植&&跑分对比&&多核心负载不均衡问题排查与解决
STM32--STM32 微控制器详解
微信公众号
手机版