ubuntu PX4 vscode stlink debug设置

这篇具有很好参考价值的文章主要介绍了ubuntu PX4 vscode stlink debug设置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

硬件

stlink
holybro debug板
pixhawk4

ubuntu PX4 vscode stlink debug设置,ubuntu,vscode,linux

安装openocd

官方文档,但是第一步安装建议从源码安装,bug少很多
github链接

编译安装,参考

  ./bootstrap (when building from the git repository)
  ./configure [options]
  make
  sudo make install

安装后在usr/local/bin下面有一个openocd

px4qgc@ubuntu:~$ which openocd
/usr/local/bin/openocd

另外要注意gcc-arm路径

px4qgc@ubuntu:~$ which arm-none-eabi-gdb
/opt/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-gdb

然后进行一点测试,看看环境对不对再往下走
比如我用fmuv5的pixhawk4:

openocd -f interface/stlink.cfg -f target/stm32f7x.cfg
arm-none-eabi-gdb build/px4_fmu-v5_default/px4_fmu-v5_default.elf -ex "target extended-remote :3333"

ubuntu PX4 vscode stlink debug设置,ubuntu,vscode,linux
可能的报错:

arm-none-eabi-gdb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

安装对应的库即可

sudo apt-get update
sudo apt-get install libncurses5

usb设备权限问题

px4qgc@ubuntu:~$ openocd -f interface/stlink.cfg -f target/stm32f7x.cfg
Open On-Chip Debugger 0.11.0-dirty (2023-10-28-03:57)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : clock speed 2000 kHz
Error: libusb_open() failed with LIBUSB_ERROR_ACCESS

为stlink添加usb规则

sudo gedit /etc/udev/rules.d/99-openocd.rules
# For ST-Link
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3744", MODE:="666"
# For ST-Link V2
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE:="666"
# For ST-Link V2-1 (STM32 Nucleo boards)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE:="666"
# For ST-Link V3
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", MODE:="666"
# For ST-Link V3 MINIE
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3754", MODE:="666"

vscode配置

从github上面clone下来代码有一个.vscode文件夹,这个非常重要,给定了vscode的很多配置
按照官方文档安装vscode插件,注意,如果用的arm-gcc版本是2020-q2,gdb版本就是8,不能用最新的cortex-bug,我试了1.4.3可以

ubuntu PX4 vscode stlink debug设置,ubuntu,vscode,linux

task.json里面加上

        {
            "label": "Build and Download",
            "type": "shell",
            "command":"openocd",
            "args": [
            "-f",
            "interface/stlink.cfg",
            "-f",
            "target/stm32f7x.cfg",
            "-c",
            "program ./build/px4_fmu-v5_default/px4_fmu-v5_default.bin 0x8008000  verify reset exit "
            ],
            "problemMatcher": []
        },

launch.json加上:

        {
            "name": "FMUv5 Debug ST-Link",
            "type": "cortex-debug",
            "request": "launch",
            "cwd": "${workspaceRoot}",
            "executable": "./build/px4_fmu-v5_default/px4_fmu-v5_default.elf",
            //"serverpath": "${env:JLINK_SERVER}",
            "servertype": "openocd",
            "device": "STM32F765II",
            "interface": "swd",
            "configFiles": [
            "interface/stlink.cfg",
            "target/stm32f7x.cfg"
             ],
            "serialNumber": "", //If you have more than one J-Link probe, add the serial number here.
            "svdFile": "STM32F7x5.svd",
           "preLaunchTask":"Build and Download"
        },

给px4_simple_app.c加一个断点,点击调试,openocd会负责用stlink刷入最新固件,并启动调试
ubuntu PX4 vscode stlink debug设置,ubuntu,vscode,linux

效果如下图:
ubuntu PX4 vscode stlink debug设置,ubuntu,vscode,linux
ubuntu PX4 vscode stlink debug设置,ubuntu,vscode,linux
默认的那个st-util从来没在fmuv5上面好使过,会进入下面这个图的莫名其妙的地方,不用了,v6c倒是可以

ubuntu PX4 vscode stlink debug设置,ubuntu,vscode,linux
如果遇到没有要编译的对象,比如6c,在这自己加就行
ubuntu PX4 vscode stlink debug设置,ubuntu,vscode,linux

pixhawk6c

默认的就可以,但是感觉费劲死了,写一下openocd的配置
烧写命令:

openocd -f interface/stlink.cfg -f target/stm32h7x_dual_bank.cfg -c "program ./build/px4_fmu-v6c_default/px4_fmu-v6c_default.elf verify reset exit "
openocd -f interface/stlink.cfg -f target/stm32h7x_dual_bank.cfg
arm-none-eabi-gdb build/px4_fmu-v6c_default/px4_fmu-v6c_default.elf -ex "target extended-remote :3333"

