之前看了许多介绍px4环境搭建的文章有介绍windows下eclipse和ubuntu下eclipse阅读px4源码的文章,但是没有看到对px4进行代码调试的文章,后来查看px官网发现可以通过visual code进行jlink调试代码,突然觉得这个不错,打算搭建这个环境。(写的少不太会文章排版,将就看,求谅解)

开始之前先介绍一下我的基本环境,Jlink,px4fmu-v2的裸板(焊接了SWD线),VMware15下Ubuntu16.04,大致如此,其他软件需要了在下载。

步骤一,下载源码

这个不用多说,直接按照官方文档进行源码下载,完事之后记得更新子模块。如果你网速比较好可能一遍就成功,如果网速不好,比如像我,公司网速特别差,下载最好就3,4百kb,往往下载这就断了,子模块下载了好几遍,直到20来个子模块全部ok,我才输了口气。

步骤二 ,ubuntu环境依赖下载

官网支持JMAVSim Simulation  Gazebo Simulation  ROS, 我暂时没想着进行simulation所以只想这能编译代码并且在线调试,看看代码就行,至于Gazebo仿真,需要了在整,所以我没有按照官网的推荐去做。

更改用户组,删除不必要的模块管理。这两个命令记得输入。

官网推荐  下载完源码后 一键脚本即可   bash   ./PX4-Autopilot/Tools/setup/ubuntu.sh

说实话这样做也行,但是肯定脚本中做了许多我不清楚的事情,我不太想这么做,打算看看脚本,需要什么我自己安装呗。

这个是px4的通用依赖,说实话我没有全部安装,也可能我以前安装过许多现在并不知道,所以我没有挨个敲,想着需要了在安装。

python的依赖和INSTALL_NUTTX的依赖还是需要的,最好全部安装。然后gcc的版本脚本写的是“7-2017-q4-major” 我的环境之前就是5的,所以我没有装,但是后来证明,5的版本在编译的时候会报错,所以还是要更新这个gcc-none-eabi的版本。SITL,和gazebo我直接跳过。

和ubuntul.是同一目录的requirement.txt这个目录有许多python的模块,这个我后来编译不过,报了许多有关python的模块无法解析的错误,我手敲挨个安装的,不太懂python,编译的时候需要啥,我就安装啥,后来发现需要挺多,就全部安装了requirement.txt的所有模块。

好了致此应该具备编译PX4代码的环境,具体如果编译的时候遇到什么错误,个人建议是认真把错误挨个看一遍,不要害怕报错,尝试理解报错,尝试自己想为啥,不行在百度,解决的多了,你知道的就多了。

直接输入编译命令  make px4_fmu-v2 ,编译结果如下图所示。

步骤三  vscode环境搭建

下载vscode安装,这个直接百度安装吧。然后按照官网的提示一步一步导入代码,选择调试项目。

这里有个问题可能没有px4-v2的选项,按照launch.json配置自己添加,我按照其他的json配置复制粘贴,然后修改了program项目,填入自己的编译px4-v2_default.elf 的目录。

完事之后就可以点击debug进行在线调试,查看内存变量,栈回调,单步执行等等。

总结:

以上只是简单概述了我按照官网进行vscode对px4代码进行在线调试的环境搭建。具体源码阅读需要看看makefile,启动脚本了,等等,是怎么组织源文件的。在线调试起到一个辅助的作用。当然在这个环境的搭建过程中,并没有那么顺利,也遇到了一些坑,包括源码下载,下载后编译gcc的版本支持,cmake的版本过低,等等。遇到错误一定要认真分析,尽量抓住要点进行百度,这样慢慢就会知道的越来越多嘻嘻。

这篇文章写得比较粗糙,其实也不是粗糙,事实上是,我想写得很详细,但是写起来发现除了附图,很难表达出自己真正的想法,我想着可能就是写得少外加不会写文章的原因吧。希望以后自己多多练习起来。

总而言之,希望对看px4代码的朋友有所帮助。

