STM32MP157学习笔记(一) ---- M4内核开发基础知识

一、前言

1、简介

        STM32MP1 是 ST 推出的首款 Cortex-A7(下文统一简称为 A7) +Cortex-M4(下文统一简
称 M4) 多核异构 MPU, A7 可以运行 Linux 系统,借助 Linux 系统庞大而丰富的软件组件处理
复杂应用。比如 UI 界面、网络应用等, M4 内核的优势就是实时性,因此可以在 M4 内核上
运行对于实时性要求严格的应用,比如电机控制、无人机飞控等各种控制算法。 M4 也可以运
行各种 RTOS 操作系统,比如 FreeRTOS、 UCOS 等。

 2、相关资料

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

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第1张图片

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第2张图片

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

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第3张图片

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

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第4张图片

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

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第5张图片

       

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

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第6张图片

 二、MP157M4内核和M4单片机的异同

        1、开发工具、方法一致
        STM32MP1的M4和STM32F4单片机开发工具一直,都可以通过MDK、IAR或STM32Cube
IDE等IDE工具开始, 可以直接使用STlink、JLink等调试工具进行代码调试。ST也为STM32MP1
提供了 HAL 库,因此我们是可以使用 HAL 库进行开发 M4 内核开发的。

        2、 代码存储不同,导致使用不方便
        STM32MP1 的 M4 内核没有内置 Flash,因此不能直接将代码下载到 Flash 里面,在调试的
时候需要将代码下载到内部 RAM 中,但是掉电 RAM 中的代码就会丢失。 STM32MP1 的做法
是用 A7 启动 Linux 内核,然后在 Linux 系统里面加载 M4 的 bin 文件,使用起来比 STM32F4
复杂。 STM32F4 可以直接在 IDE 上将代码下载到内置 Flash 中,使用起来非常方便,因此
STM3MP1 的 M4 内核不能完全替代 STM32F4 单片机。

        3、由于外设复用,导致可用外设资源减少
        STM32MP1 内部有 A7+M4 两种不同的内核,但是 STM32MP1 的外设资源是一定的,因此
就涉及到 A7 和 M4 争抢外设资源的情况,尤其是当 A7 也运行 Linux 系统时候。 即使你只使用
M4 内核,可以访问的外设资源也是有限的,因为有些资源只能 A7 访问。但是 STM32F4 单片
机就不会存在这个问题, 这也是 STM32MP1 的 M4 不能替代 STM32F4 单片机的另一个主要原因。

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

三、A7 和 M4 内核公共资源

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

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

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

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

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

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第7张图片

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第8张图片

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第9张图片

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第10张图片

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第11张图片

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第12张图片

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第13张图片

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

四、开发环境搭建

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

 安装过程略去,网上资源很多!  记录一下配置:

STM32MP157学习笔记(一) ---- M4内核开发基础知识_第14张图片

 

 

 

你可能感兴趣的:(Linux,STM32MP1,STM32)