STM32MP157开发笔记 | 02 - 开发环境搭建(A7核、M4核)

一、STM32MP157

1. 系列介绍

STM32MP157微处理器基于灵活的双Arm® Cortex®-A7内核(工作频率800 MHz)和Cortex®-M4内核(工作频率209 MHz)架构,并配一个专用的3D图形处理单元(GPU)、MIPI-DSI显示接口、以及一个CAN FD接口。

STM32MP157 3D OpenGL ES 2.0图形引擎专为在图形用户界面(GUI)、菜单显示或动画等应用中加速3D图形而设计,可以配合面向行业标准API优化的软件堆栈,支持Android™和Linux®嵌入式开发平台。

除了一个LCD-TFT显示控制器,STM32MP157系列还内嵌多达37个通信外设,包括10/100M或千兆以太网、3个 USB 2.0主机/OTG、29个定时器和高级模拟器件。

除了真随机数生成器(TRNG)、硬件加密和哈希处理器之外,安全选项还包括安全启动、TrustZone®外设、以及主动篡改检测功能。

2. STM32MP157A概览

3. 文档

4. STM32MPU wiki

Wiki地址:https://wiki.stmicroelectronics.cn/stm32mpu

二、ST提供的工具和软件

1. STM32MPU Embedded Software Package

STM32MPU Embedded Software Package 包括以下三种包:

  • Starter Package:入门包,快速入门 STM32MP 系列微处理器,一般是编译好的固件
  • Developer Package:开发包,包括SDK、uboot源码、Linux源码等,用于我们自己修改
  • Distribution Package:发行包,可以创建我们自己的Linux发布包

2. Developer Package

本系列文章中我们主要使用Developer Package,其中主要内容有:

  • SDK:用于在主机上交叉编译开发(含交叉编译器)
  • 源码:
    • U-Boot
    • Trusted Firmware-A (TF-A)
    • Linux kernel®
    • Open source Trusted Execution Environment (OP-TEE)(可选)
  • The STM32Cube MPU Package
    • STM32CubeMX
      • 为 OpenSTLinux distribution 生成设备树
      • 为STM32CubeIDE生成初始化代码
    • STM32CubeIDE
      • 用于M核开发

三、A核开发环境搭建(Develop on Arm® Cortex®-A7)

1. 系统要求


存储空间建议100G,我安装完SDK之后的空间占用情况如下:

本文中我使用ubuntu 18.04,阿里源。

2. 安装SDK

(1)安装额外的包:

需要的包:

sudo apt-get update
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 pylint xterm
sudo apt-get install make xsltproc docbook-utils fop dblatex xmlto
sudo apt-get install libmpc-dev libgmp-dev

开发包中需要用到的包:

sudo apt-get install libncurses5 libncurses5-dev libncursesw5-dev libssl-dev linux-headers-generic u-boot-tools device-tree-compiler bison flex g++ libyaml-dev libmpc-dev libgmp-dev

安装repo:

sudo apt-get install repo

一些有用的工具:

sudo apt-get install coreutils bsdmainutils sed curl bc lrzsz corkscrew cvs subversion mercurial nfs-common nfs-kernel-server libarchive-zip-perl dos2unix texi2html diffstat libxml2-utils

(2)额外的配置

Linux系统上,默认允许MMC上有8个分区,修改支持16个分区,将以下选项添加到modprobe中:

echo 'options mmc_block perdev_minors=16' > /tmp/mmc_block.conf
sudo mv /tmp/mmc_block.conf /etc/modprobe.d/mmc_block.conf

(3)下载SDK

下载链接

下载后放到 $HOME/STM32MPU_workspace/tmp 路径下,重命名为.tar.xz格式,解压:

cd $HOME/STM32MPU_workspace/tmp
tar xvf en.SDK-x86_64-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17.tar.xz

(4)安装SDK

创建 STM32MP15 开发包SDK 路径:

mkdir -p $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/SDK

给脚本可执行权限:

sudo chmod +x stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1.11-openstlinux-5.10-dunfell-mp1-21-11-17.sh

执行脚本(将命令中的mculover666替换为自己的用户名):

./stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1.11-openstlinux-5.10-dunfell-mp1-21-11-17.sh -d /home/mculover666/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/SDK

安装完成后如图:

(5)环境变量生效:

cd $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package
source SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

(6)检查SDK是否可用

