Linux下stm32mcu开发

linux下stm32开发环境配置

原因:

  • keil或cubeide非常难用,补全功能太差
  • 工具链安装

    软件工具清单:

  • vscode
  • make
  • gcc-arm-none-eabi工具链
  • openocd
  • stm32cubeMX
  • 下载

    1.make

    有些linux发行版本自带 我用的是ubuntu
    sudo apt install make
    

    2.openocd

    sudo apt install openocd
    

    apt上的openocd版本可能落后,可以上openocd官网上下载最新版本,但还是推荐包管理器下载,因为其会自动下载依赖。

    3.gcc-arm-none-eabi工具链

    sudo apt install gcc-arm-none-eabi
    

    也可以上arm官网上下载工具链
    gcc-arm-none-eabi

    一些问题汇总
  • 使用arm-none-eabi-gdb
  • 出现

    error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
    

    缺少库

     sudo apt install libncurses5
    

    如果还是不行,就之间安装

     sudo apt install gdb-multiarch
    
  • arm-none-eabi-gcc
  • 当你make的时候,arm-none-eabi-gcc会报错,缺少liblto_plugin.so 解决方法: 查找liblto_plugin.so.0.0.0 然后将其复制为liblto_plugin.so 一般在/home/ubuntu/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1目录下。
  • 权限问题
  • 从arm官网下载下来的工具链可能会有执行不了的问题,需要修改其具有执行权限(sudo chmod u+x)

    4.vscode

    官网下载

    需要安装c/c++插件,和Remote-SSH 两个插件

    5.stm32cubeMX

    官网下载 安装在虚拟机ubuntu上还是Windows上无所谓

    工程配置

    一,用stm32cubeMX创建工程

    1.在配置配置好时钟和引脚功能后 2.然后在Project Manager中修改一些东西 第一是选择代码构建工具为makefile

    在这里插入图片描述
    第二是代码生成的一些选项

    在这里插入图片描述

    然后将项目目录拷贝到Ubuntu中

    二,vscode连接虚拟机ubuntu

    安装好Remote-SSH插件后,在最左侧 点击

    在这里插入图片描述

    如果一个连接目标都没有会出现

    在这里插入图片描述

    #基本就是ssh命令
    #ssh 主机名@ip -p端口号
    ssh ubuntu@127.0.0.1 -p1234 
    #然后输入密码即可
    

    连接成功后打开项目目录
    如下
    在这里插入图片描述

    然后make一下查看你的gcc工具链是否有上述的问题
    如果没有问题,继续下一步。

    三,开启openocd服务器

    第一步,先将你的mcu根据jtag\swd协议连接到stlink适配器上,然后再将适配器连接到PC上。如果你是虚拟机ubuntu 不要忘了设置虚拟机识别usb

    使用stlink适配器会有些问题,引用openocd文档:

    关于信息,原始的ST-LINK使用了大容量存储USB类进行枚举;然而,它的实现存在严重问题。
    这导致在Linux下出现了一些问题。最简单的解决方案是使用以下方法之一让Linux忽略
    ST-LINK:
    
  • modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i
  • 添加 "options usb-storage quirks=483:3744:i" 到 /etc/modprobe.conf
  • 第二步,编辑配置文件

    openocd.cfg 为自定义创建

    #openocd 采用TCL 语言作为配置文件脚本,内置jim-tcl解释器
    #如果你只是单纯的开发mcu应用,不是研发适配器和mcu的不需要太过学习tcl语言
    #只要记住导入文件语法即可
    #导入适配器驱动脚本
    source [find interface/stlink-v2.cfg]
    #导入目标mcu同系列布局脚本
    source [find target/stm32f1x.cfg]
    
    #如果有商业化的板子可以导入板子的配置脚本
    #source [find board/xxx.cfg]
    #以上就够stm32系列开发,如果想要更多信息查看openocd文档
    

    第三步,启动openocd服务器

    openocd -f openocd.cfg
    

    出现
    在这里插入图片描述

    那么你成功了!

    三,烧录

    首先,编写完程序后,make以下,构建程序 然后 输入
    arm-none-eabi-gcc -q build/xxx.elf
    #或
    gdb-multiarch -q build/xxx.elf
    

    进入gdb,输入以下命令

    (gdb) target remote :3333  //连接openoc服务器
    (gdb) load  //烧录程序
    
    

    gdb不仅可以用来烧录,还可以进行调试,更多请查询gdb文档

    之后就是在vscode中配置 c/c++插件的配置了

    参考

  • vscode c/c++配置:https://code.visualstudio.com/docs/cpp/config-linux
  • tcl语法:https://www.tcl-lang.org/man/tcl8.5/tutorial/tcltutorial.html
  • gdb文档:https://sourceware.org/gdb/download/onlinedocs/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值