px4代码jlink调试相关推荐

  1. PX4代码解析(5)

    一.前言 我所讨论的PX4代码是基于v1.11版本,该版本与之前的版本有不少不同,其中一个比较大的区别在于新版本大部分用到了C++中模板,使得代码没有以前那么容易理解,因此我在后面介绍PX4的姿态估计 ...

  2. MM32F103芯片J-Link调试无法读不到芯片 ID 号

    最近在使用MM32F103芯片,刚开始J-Link调试的时候可以正常下载与运行,后面遇到无法读取芯片的ID,确定 JTAG/SWD 硬件连接都是好的,可就是读不到芯片 ID 号. 经过回顾分析,是程序 ...

  3. STM32 的 JLink 调试时「Flash Timeout」和「Flash Download Failed」问题解决

    前天(7月12号)晚上从学弟手里拿到了一套神舟三号 STM32 板子,学弟说这个板子「时好时坏」的,有时候下不进去程序.我本来有一个 CEPARK 的板子,但是一直对神舟的板子很感兴趣,准备第二天试一 ...

  4. Cordova应用的JavaScript代码和自定义插件代码的调试

    我之前写过三篇Cordova相关的技术文章.当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候. 本文就介绍Cordova应用的调试步骤. 如果 ...

  5. PX4代码解析(4)

    一.引言 PX4程序是基于实时操作系统(Real-time operating system, RTOS)的上层应用程序,PX4飞控程序的很多重要模块都是在Nuttx操作系统的调度下运行的.因此,想要 ...

  6. px4代码解析(3)

    前言 在使用PX4飞控时,我们难免要对其进行二次开发,例如修改控制算法,添加新的传感器,这时需要在代码中定义属于自己的消息.本节主要分享一下如何在PX4代码中添加自己的消息 一.消息添加与配置 从代码 ...

  7. PX4代码解析(2)

    前言 在大致了解PX4代码架构后,我们需要了解PX4的通信机制.在PX4代码架构中,每通信总线主要分为两个部分,一是内部通信总线uORB,即PX4内部进程通信采用的协议,例如PX4内部姿态控制需要获取 ...

  8. PX4代码解析(1)

    前言 做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳 ...

  9. VScode+ROS(C++)代码断点调试实践笔记

    VScode+ROS代码断点调试功能总结文档 使用的是github上古月ROS入门21讲的learning_topic功能包 一.配置好ROS环境,catkin_make编译好要调试的功能包(这些工作 ...

最新文章

  1. bat maven 一键打包 3.0
  2. 一文告诉你,谷歌是否真的实现了「量子至上」
  3. 在Kaggle上赢得大数据竞赛的技巧和窍门
  4. HTML+CSS实战作业
  5. 增强for循环之删除
  6. 仿真环境Mininet的搭建
  7. matplotlib 旋转刻度_Matplotlib数据可视化:文本与坐标轴
  8. java wav 切割_WAV音频定长分段切取
  9. OpenSSL--Window生成证书实战
  10. 微软宣布ASP.NET Core 2.0正式支持OData标准
  11. Java —— 正则表达式
  12. java 输入输出 函数对象构造
  13. 0基础学嵌入式:嵌入式linux视频教程免费分享!
  14. extremecomponents -- 文档下载依赖使用
  15. 算命师傅的好帮手:一款简单好用又使用的排盘工具--灵棋排盘
  16. macbook+外接,导致很卡
  17. PHP操作redis详细讲解(转)
  18. 基于CUDA的GPU并行计算技术实现网课课表编排
  19. uboot2021.10-nandflash-3.initr_nand
  20. html中的ol 和li,html中ol标签与li标签的高级应用

热门文章

  1. Shopee 视频处理技术后台应用
  2. 优秀期刊《儿童绘本》CN刊物征稿
  3. HDU1495-非常可乐
  4. python中time是什么意思_python3时间中time是什么?怎么转换?
  5. 将jpg文件转换成bgr二进制文件
  6. 7.3布朗运动-轨道的基本性质
  7. linux下open函数用法,linux下open函数和creat函数
  8. 对Java宏变量与宏替换的理解
  9. 用LaTex排版IEEE Trans文章的一些步骤及资料记录
  10. 编译cc1:all warnings being treated as errors