launch.json

        {
            "name": "FMUv6c Debug ST-Link",
            "type": "cortex-debug",
            "request": "launch",
            "cwd": "${workspaceRoot}",
            "executable": "${command:cmake.launchTargetPath}",
            //"serverpath": "${env:JLINK_SERVER}",
            "servertype": "openocd",
            "device": "STM32H743VI",
            "interface": "swd",
            "configFiles": [
            "interface/stlink.cfg",
            "target/stm32h7x_dual_bank.cfg"
             ],
            "serialNumber": "", //If you have more than one J-Link probe, add the serial number here.
            "svdFile": "STM32H743.svd",
           "preLaunchTask":"Build and Download"
        },

launch.json 如果不想每次都重新编译,就把executable改了

        {
            "name": "FMUv6c Debug ST-Link",
            "type": "cortex-debug",
            "request": "launch",
            "cwd": "${workspaceRoot}",
            "executable": "./build/px4_fmu-v6c_default/px4_fmu-v6c_default.elf",
            //"serverpath": "${env:JLINK_SERVER}",
            "servertype": "openocd",
            "device": "STM32H743VI",
            "interface": "swd",
            "configFiles": [
            "interface/stlink.cfg",
            "target/stm32h7x_dual_bank.cfg"
             ],
            "serialNumber": "", //If you have more than one J-Link probe, add the serial number here.
            "svdFile": "STM32H743.svd",
           "preLaunchTask":"Build and Download"
        },

tasks.json

        {
            "label": "echo",
            "type": "shell",
            "command": "echo ${env:USERNAME}"
        },
        {
            // "dependsOn":"Build",
            "label": "Build and Download",
            "type": "shell",
            "command": "openocd",
            "args": [
            "-f",
            "interface/stlink.cfg",
            "-f",
            "target/stm32h7x_dual_bank.cfg",
            "-c",
            "program ./build/px4_fmu-v6c_default/px4_fmu-v6c_default.elf verify reset exit "
            ],
            "problemMatcher": []
        },

原版st-util配置文件:

        {
            "name": "stlink (px4_fmu-v6c)",
            "gdbPath": "/opt/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-gdb",
            "device": "STM32H743VI",
            "svdFile": "STM32H743.svd",
            "executable": "./build/px4_fmu-v6c_default/px4_fmu-v6c_default.elf",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "stutil",
            "cwd": "${workspaceFolder}",
            "internalConsoleOptions": "openOnSessionStart",
            "preLaunchCommands": [
                "source ${workspaceFolder}/platforms/nuttx/Debug/PX4",
                "source ${workspaceFolder}/platforms/nuttx/Debug/NuttX",
                "source ${workspaceFolder}/platforms/nuttx/Debug/ARMv7M",
                "set mem inaccessible-by-default off",
                "set print pretty",
            ]
        },

补充一点pixhawk4的debug

突然发现后面临近停产的pixhawk4,openocd刷不进去flash

px4qgc@ubuntu:~/1.14.0/PX4-Autopilot$ openocd -f interface/stlink.cfg -f target/stm32f7x.cfg -c "program ./build/px4_fmu-v5_default/px4_fmu-v5_default.elf 0x8000 verify reset exit "
Open On-Chip Debugger 0.12.0-01004-g9ea7f3d64 (2023-11-30-21:36)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
Info : clock speed 2000 kHz
Info : STLINK V3J8M3 (API v3) VID:PID 0483:3754
Info : Target voltage: 3.276368
Info : [stm32f7x.cpu] Cortex-M7 r1p0 processor detected
Info : [stm32f7x.cpu] target has 8 breakpoints, 4 watchpoints
Info : starting gdb server for stm32f7x.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : Unable to match requested speed 2000 kHz, using 1000 kHz
Info : Unable to match requested speed 2000 kHz, using 1000 kHz
[stm32f7x.cpu] halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x08001468 msp: 0x20020000
** Programming Started **
Info : device id = 0x10016451
Info : flash size = 2048 KiB
Info : Single Bank 2048 kiB STM32F76x/77x found
Info : flash size = 1024 bytes
Warn : no flash bank found for address 0x08200000
** Programming Finished **
** Verify Started **
Error: timed out while waiting for target halted
Error: error executing cortex_m crc algorithm
** Verify Failed **
shutdown command invoked

故修改launch.json,

        {
            "name": "FMUv5 Debug ST-Link",
            "type": "cortex-debug",
            "request": "launch",
            "cwd": "${workspaceRoot}",
            "executable": "/home/px4qgc/1.14.0/PX4-Autopilot/build/px4_fmu-v5_default/px4_fmu-v5_default.elf",
            "servertype": "openocd",
            "device": "STM32F765II",
            "interface": "swd",
            "configFiles": [
            "interface/stlink.cfg",
            "target/stm32f7x.cfg"
             ],
            "serialNumber": "", //If you have more than one J-Link probe, add the serial number here.
            "svdFile": "STM32F7x5.svd",
           "preLaunchTask":"flash"
        },

task.json:用st-flash可以正常刷写

        {
            "label": "flash",
            "type": "shell",
            "command": "st-flash --hot-plug write ./build/px4_fmu-v5_default/px4_fmu-v5_default.bin 0x08008000",
        },

如果觉得刷写费时间,可以把launch.json里面这行注释掉文章来源地址https://www.toymoban.com/news/detail-736433.html

           "preLaunchTask":"flash"