① 检查目标架构(arm):

echo $ARCH

② 检查目标工具的工具链二进制前缀(arm-ostl-linux-gnueabi-):

echo $CROSS_COMPILE

③ 检查交叉编译器:

echo $CC

结果:

arm-ostl-linux-gnueabi-gcc -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/home/mculover666/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

④ 检查交叉编译器版本:

$CC --version

结果如下:

arm-ostl-linux-gnueabi-gcc (GCC) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

⑤ 检查SDK版本:

echo $OECORE_SDK_VERSION

结果如下:

3.1.11-openstlinux-5.10-dunfell-mp1-21-11-17

至此,SDK安装完成,STM32MP157 开发环境搭建完成。

四、M核开发环境搭建(Develop on Arm® Cortex®-M4)

1. 安装STM32CubeIDE

下载链接:STM32CubeIDE

下载之后解压:

unzip en.st-stm32cubeide_1.8.0_11526_20211125_0815_amd64.sh_v1.8.0.zip

赋予可执行权限:

sudo chmod -x st-stm32cubeide_1.8.0_11526_20211125_0815_amd64.sh
sduo ./st-stm32cubeide_1.8.0_11526_20211125_0815_amd64.sh

安装完成后如图:

启动后界面如下:

2. 安装STM32Cube MP1 package

下载扩展包到$HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package目录,下载链接:en.STM32Cube_FW_MP1_V1-5-0.zip


解压:

unzip en.STM32Cube_FW_MP1_V1-5-0_v1.5.0.zip


内容说明如下:

STM32Cube_FW_MP1_V1.5.0
├── Drivers
│   ├── BSP                          BSP drivers for the supported STM32MP1 boards
│   │   └── [...]
│   ├── CMSIS
│   │   └── [...]
│   └── STM32MP1xx_HAL_Driver        HAL drivers for the supported STM32MP1 devices
│       └── [...]
├── _htmresc
│   └── [...]
├── License.md
├── Middlewares
│   └── [...]
├── package.xml
├── Projects
│   ├── STM32CubeProjectsList.html   List of examples and applications for STM32CubeMP1 package
│   ├── STM32MP157C-DK2              Set of examples and applications → STM32MP15 Discovery kits
│   │   └── [...]
│   └── STM32MP157C-EV1              Set of examples and applications → STM32MP15 Evaluation boards
│       └── [...]
├── Readme.md
├── Release_Notes.html               Release note for STM32CubeMP1 package
└── Utilities
    └── [...]

3. 修改、编译、加载新固件

3.1. 打开工程

(1)关闭欢迎界面,进行工作界面:

(2)导入示例工程

点击【File】-> 【import】,选择导入已经存在的工程:

(3)选择打开 OpenAMP_TTY_echo 示例工程

工程所在位置在$HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/STM32Cube_FW_MP1_V1.5.0/Projects/STM32MP157C-DK2/Applications/OpenAMP/OpenAMP_TTY_echo/STM32CubeIDE,选择工程根路径:

点击【Finish】后进入工程界面:

3.2. 编译工程


编译完成:

3. 检查与开发板的连接

必须保证开发板网络和开发机连通。

软件会下载会检测开发板ip核状态:

点击建立串口终端:

建立成功后如图:

4. 开启调试会话

选择 OpenAMP_TTY_echo_CM4 工程,右键单击,选择 【Debug As】 -> 【Debug configurations… 】,打开调试配置窗口:

配置好后点击【Debug】进入调试:

在串口终端查看CM4核的两个串口:

测试CM4核的串口是否回传:

M4核正常运行,LED7正常闪烁,测试完毕。

版权声明:本文为CSDN博主「Mculover666」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Mculover666/article/details/121969843

生成海报
点赞 0

Mculover666

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

Cortex-A7中断系统

一、中断向量表 中断向量表存放的是中断向量,中断服务程序的入口地址或存放中断服务程序的首地址成为中断向量,因此中断向量表是一系列中断服务程序入口地址组成的表。当某个中断被触发以后就会自动跳转到中断向量表中对应的中断

探讨mos管串并联分裂问题

增加沟道长度,串联。增加Mos管宽度,并联。 并联减小栅端电阻。 并联(增加W,分割W) 管子的宽度则是由 Finger Width 和 Fingers 的乘积决定。其中 finger width和 fingers 则根据版图设计要求来设置