超详细 ,小白都会的在Ubuntu系统下搭建STM32开发环境(vscode+stlink|openocd)(keil+stlink)

最近给电脑装了双系统(Windows+Ubuntu),接触到Ubuntu,现在需要在Ubuntu上配置STM32的软件开发环境,弄了两天,有两种方法,可以用VScode,也可以用keil;

一 ,VScode

        进入ubuntu系统后软件换源这种最基本的操作我就不浪费大家时间看了,应该看到这种文章的朋友都知道。下面讲开发STM32的环境配置

一、安装gcc-arm-none-eabi,arm-linux-gcc交叉编译器

(考过计算机三级嵌入式开发的都知道这玩意)

        很多朋友会喜欢用下面的命令

sudo apt-get update
sudo apt-get install gcc-arm-linux-gnueabi

但是我的运行了这个命令后没有在文件中找到arm-none-eabi-gdb这个文件,所有大家先运行这段代码之后,再到ARM官网下载Arm GNU Toolchain,这是官网地址,大家下载对应的版本

之后直接解压(我解压到这里,随便解压到哪儿都可以,但是记得把文件夹的名字改简单一点,方便后面查找)

下面我们将此路径添加到环境变量中

打开~/.bashrc(用什么方式打开都可以,视窗打开也可以,这里我用nano编辑器)

sudo nano ~/.bashrc

 找到最后一行,将gcc-arm-none-eabi的bin目录添加进去,添加完成格式

export PATH=$PATH:这里填刚刚解压得到bin文件夹的路径

保存退出,并执行:source ~/.bashrc

source ~/.bashrc

二 安装openocd,gcc ,make , java(java是为了完成CubeMX的安装),均可以直接在apt完成。

sudo apt install default-jre
sudo apt-get install gcc
sudo apt-get install make
sudo apt-get install openocd

三 安装STM32CubeMX,安装方法基本与Windows上一致,只是这里选择Linux版本

将这个文件解压得到

双击第三个文件,进行安装

打开安装得到的文件夹,鼠标所指的文件就是Linux版本的CubeMX

 四,安装VScode

        这个安装非常简单,可以去官网下载deb包使用下面命令安装

sudo dpkg -i 下载的文件名称.deb

我用的版本的ubuntu自带应用中心

可以用应用中心进行图视化安装

五 st-flash(stlink的驱动)安装

首先安装依赖包

	sudo apt-get install libusb-1.0

	sudo apt-get install cmake

	sudo apt-get install libgtk-3-dev

下载源码(没有安装git自行用sudo apt install git 安装)

git clone https://github.com/texane/stlink.git

因为是github上下载,如果多次安装不成功直接去github上下载源码

下载网址
GitHub - stlink-org/stlink: Open source STM32 MCU programming toolset

下载之后 进入安装目录(如果是直接视窗操作下载的,这里就进入解压后的文件夹)

	cd stlink.git

编译源码

$ git branch -a

$ git checkout v1.4.0-patch

$ make release

$ make debug

$ cd build

$ cmake -DCMAKE_BUILD_TYPE=Debug ..

$ make

$ cd Release; sudo make install;sudo ldconfig

之后进入stlink目录(cd进入或者在终端中打开)然后执行以下命令

	sudo cp stlink.git/config/udev/rules.d/49-stlinkv2.rules /etc/udev/rules.d/
	sudo udevadm control --reload-rules
	sudo udevadm trigger
	sudo cp src/st-flash/\* /usr/bin


安装成功后出现图标

六 安装gdb server

打开gdb官网 选择最新版本的.tar.gz文件,在这里是gdb-11.2.tar.gz,点击下载

当然也可以使用命令

wget https://ftp.gnu.org/gnu/gdb/gdb-11.2.tar.gz

执行如下命令

cd /home/user                       //cd进入下载目录
tar -xzvf gdb-11.2.tar.gz        //解压

生成makefile

cd gdb-11.2/
mkdir build
cd build
../configure

防止make编译时出现tex相关错误,安装 textinfo

sudo apt-get install texinfo

编译安装

make
sudo make   //防止权限不够导致编译不完全
sudo make install

输入gdb --version查看是否安装成功,成功则输出版本号如下图所示

七 配置软件

1 vs中安装插件

然后在CubeMX里面把SW调试勾选上

