03 开发环境搭建

03 开发环境搭建

by Sallinger

一、Ubuntu和Windows文件互传

  1. 开启Ubuntu下FTP服务
    安装vsftpdsudo apt-get install vsftpd
    安装完成后编辑/etc/vsftpd.confsudo gedit /etc/vsftpd.conf,保证local_enablewrite_enable都是非注释状态
    Alt text
    修改好以后保存退出,重启FTP服务
    sudo /etc/init.d/vsftpd restart
  2. Windows下安装FIlezilla
    Filezilla下载地址
  3. Filezilla软件设置

二、Ubuntu下的NFS和SSH服务开启

  1. 下载NFS sudo apt-get install nfs-kernel-server rpcbind
  2. 在/home目录下mkdir linux创建/linux目录,进入/linux目录cd linux,再在其中创建/nfs目录mkdir nfs,未来此目录供NFS服务使用
  3. 配置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
  4. SSH服务开启sudo apt-get install openssh-server

三、Ubuntu交叉编译工具安装

  1. 交叉编译器是什么
    Ubuntu运行环境是x86架构,而STM32MP157开发板运行环境是ARM架构,Ubuntu自带的gcc编译器编译出来的文件无法被开发板识别和运行,所以需要交叉编译器在x86架构上编译出适用于ARM架构的代码

  2. 下载
    目前可使用的有三种版本
    第一种是正点原子资料里自带的ARM官方发行的2019年9.2版本(/01 正点原子STM32MP157/05、开发工具/01、交叉编译器)

    第二种是ARM官方发行的最新版本2021年10.3版本
    Alt text
    第三种是linaro发布的2023年14.0版本
    Alt text
    我采取的方法是将三种版本都复制/下载下来,需要哪个用哪个

  3. 准备
    创建交叉编译器目录,因为目标架构是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

  4. 解压缩三个文件
    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

  5. 修改环境变量
    打开并编辑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在这里下载
Alt text

我安装了下列插件
Alt text
Alt text

五、串口调试助手GTKterm

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


按照上图中更改configuration,然后点击OK

六、STM32CubeProgrammer安装

  1. 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

  1. 软件安装
    在/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

  2. USB DFU和STLink安装
    调试开发板需要从USB烧写镜像,需要enable这部分功能,在安装STM32CubeProgrammer时,已经产生的相关的文件
    进入STM32CubeProgrammer默认安装路径,寻找这些文件
    cd /home/ros/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules
    其中包含文件如下图

    sudo cp * /etc/udev/rules.d/将其全部复制到指定目录中即可

  3. 此时可以将开发板拨码开关调至000,选择从USB启动,连接开发板和电脑,OTG连接USB3.0端口,未来进行镜像烧写;TTL连接USB2.0端口,未来进行串口调试,打开开发板电源开关

    Alt text
    显示上图则为连接成功

总结

本节主要搭建了嵌入式Linux的开发环境,建立了初步的网络文件互传功能,交叉编译功能,代码编写与调试功能,串口调试功能和文件烧写功能,为将来的开发调试打下了坚实的基础。
回头来看,这一段过程着实是十分艰辛,从一开始我就选择了在实体主机而不是虚拟机上安装独立的Ubuntu系统。Ubuntu 18.04对各种驱动的支持可谓是惨不忍睹,我在调试期间发现了各种问题,故而转向更新版本的Ubuntu 22.04。其中最辛苦的莫过于寻找可用于Ubuntu的串口调试助手,经过数次的失败,我放弃了Putty,Minicom等等要么无法实时调试,要么可视化界面非常难用的工具,最后选择了GTKterm。

posted @ 2023-09-13 21:41  Sallinger  阅读(76)  评论(0)    收藏  举报