到了这里,关于ubuntu PX4 vscode stlink debug设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (最新)ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建

    前言 在搭建之前,需要把 ROS、MAVROS、QGC 等基础环境安装配置完成。大家可以参考我之前的教程 本次安装是以 px4 v1.13.2 为例。 我的配置如下: 虚拟机 Ubuntu 18.04 (运行内存 4G、硬盘内存 80G) 、ROS melodic 、最新版 QGC 建议安装之前可以先看看这个 👉 ubuntu搭建PX4无人机仿真环境

    2024年02月09日
    浏览(59)
  • (最新)ubuntu搭建PX4无人机仿真环境(2) —— MAVROS安装

    MAVROS是一个ROS(Robot Operating System)软件包 , 有了它就可以让ROS与飞控通信。这次安装是以ubuntu 18.04 (ROS Melodic)为例,也适用于其他版本 。安装之前确保 ROS 安装成功,没安装的可以看我仿真系列教程。 (注:安装方式有二进制安装和源码安装两种方式,源码安装需要从Git

    2024年02月09日
    浏览(61)
  • ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站

    前言 QGC ( QGroundControl) 是一个开源地面站,基于QT开发的,有跨平台的功能。这次安装是基于Ubuntu 18.04,QGC v4.2.6 但也适用于其他ubuntu发行版,QGC 版本也可以自行选择,如果发现不行可以降版本。 搭建仿真环境系列教程 👇 ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍 ubuntu搭

    2024年02月16日
    浏览(45)
  • Ubuntu20.04安装ROS1+PX4+MAVROS+QGC

    目录 1. 一键安装ROS1 2. 安装PX4 3. 添加变量 4. 安装MAVROS  5. 测试MAVROS与PX4是否连接 6. 安装QGC 参考  (参考鱼香ROS大佬:小鱼的一键安装系列)  输入1,安装 ROS,后面就按照推荐的来 ROS1安装完成 ,进行小海龟测试 打开终端,运行 另外打开一个终端,输入  再另外打开一个

    2024年01月20日
    浏览(67)
  • (最新)ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站

    前言 QGC ( QGroundControl) 是一个开源地面站,基于QT开发的,有跨平台的功能。这次安装是基于Ubuntu 18.04,QGC v4.2.6 但也适用于其他ubuntu发行版,QGC 版本也可以自行选择,如果发现不行可以降版本。 搭建仿真环境系列教程 👇 ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍 ubuntu搭

    2024年02月09日
    浏览(46)
  • (最新)ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍及环境建议

    搭建PX4仿真环境一个有挑战性的过程,如果没有一个有经验的人来带的话会走很多弯路。我在搭建PX4仿真环境的时候,不知道Linux、ROS、git,语言也只会一个C语言,没有任何无人机基础,纯小白一个,靠着自学与网上的各种教程,花了一两个月才搭好基本的仿真环境框架。我

    2024年02月08日
    浏览(62)
  • Ubuntu20.04搭建PX4仿真环境及XTDrone开发平台(最详细最明白)

    PX4-Autopilot仿真平台是由PX4官方提供的集虚拟px4固件、真机烧录固件、gazebo环境及模型于一体的平台,用户可以自己编写程序,通过mavros接口与虚拟px4固件进行mavlink协议的通讯,并在gazebo中显示虚拟世界和模型。因此PX官方手册里给了一个经典的例程:offboard.cpp和offboard.py,让

    2024年02月04日
    浏览(146)
  • 在ubuntu22.04(LTS)上搭建ROS2+PX4+Gazebo的联合仿真环境

    说明:本案例仅仅是跑通了ROS2+PX4+Gazebo的联合仿真,还没有实现使用键盘控制无人机飞行(以后会补充)。 1.准备工作 2.安装PX4仿真工具链 3.安装ROS2 4.安装ROS2的相关依赖 5.安装XRCE-DDS代理(AGENT) 6.创建ROS2工作空间并生成代码样例 7.运行XRCE代理 8.编译PX4固件并运行 (1)确保

    2024年04月29日
    浏览(85)
  • Ubuntu18.04搭配无人机仿真环境(ROS,PX4,gazebo,Mavros,QGC安装教程)

    我个人使用了代理环境进行下载。Linux没有代理的可以使用国内源。 清华大学源 sudo sh -c ‘. /etc/lsb-release echo “deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main” /etc/apt/sources.list.d/ros-latest.list’ 中科大源 sudo sh -c ‘. /etc/lsb-release echo “deb http://mirrors.ustc.edu.cn/ros/ubu

    2024年02月13日
    浏览(65)
  • 完整的Ubuntu20.04+ROS+PX4+Anaconda+PyTorch+GPU+CUDA+CUDNN+XTdrone配置智能无人机开发环境搭建过程

    我之前写了如何在Ubuntu18下搭配一系列软件的教程,然后近期重新安装20.04版本,于是重新记录一些东西,但是众多东西之前已经有了,所以我在这里知会在一些不同的地方和新增的地方特别说明,其他的请大家看之前的博客。 在搞了这么久的ros和px4之后,我也明白了xtdrone是

    2024年02月05日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包