注意生成makefile工具链

八 在编译器中配置项目(这一步已经可以编译下载了)

我们在终端中输入make ,编译成功

编译就是这样编译, 如何下载呢?我们使用st-flash,在终端中输入

st-flash --format=ihex write  ./build/项目名称.hex

这样我们就把文件下载进入了,但是每次在终端中输入太麻烦,我们打开Makefile文件,在如下图所示位置(clean:后面)添加可制作目标

load:
	make 
	st-flash --format=ihex write  ./build/$(TARGET).hex

这样的话在终端中输入make load ,就可以直接编译下载了,同样可以添加(只完成下载任务)的可制作目标

但是这样还是麻烦,每次都要在终端中输入命令,所以我们选择配置任务

选择使用模板创建tasks.json文件

选择others

得到下面json文件

把lable里“echo”改为“build”,把command里“echo Hello”改为“make”,同时,按照这个方法,编写其他对象,比如把下载download和编译下载load编写进去,并加入group对象;

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "make",
            "problemMatcher": [],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "load",
            "type": "shell",
            "command": "make load",
            "problemMatcher": [],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "download",
            "type": "shell",
            "command": "make download",
            "problemMatcher": []
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

保存tasks.json文件,这时就可以按住shift+ctrl+B(或者在终端里选择运行生成任务),可以一键编译下载了

如果还觉得麻烦,想用一个键,可以

  • 按下 Ctrl+Shift+p 输入 key
  • 首选项:打开键盘快捷方式
  • 这里就可以更改运行生成任务的快捷键,我把它改成了F7,以后直接按F7就好了

九 加入调试功能

在运行里选择添加配置

这里不要选择STLINK,会报错,可能是因为没有安装stlink-server;可以参考ubuntu系统下VSCode调试出现 STLINK Failed to launch ST-LINK GDB Server错误的解决办法_please check terminal tab (gdb-server) for output -CSDN博客

第5行填入当前工程的.elf文件的路径,之前已经生成过了,可以直接在资源管理器里面复制路径

第10行填入配置文件

这行代码查看接口配置文件

ls /usr/local/share/openocd/scripts/interface/

这行代码查看芯片配置文件

ls /usr/local/share/openocd/scripts/target/

选择你需要的调试器配置文件和芯片配置文件,填写相应路径,如图所示

按F5 ,终于可以调试啦

可能有些朋友这一步调试不成功,可能是因为没有添加gdb的路径

选择扩展设置

把gdb的路径添加进去

注意,dgb的路径在文章开头一栏:“ 一、安装gcc-arm-none-eabi,arm-linux-gcc交叉编译器“下载c出来的bin文件夹里,上文有讲过,没调试成功的宝子手动把路径加进去

按照上文 “一、安装gcc-arm-none-eabi,arm-linux-gcc交叉编译器“的路径,应该在

/home/suke/下载/armnone/arm11/bin/arm-none-eabi-gdbt

添加进去就能进行调试啦

二 ,keil+st-flash

想要在Linux坏境下运行windows程序,可以借助工具软件wine,

sudo apt install wine

安装完成后,就可以运行exe程序了

首先下载安装KeilMDK的exe安装程序,把他放入合适位置

在终端中打开

输入  wine 软件包名称.exe

 这样就可以进行安装了

安装成功,

后面配置相应的芯片支持包和Windows上的操作一致,都是从官网下载;

但是下载很慢,如果你有一台装过keil的Windows电脑,可以直接复制./keil/arm/这个文件夹

然后把他替换/home/suke/.wine/drive_c/Keil_v5/ARM/这个文件夹

 注意:./wine是隐藏文件夹,需要设置显示隐藏文件

这样支持包也装好了

打开keil

把生成.hex文件勾选上

可以正常编译了,编译生成的hex文件可以放入st-GUI下载了

打开

导入hex文件进行下载,当然,也可以通过OPENOCD进行调试

openOCD连接目标芯片的命令格式为:

openocd -f <接口配置文件> -f <目标芯片配置文件>

我们按照下面三个步骤即可下载程序:

  1. 目标芯片挂起:-c init -c halt
  2. 烧写:-c “flash write_image erase xxx.hex”
  3. 复位: -c reset -c halt -c shutdown

 

  • 30
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值