MacLodge's Blogsince 2022
Linux / STM32MP157

M4 内核开发基础知识

STM32MP1 是 ST 推出的首款 Cortex-A7(下文统一简称为 A7)+ Cortex-M4(下文统一简称 M4) 多核异构 MPU

1. 前言

1.1 简介

STM32MP1 是 ST 推出的首款 Cortex-A7(下文统一简称为 A7)+ Cortex-M4(下文统一简称 M4) 多核异构 MPU

A7 可以运行 Linux 系统,借助 Linux 系统庞大而丰富的软件组件处理复杂应用。比如 UI 界面、网络应用等;

M4 内核的优势就是实时性,因此可以在 M4 内核上运行对于实时性要求严格的应用,比如电机控制、无人机飞控等各种控制算法。 M4 也可以运行各种 RTOS 操作系统,比如 FreeRTOS、UCOS 等。

1.2 相关资料

  1. ST官网:https://www.st.com/content/st_com/zh.html,可设置中文显示

image

image

  1. ST中文社区:https://www.stmcu.org.cn/

image

  1. 意法半导体WiKi:https://www.st.com/content/st_com/zh/wiki/wiki-portal.html

image

  1. 正点原子文档中心:http://www.openedv.com/docs/index.html

image

  1. 开源电子网:http://www.openedv.com/forum.php

image

2. MP157 M4内核和M4单片机的异同

  1. 开发工具、方法一致

STM32MP1 的 M4 和 STM32F4 单片机开发工具一直,都可以通过 MDK、IAR 或 STM32CubeIDE 等 IDE 工具开始,可以直接使用 STlink、JLink 等调试工具进行代码调试。

ST 也为 STM32MP1 提供了 HAL 库,因此我们是可以使用 HAL 库进行开发 M4 内核开发的。

  1. 代码存储不同,导致使用不方便

STM32MP1 的 M4 内核没有内置 Flash,因此不能直接将代码下载到 Flash 里面,在调试的时候需要将代码下载到内部 RAM 中,但是掉电 RAM 中的代码就会丢失。STM32MP1 的做法是用 A7 启动 Linux 内核,然后在 Linux 系统里面加载 M4 的 bin 文件,使用起来比 STM32F4 复杂。

STM32F4 可以直接在 IDE 上将代码下载到内置 Flash 中,使用起来非常方便,因此 STM3MP1 的 M4 内核不能完全替代 STM32F4 单片机。

  1. 资源分配问题

由于外设复用,导致可用外设资源减少 STM32MP1 内部有 A7+M4 两种不同的内核,但是 STM32MP1 的外设资源是一定的,因此就涉及到 A7 和 M4 争抢外设资源的情况,尤其是当 A7 也运行 Linux 系统时候。

即使你只使用 M4 内核,可以访问的外设资源也是有限的,因为有些资源只能 A7 访问。但是 STM32F4 单片机就不会存在这个问题,这也是 STM32MP1 的 M4 不能替代 STM32F4 单片机的另一个主要原因。

总之,STM32MP1 内部的 M4 有其用武之地,将以前 Cortex-A+Cortex-M 单片机的方案集成到一片 SOC 上,简化硬件成本,但是缺点就是 M4 作为单纯的单片机来用的话使用不方便。因此对于 STM32MP1 的内部 M4 要理性看待、合理使用。

3. A7 和 M4 内核公共资源

STM32MP157 内部有 A7 和 M4 两种不同架构的内核,因此就会存在外设资源分配的问题,有些外设是只能 A7 访问的,有些只能 M4 访问,有些是 A7 和 M4 都能访问。

首先,STM32MP157 有多种运行时上下文,这些运行时上下文对应不同的内核和安全模式。

  • A7 安全模式:TrustZone,和 Linux 内核处于同一等级;

  • A7 非安全模式:A7 正常运行 Linux 系统的时候;

  • M4 模式:就是 M4 核运行的时候;

image

image

image

image

image

image

image

注:ST 官方 EVK 开发板上 I2C4 连接了一个 PMIC 芯片,因此表 2.4.1.1 中 M4 是无法使用 I2C4 的。如果你所使用的板子上 I2C4 没有连接 PMIC,那么 M4 是可以使用 I2C4 的。建议严格按照表 2.4.1.1 中的外设资源分配来使用 M4 内核,防止出现一些不可解决的错误,尤其是在将以前 STM32F4 单片机中的程序移植到 ST32MP1 的 M4 内核上的时候

4. 开发环境搭建

主要运用工具软件:keil、st-link

安装过程略去,网上资源很多!

记录一下配置

image

署名-非商业性使用-相同方式共享 4.0 国际(CC BY-NC-SA 4.0)
本文可自由转载与修改,但需保留作者署名与出处链接,不得用于商业用途,且衍生作品需以相同方式共享。 转载请注明:MacLodge's Blog · M4 内核开发基础知识
Esc