LinuxJiaoCheng

LinuxJiaoCheng.com
Linux教程网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

STM3232F系列飞控的目录结构与编译选项,你了解吗?

2023年5月15日 231点热度

linux 编译java文件_在linux下由o文件编译生成cgi文件_linux编译cpp文件

明天我们来学习一下关于开源飞控的目录结构与编译选项,先来瞧瞧整体目录结构,之后我们会针对主要的功能模块说一些说明(因为篇幅限制本节所列举的目录与文件都是源代码中一少部份linux 下载工具linux安全加固,实际上好多目录与文件夹都被省略了):

PX4

├──build

│├──nuttx_px4fmu-v3_default

│├──nuttx_px4io-v2_default

│├──posix_sitl_default

├──cmake

│├──cmake_hexagon

│├──common

│├──configs

│├──cygwin_cygpath.cmake

│└──toolchains

├──mavlink

│└──include

├──msg

│├──templates

│└──tools

├──platforms

│├──nuttx

│├──posix

│└──qurt

├──ROMFS

│├──CMakeLists.txt

│├──px4fmu_common

│├──px4fmu_test

│└──tap_common

├──src

│├──drivers

│├──examples

│├──include

│├──lib

│├──modules

│├──platforms

linux编译cpp文件_linux 编译java文件_在linux下由o文件编译生成cgi文件

│├──systemcmds

│└──templates

└──Tools

一、build

build是编译目标目录,其中包括了程序源代码编译以后所生成的编译选项、中间文件、目标文件等,一般也是按不同的编译选项分为多个不同的目录,比如当我们执行不同的编译选项时,都会出现多个编译目标目录:

build/

├──nuttx_px4fmu-v2_default

├──nuttx_px4fmu-v3_default

├──posix_sitl_default

└──posix_sitl_test

在编译结束以后,最终生成的目标文件格式与目标平台有关,比如:使用nuttx_px4fmu-v2_default和nuttx_px4fmu-v3_default编译选项编译然后生成的文件即运行在STM3232F系列的FMU中,并采用Nuttx操作系统运行整个飞控程序;而使用posix_sitl_default和posix_sitl_test即运行在支持Posix标准的平台上,如运行Linux内核的Arm平台,或PC机。

二、cmake

cmake目录中储存了整个飞控程序的所有编译选项,其内容大致如下:

cmake

├──common

│├──px4_base.cmake

├──configs

│├──nuttx_px4fmu-v2_default.cmake

│├──nuttx_px4fmu-v3_default.cmake

│├──nuttx_px4fmu-v4_default.cmake

│├──nuttx_px4fmu-v5_default.cmake

│├──posix_sitl_default.cmake

│├──posix_sitl_test.cmake

└──toolchains

├──Toolchain-arm-linux-gnueabihf.cmake

├──Toolchain-arm-none-eabi.cmake

├──Toolchain-arm-xilinx-linux-gnueabi.cmake

├──Toolchain-gcc-arm-linux-gnueabihf.cmake

└──Toolchain-native.cmake

1.common:全局公共编译配置项,px4_base.cmake中储存整个px4程序中的全局配置选项和功能函数。诸如:编译源代码所使用的C和C++的编译标准(-std=gnu99和-std=gnu++11)和警告与错误选项(-Warray-bounds-Wdisabled-optimization-Wdouble-promotion)等。

2.config:独立编译配置项,容许用户可以按照自己的须要编译成不同的目标文件。诸如:nuttx_px4mfu……系列表示编译成以Nuttx操作系统为运行平台的FMU飞控程序,而nuttx_px4io……系列表示编译成以Nuttx操作系统为运行平台的IO程序(主要负责sbus输入与pwm输出),posix_sitl……系列表示编译成以支持Posix标准的运行平台飞控程序。

3.toolchains:工具链linux编译cpp文件,其中储存了以不同编译选项编译源代码时所使用的编译工具,比如:交叉编译工具arm-linux-gnueabihf、arm-none-eabi、gcc-arm-linux-gnueabihf和gcc。

linux 编译java文件_在linux下由o文件编译生成cgi文件_linux编译cpp文件

三、mavlink

mavlink是无人机中使用的一种轻量级外部通信合同,与外部通信即是与计算机上的地面站程序来进行通信。我们可以使用Mavlink官方提供的合同生成工具来订制我们自己须要的合同内容,并可以通过须要生成不同编程语言所使用的源文件,比如C/C++、Java、Python等。这样的用处是同样的一个通信合同可以被飞控程序、PC计算机、手机APP程序和其它程序同时使用。这样就有效的防止了不同运行平台上,不同类型程序运行的差别,而采用相同的合同通信。这也是上一节中我们述说的内容。目前的mavlink版本为2.0,使用时只须要包含其头文件即可,其目录为:

mavlink/include/mavlink/v2.0/common

