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不会升级这几个包,效果如下:
更新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
4.2.3 设置权限
安装完成后,会在桌面生成如下图标,直接双击这个图片,程序没法直接运行。需要修改下权限。
在图标上单击鼠标右键,进行权限设置界面,勾选“允许作为程序执行文件”。
权限设置成功后,图片会变成如下形式:
双击图标即可运行STM32CubeProgrammer:
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,然后回车。
确认协议后,软件会自动完成STM32CubeIDE软件,并打印如下信息:
我们可以在ubuntu中看到CubeIDE软件图标:
4.3.3 – 更新Cube库文件
在CubeIDE的Help目录下,选择Manage embedded software packages管理Cube库
选择最新的package进行安装:
安装完成后会在$HOME/STM32Cube/Repository下存放STM32MP1的库文件。
欢迎加群
扣扣群号:105335490