STM32MP1开发环境搭建

    • 更新记录
    • 0 – 相关文章
    • 1 – 前期准备
    • 2 – 交叉工具链
      • 2.1 – 安装qt交叉工具链
      • 2.2 – 设置环境变量
    • 3 – 了解STM32MP1启动
      • 3.1 – 启动介质:从什么存储器启动
      • 3.2 – 启动流程
    • 4 – STM32Cube工具安装
      • 4.1 – 安装STM32CubeMX
      • 4.2 – 安装STM32CubeProgrammer
        • 4.2.1 – ubuntu安装jdk
        • 4.2.2 – 安装CubeProgrammer
        • 4.2.3 设置权限
        • 4.2.4 设置环境变量以及USB权限
      • 4.3 – 安装STM32CubeIDE
        • 4.3.1 – 添加可执行权限
        • 4.3.2 – 安装
        • 4.3.3 – 更新Cube库文件
    • 欢迎加群

更新记录

日期 更新内容
20200302 更新安装软件的版本,STM32CubeIDE更新到1.3.0版本

0 – 相关文章

  PanGu STM32MP1资料下载
  PanGu 开发板固件更新

1 – 前期准备

  建议在进行开发环境搭建之前,先直接开机上电,先试试板子的功能,这部分内容官方已经进行了说明,可以访问如下链接:PanGu资料,进入入门指南->硬件资源、软件资源,功能体验。

2 – 交叉工具链

2.1 – 安装qt交叉工具链

  请大家先根据如下教程介绍,安装好交叉工具链:安装教程链接

2.2 – 设置环境变量

  为了方便使用,根据教程安装好工具链之后,建议设置环境变量,方法如下:
  打开~/.bashrc文件,

gedit ~/.bashrc

  在文件最后添加如下内容:

# 设置工具链内容
#dev_tool="None"
dev_tool="pangu_qt"  # pangu_qtif [ $dev_tool == "pangu_qt" ]; thensource /opt/st/pangu-i2som-image-qt/2.6-snapshot/environment-setup-cortexa7t2hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabiexport KERNEL_DIR=~/PanGu/bsp/linuxecho "[set dev_tool pangu_qt success!]"
fi

  设置完成后先关闭当前终端,并重新打开一个终端,使环境变量生效。然后测试环境是否安装成功:

[set dev_tool pangu_qt success!]
xinluyao@ubuntu:~$ $CC -v
Using built-in specs.
COLLECT_GCC=arm-openstlinux_eglfs-linux-gnueabi-gcc
......
Thread model: posix
gcc version 8.2.0 (GCC) 

  为了避免环境设置出错,在每次打开终端,都会自动打印一句话,“[set dev_tool pangu_qt success!]”。如没有出现此打印,请检查您的设置。

  如需要编译yocto,请先修改~/.bashrc

dev_tool="None"	# 编译yocto时使用
#dev_tool="pangu_qt"  # pangu_qt

3 – 了解STM32MP1启动

3.1 – 启动介质:从什么存储器启动

  STM32MP1可以支持从SD卡,eMMC,USB等方式启动,只需要设置拨码开关即可,出厂默认从eMMC启动。拨码开关与启动模式关系如下:

Boot Mode Bit1 Bit2 Bit3
Micro SD Card ON OFF ON
eMMC OFF ON OFF
QSPI Flash ON OFF OFF
USB update OFF OFF OFF
Engineer Mode OFF OFF ON

3.2 – 启动流程

  除了从哪个存储启动外,STM32MP1还有一个boot chains的概念:Boot chains介绍

  简单来说,boot chains就是启动的流程,STM32MP1有两种启动流程,分别是Trusted boot chain和Basic boot chain。
  Basic boot chain:使用U-Boot SPL作为FSBL,U-Boot作为SSBL。
  Trusted boot chain:使用 Trusted Firmware-A (TF-A) 作为FSBL,使用 U-Boot 作为SSBL
  两种启动流程都是FSBL(first-stage boot loader)先执行,然后执行SSBL(second-stage boot loader),再由SSBL去启动linux等。
  对于初学者,不建议深究这个概念,可以将FSBL和SSBL简单抽象成一个uboot去理解,毕竟我们使用这个芯片,目标还是怎么在上面跑应用程序,这种跟应用程序关系不大的东西,需要深究时再去深究更好。
  Basic boot chain简单点,我们就以Basic boot chain进行说明,Trusted boot chain需要的时候用专题介绍。Basic boot chain使用u-boot-spl作为FSBL,使用uboot作为SSBL。u-boot-spl和uboot在同一个uboot工程中编译得到。

4 – STM32Cube工具安装

4.1 – 安装STM32CubeMX

  由于CubeIDE中集成的CubeMX的功能,所以不再单独安装CubeMX。

4.2 – 安装STM32CubeProgrammer

  推荐在windows下安装CubeProgrammer,Ubuntu中安装会稍微麻烦些