在后续内容中我们会系统的学习关于mavlink合同的原理与使用方式。

四、msg

在上一节中我们早已简单的介绍了关于uORB的原理与运行方法,msg文件夹中储存的就是uORB所须要的所有Message,虽然也就是uORB在通信时须要定义的数据格式,以.msg结尾,其内容为特定的uORB数据类型(有点像C/C++,但不完全相同):

msg/

├──templates

│├──px4

│├──uorb

├──tools

│├──gencpp

│├──generate_microRTPS_bridge.py

│├──genmsg

│├──px_generate_uorb_topic_files.py

│├──px_generate_uorb_topic_helper.py

│├──px_generate_uorb_topic_helper.pyc

│└──uorb_rtps_message_ids.py

├──actuator_armed.msg

├──actuator_controls.msg

├──actuator_direct.msg

├──safety.msg

├──satellite_info.msg

├──sensor_accel.msg

├──sensor_baro.msg

├──test_motor.msg

├──timesync_status.msg

├──trajectory_waypoint.msg

├──transponder_report.msg

├──tune_control.msg

└──vehicle_gps_position.msg

1.message:在msg目录直属的.msg文件,都是uORB的message文件,即通信合同内容。其定义事例:

linux 编译java文件_linux编译cpp文件_在linux下由o文件编译生成cgi文件

uint64timestamp

int32lat

int32lon

float32vel_m_s

boolvel_ned_valid

uint8satellites_used

2.templates:中储存的是msg.cpp.template、msg.h.template、uORBTopics.cpp.template这三个文件,用于将.msg文件编译成.h头文件和.cpp源文件。

3.tools:中储存的是将.msg生成.h和.cpp源代码的工具文件,大多是采用Python编撰的(px_generate_uorb_topic_files.py)。

五、platforms

platforms即为运行平台,px4构架支持多种运行平台,比如:运行在STM3232FF4系列上、运行在Arm系列上,运行在Posix标准构架上等等。在不同的运行平台上,编译源代码的内容与链接源代码均不尽相同,所以就须要在不同的编译选项下,编译不同的平台源代码,platforms中储存了不同平台下的源代码内容:

platforms/

├──nuttx

│├──cmake

│├──CMakeLists.txt

│├──Debug

│├──Images

│├──NuttX

│├──nuttx-configs

│└──src

└──posix

├──cmake

├──CMakeLists.txt

├──include

└──src

关于Nuttx平台和Posix平台主要内容涉及了操作系统的相关知识,这与我们学习开源飞控px4的设计与原理关系并不是特别的大,所以这儿只做简介,并不做太多的介绍linux编译cpp文件,有兴趣的读者可以依照自己的须要去学习。

六、ROMFS

ROMFS/

├──CMakeLists.txt

├──px4fmu_common

│├──CMakeLists.txt

│├──init.d

│├──init.d-posix

│├──mixers

│└──mixers-sitl

├──px4fmu_test

│├──CMakeLists.txt

│├──init.d

│├──mixers

│└──unit_test_data

└──tap_common

├──CMakeLists.txt

├──init.d

└──mixers

ROMFS中储存了不同编译选项中的ROM文件系统,用简单的语言来说就是储存了飞控程序启动以后首先加载的运行脚本rcS(在Nuttx配置文件defconfig中配置)和混控文件mixer。其中rcS运行脚本句型格式类Unix的Shell脚本,但并不完全相同,具体句型可以参见:

七、src

src可以说是飞控中最重要的一个目录了,其中内容如下:

src

├──drivers

│├──aerofc_adc

│├──barometer

│├──spektrum_rc

│├──stm32

│└──vmount

├──include

│├──containers

│├──px4.h

│├──unit_test.h

│└──visibility.h

├──lib

│├──airspeed

│├──battery

│├──bezier

│├──circuit_breaker

│├──CMakeLists.txt

linux编译cpp文件_在linux下由o文件编译生成cgi文件_linux 编译java文件

│└──controllib

stimation

│├──tunes

│└──version

├──modules

│├──attitude_estimator_q

│├──commander

│├──dataman

│├──ekf2

│├──events

│├──mc_att_control

│├──mc_pos_control

│├──logger

│└──mavlink

└──systemcmds

├──param

├──perf

├──pwm

├──usb_connected

└──ver

1.drivers:驱动目录,其中储存所有的驱动模块,包括了GPS、MPU6000、HM5883等等。

2.include:包含头文件目录。

3.lib:常用的库函数,比如全局座标与本地坐标的转换函数等等。

4.modules:系统主要模块commander、mc_pos_control、mc_att_control等等。

5.systemcmds:系统命令param、pwm、reboot等。

八、Tools

此目录为px4编译与烧录固件的工具包,其中有好多采用Python编撰的工具类或是使用shell脚本编译的工具程序。诸如:固件烧录工具px_uploader.py;飞控参数生成工具srcparser.py;半数学仿真工具jmavsim等等。

