px4代码jlink调试
之前看了许多介绍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调试相关推荐
- PX4代码解析(5)
一.前言 我所讨论的PX4代码是基于v1.11版本,该版本与之前的版本有不少不同,其中一个比较大的区别在于新版本大部分用到了C++中模板,使得代码没有以前那么容易理解,因此我在后面介绍PX4的姿态估计 ...
- MM32F103芯片J-Link调试无法读不到芯片 ID 号
最近在使用MM32F103芯片,刚开始J-Link调试的时候可以正常下载与运行,后面遇到无法读取芯片的ID,确定 JTAG/SWD 硬件连接都是好的,可就是读不到芯片 ID 号. 经过回顾分析,是程序 ...
- STM32 的 JLink 调试时「Flash Timeout」和「Flash Download Failed」问题解决
前天(7月12号)晚上从学弟手里拿到了一套神舟三号 STM32 板子,学弟说这个板子「时好时坏」的,有时候下不进去程序.我本来有一个 CEPARK 的板子,但是一直对神舟的板子很感兴趣,准备第二天试一 ...
- Cordova应用的JavaScript代码和自定义插件代码的调试
我之前写过三篇Cordova相关的技术文章.当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候. 本文就介绍Cordova应用的调试步骤. 如果 ...
- PX4代码解析(4)
一.引言 PX4程序是基于实时操作系统(Real-time operating system, RTOS)的上层应用程序,PX4飞控程序的很多重要模块都是在Nuttx操作系统的调度下运行的.因此,想要 ...
- px4代码解析(3)
前言 在使用PX4飞控时,我们难免要对其进行二次开发,例如修改控制算法,添加新的传感器,这时需要在代码中定义属于自己的消息.本节主要分享一下如何在PX4代码中添加自己的消息 一.消息添加与配置 从代码 ...
- PX4代码解析(2)
前言 在大致了解PX4代码架构后,我们需要了解PX4的通信机制.在PX4代码架构中,每通信总线主要分为两个部分,一是内部通信总线uORB,即PX4内部进程通信采用的协议,例如PX4内部姿态控制需要获取 ...
- PX4代码解析(1)
前言 做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳 ...
- VScode+ROS(C++)代码断点调试实践笔记
VScode+ROS代码断点调试功能总结文档 使用的是github上古月ROS入门21讲的learning_topic功能包 一.配置好ROS环境,catkin_make编译好要调试的功能包(这些工作 ...
最新文章
- bat maven 一键打包 3.0
- 一文告诉你,谷歌是否真的实现了「量子至上」
- 在Kaggle上赢得大数据竞赛的技巧和窍门
- HTML+CSS实战作业
- 增强for循环之删除
- 仿真环境Mininet的搭建
- matplotlib 旋转刻度_Matplotlib数据可视化:文本与坐标轴
- java wav 切割_WAV音频定长分段切取
- OpenSSL--Window生成证书实战
- 微软宣布ASP.NET Core 2.0正式支持OData标准
- Java —— 正则表达式
- java 输入输出 函数对象构造
- 0基础学嵌入式:嵌入式linux视频教程免费分享!
- extremecomponents -- 文档下载依赖使用
- 算命师傅的好帮手:一款简单好用又使用的排盘工具--灵棋排盘
- macbook+外接,导致很卡
- PHP操作redis详细讲解(转)
- 基于CUDA的GPU并行计算技术实现网课课表编排
- uboot2021.10-nandflash-3.initr_nand
- html中的ol 和li,html中ol标签与li标签的高级应用