ubuntu 下搭建STM32MP157的交叉编译环境

ST 公司推出了了Cortex+A/cortex-M 异构解构的单芯片多核处理器产品了,虽然目前只有单核或者双核A7加M4 系列的产品,虽然和4核产品相比,MPU 的性能显得弱了一点,但是它融合了可以运行linux OS的coetex-A 处理器和实时性强,外设丰富的cortex-M4 处理器,在嵌入式是应用中具有其独特性。买了一块米尔科技的STM32MP157 开发板,体验一下。货还在路上,顺丰快递员还没有敲门。先看资料,搭开发环境。

STM32MP1系列

目前 该系列有三个产品

  1. STM32MP157:双Cortex-A7内核@ 800 MHz、Cortex-M4内核@ 209 MHz、3D GPU、DSI显示接口、以及CAN FD
  2. STM32MP153:双Cortex-A7内核@ 800 MHz、Cortex-M4内核@ 209 MHz、以及CAN FD
  3. STM32MP151:单Cortex-A7内核@ 800 MHz、Cortex-M4内核@ 209 MHz

 

这里以STM32 MP157 为例,介绍这个产品的特点:

处理器能力

  • 运行于800 MHz的双Cortex®-A7内核 
    • 32KB的L1指令缓存
    • 32KB的L1数据缓存
    • 256KB的Level 2缓存
  • 运行于209 MHz的Cortex®-M4内核
    • 单精度浮点单元(FPU)
    • 一套完整的数字信号处理器(DSP)指令
    • 内存保护单元用于增强应用安全性

外围电路

  •   1个千兆以太网口
  •   2 个CAN-FD 接口
  •   6个SPI口
  •   4 × UART + 4 × USART

显示

  • 3D GPU
  • LCD-TFT 
  • MIPI® DSI 2

 

这样的配置用于小型的物联网,工业控制器已经是足够了。而批量的价格12美金左右。和STM32H7 系列产品价格相差不大了。其实,选择MCU 有时候也不是完全冲着MCU 主频,价格和核的数量去的。也要看是否满足软件的需求。我们需要实现软件的动态装入,实现软件组件化,因此,需要处理器具有MMU功能,所有cortex-M4 就无法满足要求了。如果采用瑞芯微,全志的MCU ,内核数量多,价格低,但是外围电路少。当然NXP 的i.MX 系列应该是不错的。但是imax 6 似乎旧了一点,外围电路也不完全符合我们的要求。

 

开发环境

STM32MP1 的一个缺点是它太新的,网络上能够找到的文章太少,而且大都是无头无尾地抛出一段来。主要还是要看ST的wiki。参考文章:

扫描二维码关注公众号,回复: 12026997 查看本文章

Install the SDK

Create a simple hello-world application

 

拿到手的第一件事情就是编译一个hello world 应用程序,让它跑起来。

1 下载SDK

Developer Package SDK

下载完成后解压。

 建立工作空间 STM32MPU_workspace,在其中又建立几个文件夹

  -tmp -用于存放解压的SDK

      - Develop-Package

            -SDK    

3运行Install.sh

进入tmp 运行SDK的安装shell

yao@yao-dc:~/yao2020/STM32MPU_workspace/tmp/stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/sdk$ ./st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-openstlinux-5.4-dunfell-mp1-20-06-24 -d /home/yao/yao2020/STM32MPU_workspace/Develop-Package/SDK

然后就一路安装下来,没什么麻烦。

4 启动SDK

 yao@yao-dc:~/yao2020/STM32MPU_workspace/Develop-Package$ source SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

不知道为啥,每次都要启动一下?

5 检查版本

yao@yao-dc:~/yao2020/STM32MPU_workspace/Develop-Package$ $CC --version
arm-ostl-linux-gnueabi-gcc (GCC) 9.3.0

6 编写hello 程序

#include <stdio.h>
int main(void){
    printf("Hello!\n");
    return 0;
}

7 编译

(base) yao@yao-dc:~/yao2020/STM32MPU_workspace$ $CC hello.cpp -o hello

编译成功了! 先写到这里吧!,顺丰的快递员进入小区了。

8 下载到开发版

快递员送来了开发板,包装配件都不错,说明还是彩色的。照他们的方式连线。IP 地址的DHCP 是可以用的,连上路由器后自动分配了192.168.31.194 (通过串口终端方式ifconfig 命令看的。之后就不用串口终端了。

在开发板上建立了一个工作目录 workspace

mkdir workspace

使用 scp 将编译好的hello 传送到开发板

(base) yao@yao-dc:~/yao2020/STM32MPU_workspace$ scp hello [email protected]:/home/root/workspace
hello                                                   100%   11KB  11.4KB/s   00:00    

9 使用ssh 实现远程终端

ssh [email protected]

10 测试 C++

#include <stdio.h>
class hello {
    public:
     void sayHello();
};
void hello::sayHello(){
     printf("Hello! from object\n");
}
int main(void){
   hello Hi;
   Hi.sayHello();
    return 0;
}

编译下载,没有问题。

猜你喜欢

转载自blog.csdn.net/yaojiawan/article/details/109184023