ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx

需要用到的软件

  • gcc套件
  • armgcc(arm交叉编译器)
  • armgdb(arm调试器)
  • openocd(连接调试器和片上系统)
  • stmcubemx(生成库文件和makefile;启动文件)
  • vscode

需要用到的硬件

  • 某原子战舰开发板
  • stlink-v2调试器

现在开始,ubunt系统安装在vmware里,版本18.04,已安装软件,git,Sogou输入法,wps,其余均未动过

vscode安装

vscode安装
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第1张图片
百度vscode,第一个就是,下载时候选择deb后缀的包
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第2张图片选择svaefile
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第3张图片
下载完成后安装,和win10下安装软件几乎一样,只是多了一个输入密码的步骤
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第4张图片可以看到,vscode已经在了

stmcubemx安装

stmcubemx安装
需要先安装jdk或者jre,此处选择安装jdk,因为比较简单,终端输入以下命令
可以看到安装的是openjdk,和oraclejdk略有区别,但并不影响使用,详情可
以自行百度,此处不纠结。我们遵循两个原则,第一,能用开源免费的东西
尽量用开源免费的,能使用最少的依赖搭建起来尽量不多用任何一个条件。

sudo apt-get update   更新软件包列表

sudo apt-get install openjdk-8-jdk 安装jdk8

java -version   查看是否安装成功,出现下面这段就证明安装成功

去官网下载stm32cubemx包,地址:https://www.st.com/zh/embedded-software.html
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第5张图片ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第6张图片后续填入邮箱和姓名后stm会发送一个下载地址到邮箱,前提是你要注册了账号,现在我们到邮箱下载该包。

ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第7张图片下载完成后解压该包,解压后会有一个.linux的包,在该目录下打开终端
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第8张图片我是没有动,直接就在Downloads文件夹下就提取了,复制该文件名字,输入以下代码,可以看到在安装过程中遇到一些问题,大家可以仔细看一下上图终端的指令以及报错信息,主要就是权限问题,即使root了还是权限不够,后来输入了chomd a+x filename后解决了,filename就是要安装的包的名字,也就是我们刚才复制的名字,弹出安装界面后一路next就可以了。
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第9张图片安装路径最好记一下,因为这个软件不会创建图标。
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第10张图片
点击其他位置到根目录下,进入安装路径文件夹下
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第11张图片
到相应的路径下,双击该图标即可打开软件
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第12张图片点击help,点击管理嵌入式软件包
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第13张图片根据芯片,选择最新版安装,我的是f1,所以就选择了f1
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第14张图片根据芯片型号创建工程
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第15张图片选择芯片,选择封装,开始配置,这里有两个,其实就是引脚的封装区别
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第16张图片高速时钟选择外部晶振,低速我也不会选,此处就没有选,但不影响等会我门测试,如果有会设置低速外部晶振的大佬麻烦教程发我邮箱以下,谢谢[email protected]
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第17张图片调试选择jtag5针
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第18张图片PB5设置位输出,战舰板的led接在pb5脚上,方便后面演示

ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第19张图片将pb5引脚设位推挽,低电平有效,下拉
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第20张图片配置时钟树
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第21张图片ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第22张图片ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第23张图片ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第24张图片

安装gcc,注意此处的gcc不是arm-gcc,因为我们要用到gcc里的make所以先安装了

sudo apt update    更新安装包列表

sudo apt-get install build-essential   该包内包含GCC套件

安装openocd,此处选择命令行安装,据说这个不是最新版,但不影响使用,我从git下载最新版自己编译了几次都没通过就放弃了。

sudo apt-get install openocd

安装armgcc

sudo apt-get install gcc-arm-none-eabi

安装arm调试器

  • 安装这个包的过程有点曲折,甚至连我自己都不记得我在那里下载到的这些包,好像是在ubuntu官网,此处就不讲解下载了,我直接放我百度网盘了,下面贴地址
  • https://pan.baidu.com/s/1QOFmFc-AOGn0LrzNA8jmEA 提取码:1ghu
  • 事情是这样的,要安装arm-gdb就要安装一个叫什么lib的包,但是这个包在18.04的仓库里已经过时了,下载不了,后来我也忘记我在那里下载到的了,反正可以安装成功。
  • ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第25张图片
    在包的路径下打开终端
    安装libreadline
    ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第26张图片安装armgdb
    ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第27张图片大功告成,至此所有需要安装的包就已经完成了,下面再安装几个vscode插件,和一些配置就完成了

vscode配置

安装这些插件,我圈起来的是必须的,其他装不装无所谓

ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第28张图片使用vscode打开刚才使用stm32cubemx生成的工程文件夹
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第29张图片在根目录下新建文件详情看图示
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第30张图片然后配置Launch文件和task文件,选择C++
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第31张图片launch文件配置

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "STM32F103ZET6",          //调试入口显示的名字,随便起
            "cwd": "${workspaceRoot}",        //工作目录,根路径
            "executable": "${workspaceFolder}/build/${workspaceRootFolderName}.elf",      //调试文件
            "request": "launch",         
            "runToMain": true,
            "type": "cortex-debug",     //配置为使用插件调试
            "servertype": "openocd",    //映射openocd
            "configFiles": ["${workspaceRoot}/openocd.cfg"],        //openocd配置
            "preLaunchTask": "Build",     //启动前执行的任务,对应待会要配置的task文件里的标签
            "postDebugTask": "Reset"      //同上,调试结束执行的任务
            
        }
    ]
}

task文件配置,点击ctrl+shift+p生成task文件
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第32张图片

{
    "version": "2.0.0",
    "tasks": [  
        {
            "type": "shell",
            "label": "Build",    //对应launch文件里的属性
            "command":"make -j8",   //编译指令
            "problemMatcher":[
                "$gcc"
            ],
            "group": "build"
        },
        {
            "type": "shell",
            "label": "Update",      //对应launch文件里的属性
            "command": "make -j4;make update",  //编译指令
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        },
        {
            "type": "shell",
            "label": "Reset",    //对应launch文件里的属性
            "command": "make reset", //编译指令
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }
    ]
}

makefile文件修改,使得可以在调试前自动下载hex文件到flash
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第33张图片
此处上图我圈的可能有一点问题,好像只有update:和reset:是我们后来添加的

update:

	openocd -f openocd.cfg -c init -c halt \



	-c "program $(BUILD_DIR)/$(TARGET).hex verify reset exit"



reset:

	openocd -f openocd.cfg -c init -c halt -reset -c shutdown

# *** EOF ***


调试

ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第34张图片ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第35张图片
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第36张图片可以看到LED灯已经被点亮,至此环境搭建完成,期间可能会遇到很多坑,结合csdn的一些教程基本都能解决,下一章会讲解怎样把原子的教程搬到这个环境下。
ubuntu18.04搭建stm32开发环境,vscode+armgcc+openocd+stlink-v2+stmcubemx_第37张图片有问题发邮件[email protected]

你可能感兴趣的:(stm32)