4.2.1 – ubuntu安装jdk

  STM32CubeProgrammer是使用java开发,所以需要安装java环境。而且由于ST是使用的Oracle的java环境,所以除了安装openjdk还需要安装一个openjfx。具体命令如下:

sudo apt install openjdk-8-jre
sudo apt install openjfx=8u161-b12-1ubuntu2 libopenjfx-java=8u161-b12-1ubuntu2 libopenjfx-jni=8u161-b12-1ubuntu2

注意: 不要直接使用sudo apt install openjfx,因为ubuntu18或ubuntu19这个命令会直接安装openjfx-11版本,与openjdk-8版本不兼容。也不要安装openjdk-11和openjfx-11,会与软件存在版本兼容性问题。目前java8兼容性还是更强些。

  安装openjdk-8和openjfx-8之后,执行sudo apt update,系统会提示可以升级到11版本。为了避免误操作导致程序无法运行,可以执行以下命令防止自动升级。

sudo apt-mark hold openjdk-8-jre
sudo apt-mark hold libopenjfx-java libopenjfx-jni openjfx

  hold住这几个包后,再次执行upgrade不会升级这几个包,效果如下:
PanGu STM32MP1开发环境搭建-编程知识网

更新20200302 ST对STM32CubeIDE和CubeMX进行更新,已经支持openjfx-11版本,不过STM32CubeProgrammer2.4.0仍不支持openjfx-11,只支持openjfx-8。如只准备安装CubeIDE可以直接使用如下命令安装jdk-11:

sudo apt install openjdk-11-jre
sudo apt install openjfx
笔者ubuntu系统仅安装的STM32CubeIDE,其余工具安装的Windows,所以Ubuntu使用openjdk-11

4.2.2 – 安装CubeProgrammer

xinluyao@ubuntu:~/PanGu/tools$ sudo ./SetupSTM32CubeProgrammer-2.4.0.linux

PanGu STM32MP1开发环境搭建-编程知识网
PanGu STM32MP1开发环境搭建-编程知识网
PanGu STM32MP1开发环境搭建-编程知识网
PanGu STM32MP1开发环境搭建-编程知识网
PanGu STM32MP1开发环境搭建-编程知识网
PanGu STM32MP1开发环境搭建-编程知识网
PanGu STM32MP1开发环境搭建-编程知识网
PanGu STM32MP1开发环境搭建-编程知识网

4.2.3 设置权限

  安装完成后,会在桌面生成如下图标,直接双击这个图片,程序没法直接运行。需要修改下权限。
PanGu STM32MP1开发环境搭建-编程知识网
  在图标上单击鼠标右键,进行权限设置界面,勾选“允许作为程序执行文件”。
PanGu STM32MP1开发环境搭建-编程知识网
  权限设置成功后,图片会变成如下形式:
PanGu STM32MP1开发环境搭建-编程知识网
  双击图标即可运行STM32CubeProgrammer:
PanGu STM32MP1开发环境搭建-编程知识网

4.2.4 设置环境变量以及USB权限

sudo vim ~/.bashrc在文件最后加上如下一行:
export PATH=/usr/local/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin:$PATH

然后 source ~/.bashrc , 或者关闭命令行串口后重新开启一个命令行窗口。
 

  Linux下由于USB设备权限的原因,普通用户无法直接访问USB。需要配置下udev,可以让系统允许普通用户访问USB,这个配置文件ST已经准备好,直接拷贝过去即可。

sudo cp /usr/local/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules/50-usb-conf.rules /etc/udev/rules.d/
sudo service udev restart

4.3 – 安装STM32CubeIDE

4.3.1 – 添加可执行权限

xinluyao@ubuntu:~/PanGu/tools$ chmod +x st-stm32cubeide_1.3.0_5720_20200220_1053_amd64.deb_bundle.sh

4.3.2 – 安装

xinluyao@ubuntu:~/PanGu/tools$ sudo ./st-stm32cubeide_1.3.0_5720_20200220_1053_amd64.deb_bundle.sh

  软件会提示是否接受协议,输入y,然后回车。
PanGu STM32MP1开发环境搭建-编程知识网
  确认协议后,软件会自动完成STM32CubeIDE软件,并打印如下信息:
PanGu STM32MP1开发环境搭建-编程知识网
  我们可以在ubuntu中看到CubeIDE软件图标:
PanGu STM32MP1开发环境搭建-编程知识网

4.3.3 – 更新Cube库文件

  在CubeIDE的Help目录下,选择Manage embedded software packages管理Cube库
PanGu STM32MP1开发环境搭建-编程知识网
  选择最新的package进行安装:
PanGu STM32MP1开发环境搭建-编程知识网
  安装完成后会在$HOME/STM32Cube/Repository下存放STM32MP1的库文件。

欢迎加群

扣扣群号:105335490