03 开发环境搭建
03 开发环境搭建
by Sallinger
一、Ubuntu和Windows文件互传
- 开启Ubuntu下FTP服务
安装vsftpdsudo apt-get install vsftpd
安装完成后编辑/etc/vsftpd.confsudo gedit /etc/vsftpd.conf,保证local_enable和write_enable都是非注释状态
![Alt text]()
修改好以后保存退出,重启FTP服务
sudo /etc/init.d/vsftpd restart - Windows下安装FIlezilla
Filezilla下载地址 - Filezilla软件设置
二、Ubuntu下的NFS和SSH服务开启
- 下载NFS
sudo apt-get install nfs-kernel-server rpcbind - 在/home目录下
mkdir linux创建/linux目录,进入/linux目录cd linux,再在其中创建/nfs目录mkdir nfs,未来此目录供NFS服务使用 - 配置NFS
sudo gedit /etc/exports打开NFS配置文件
在配置文件中添加/home/ros/linux/nfs *(rw, sync,no_root_squash)
![Alt text]()
重启NFS服务sudo /etc/init.d/nfs-kernel-server restart - SSH服务开启
sudo apt-get install openssh-server
三、Ubuntu交叉编译工具安装
-
交叉编译器是什么
Ubuntu运行环境是x86架构,而STM32MP157开发板运行环境是ARM架构,Ubuntu自带的gcc编译器编译出来的文件无法被开发板识别和运行,所以需要交叉编译器在x86架构上编译出适用于ARM架构的代码 -
下载
目前可使用的有三种版本
第一种是正点原子资料里自带的ARM官方发行的2019年9.2版本(/01 正点原子STM32MP157/05、开发工具/01、交叉编译器)第二种是ARM官方发行的最新版本2021年10.3版本
第三种是linaro发布的2023年14.0版本
![Alt text]()
我采取的方法是将三种版本都复制/下载下来,需要哪个用哪个 -
准备
创建交叉编译器目录,因为目标架构是ARM,故命名为arm目录:sudo mkdir /usr/local/arm
进入存放三个版本编译器的目录,这里我存放在Downloads目录中:cd /home/ros/Downloads
拷贝三个文件到arm目录下sudo cp gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz gcc-linaro-14.0.0-2023.06-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm -f -
解压缩三个文件
sudo tar -vxf gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz
sudo tar -vxf gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz
sudo tar -vxf gcc-linaro-14.0.0-2023.06-x86_64_arm-linux-gnueabihf.tar.xz -
修改环境变量
打开并编辑profile文件sudo gedit /etc/profile
添加三个交叉编译器的路径
#export PATH=$PATH:/usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin
export PATH=$PATH:/usr/local/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin
#export PATH=$PATH:/usr/local/arm/gcc-linaro-14.0.0-2023.06-x86_64_arm-linux-gnueabihf/bin
这里我使用ARM官方发布的10.3版本,故将其余两个注释掉。修改好后就保存退出,然后重启Ubuntu系统
6. 安装相关库
重启后在终端中输入sudo apt-get update进行更新,然后sudo apt-get install lsb-core lib32stdc++6安装其他依赖库
7. 验证安装成功
ARM交叉编译器:arm-none-linux-gnueabihf-gcc -v
linaro交叉编译器:arm-linux-gnueabihf-gcc -v

四、安装Visual Studio Code
Visual Studio Code在这里下载

我安装了下列插件


五、串口调试助手GTKterm
在开发的过程中,需要通过串口(serial port)进行调试,这里我们使用Ubuntu上自带可视化界面的GTKterm
在终端中使用sudo apt-get install gtkterm命令进行安装
安装成功后使用sudo gtkterm打开,一定要加“sudo”,否则无法调试


按照上图中更改configuration,然后点击OK
六、STM32CubeProgrammer安装
- Java环境安装
STM32CubeProgrammer需要JAVA运行环境,Ubuntu中默认安装了OpenJDK环境,但是需要先卸载掉默认的OpeJDK,首先输入java -version查看一下当前系统下的OpenJDK
![]()
卸载OpenJDKsudo apt-get remove openjdk*
建立Java目录sudo mkdir /usr/local/java
将安装文件复制到目录下,解压缩sudo tar vzxf jre-8u271-linux-x64.tar.gz -C /usr/local/java
修改profile文件,添加Java变量sudo gedit /etc/profile,在文件中添加:
export CLASSPATH=.:/usr/local/java/jre1.8.0_271/lib
export PATH=$PATH:/usr/local/java/jre1.8.0_271/bin

保存退出,重启电脑,打开终端输入java -version

如图显示则安装成功,此处使用的是正点原子提供的旧版java
-
软件安装
在/linux目录下新建/tool目录
正点原子的教程资料目录:开发板光盘→5、开发工具→2、ST 官方开发工具→en.stm32cubeprog_v2-5-0.zip,将文件复制到/tool目录中
解压unzip en.stm32cubeprg-lin-v2-14-0.zip
解压后赋予安装文件权限chmod 777 en.stm32cubeprg-lin-v2-14-0.zip
运行安装文件./SetupSTM32CubeProgrammer-2.14.0.linux
安装成功后再安装Libusb1.0软件包sudo apt-get install libusb-1.0.0-dev -
USB DFU和STLink安装
调试开发板需要从USB烧写镜像,需要enable这部分功能,在安装STM32CubeProgrammer时,已经产生的相关的文件
进入STM32CubeProgrammer默认安装路径,寻找这些文件
cd /home/ros/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules
其中包含文件如下图
![]()
sudo cp * /etc/udev/rules.d/将其全部复制到指定目录中即可 -
此时可以将开发板拨码开关调至000,选择从USB启动,连接开发板和电脑,OTG连接USB3.0端口,未来进行镜像烧写;TTL连接USB2.0端口,未来进行串口调试,打开开发板电源开关
![]()
![Alt text]()
显示上图则为连接成功
总结
本节主要搭建了嵌入式Linux的开发环境,建立了初步的网络文件互传功能,交叉编译功能,代码编写与调试功能,串口调试功能和文件烧写功能,为将来的开发调试打下了坚实的基础。
回头来看,这一段过程着实是十分艰辛,从一开始我就选择了在实体主机而不是虚拟机上安装独立的Ubuntu系统。Ubuntu 18.04对各种驱动的支持可谓是惨不忍睹,我在调试期间发现了各种问题,故而转向更新版本的Ubuntu 22.04。其中最辛苦的莫过于寻找可用于Ubuntu的串口调试助手,经过数次的失败,我放弃了Putty,Minicom等等要么无法实时调试,要么可视化界面非常难用的工具,最后选择了GTKterm。

STM32MP157嵌入式学习,开发环境搭建







浙公网安备 33010602011771号