在linux下由o文件编译生成cgi文件_linux编译cpp文件_linux 编译java文件

上期预告:《uORB实现原理与使用方式》

《一天精通无人机:中级篇》主要内容为:基本动力原理、硬件组装、飞控程序下载、编译、校准、调参与试航。

《一天精通无人机:初级篇》主要内容为:开源飞控程序PX4构架、精典PID控制原理、路径规划、命令收发、与地面站通信合同。

《一天精通无人机:中级篇》主要内容为:动力学建模、半数学仿真、传感器数据融合、扩展卡尔曼混频、全手动飞行设计、环境感知与视觉建模。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: linux编译 nuttx 文件目录 编译程序
最后更新:2023年5月15日

Linux教程网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

Linux教程网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
freebsd 桌面 linux FreeBSD桌面:优缺点一览 开源软件最古老的笑话:代码是自具文档化的self-documenting 掌握Linux发行版查询技巧 如何查询Linux操作系统版本及版本号? 运行Linux sh文件的简单流程 如何让Linux启动后自动进入图形界面或不让它进入 Linux下轻松查看MQ版本,实现进程间通信 系统默认运行级别不能设为,否则后果很严重 解密qimo linux中文:10个方面全面分析 Linux系统版本查看方法大全 Ubuntu的早期Linux版本的安装步骤及使用方法介绍 Linux打开bin文件方法大全 Linux下postgresql下载安装攻略 linux操作系统共有几种版本?最新的是哪个? 基于最新的Linux4.0内核.pdf立即下载深入Linux设备驱动程序内核机制 快速上手Linux mount -a命令,注意事项必读! Linux操作系统当前运行级别的五种方法和方法检查 Linux服务器虚拟化,全面指南! Linux创建用户指定目录,轻松操作! Linux下的7个运行级别是什么?
战区陆军采用国产硬件打造动态高效安全可靠的云桌面办公系统Linux启动进程命令解析:9方面详解《深入理解Linux内核》第三版将引领你畅游内核的心脏Win7操作系统虚拟机镜像下载指南重庆海泰管理服务有限公司,,消防控制系统认识《深入理解Linux内核,第三版》:内核处理cpuWin7安装Linux双系统攻略STM3232F系列飞控的目录结构与编译选项,你了解吗?Linux虚拟IP配置,高可用轻松达成inode 硬盘 删除两个文件 -linux 如何把底层的复杂性抽象成一个简单概念?Linux编译安装MySQL,注意事项!linux mint cinnamon mate 定制你的Linux Mint,享受Cinnamon和Mate之美!虚拟主机购买入口:Windows和Linus系统之间的对比对比WindowsServer认证需要多个测试,这些测试由System.Client红帽Linux软件安装指南如何选择服务器的操作系统?WindowsServer或Linux系统轻松学会Linux编程,零基础也能行!WindowsServer20082008操作系统的特点及应用程序介绍Linux必备:APT软件包管理器应用主机操作系统 (T·每日一练)2016年10月21日
Linux安装rar插件教程,轻松解决压缩文件问题 掌握Linux查看dump文件技巧,轻松定位故障! 计算机系统的内部工作原理与技术的全面概述 Linux系统修改IP地址:静态IP地址的设置方法 6年+鹅厂运维经验,从零搭建运维体系的实战经验 centos mencoder CentOS高效视频编码:Mencoder实战 现代操作系统的安排方式有哪些? 小米的路由器怎么设置怎么对小米路由器进行设置呢? 看日报是个好习惯苹果将AR/VR头显操作系统命名为“xrOS” Android·系统简介Android之父安迪·鲁宾Android五大优势方便开发 Linux下8139网卡驱动解决方案 当前目录查看当前目录占用空间--max-depth-c 1.无线路由器设置灯一直闪的原因是什么?怎么处理? linux命令把硬盘分区或者光盘到到文件系统中的默认点 LinuxLVM类型4.格式化新建的分区重启一下虚拟机 Linux统计文件词频,命令行工具轻松搞定! 解密qimo linux中文:10个方面全面分析 从大型机到x86架构,计算的下一个拐点在哪? 软件中有一个安装步骤及程序编写工作步骤 (Linux基础知识)Linux操作系统的相关知识点总结
标签聚合
文件目录 软件 电脑 centos 操作 linux服务器 虚拟机 linux系统 linux分区 操作系统开发
书籍
课程
技术群
技术干货大合集↓
  • 2023年5月 / 110篇
  • 2023年4月 / 115篇
  • 2023年3月 / 108篇
  • 2023年2月 / 82篇
  • 2023年1月 / 162篇
  • 2022年12月 / 176篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 linuxjiaocheng.com ALL RIGHTS RESERVED.

京ICP备16058923号-3