pixhawk软件分析之代码框架与文件结构

pixhawk软件分析之代码框架与文件结构

本文是在pixhawk的V1.4.1的代码基础上进行分析,更新的版本的代码目录的结构可能会有一些不同,毕竟pixhawk的代码版本更新是比较活跃的。
下图是px4的设计思想:
pixhawk软件分析之代码框架与文件结构_第1张图片
从图中可以看出上层的功能模块程序和下层的驱动程序分离,通过uORB进行数据之间的通讯,而Nuttx只是进行任务的管理和系统的维护。这样能够给驱动或功能的修改和添加,或实现跨平台的移植都带来方便。

下图firmwareV1.4.1的主要目录结构:
pixhawk软件分析之代码框架与文件结构_第2张图片
在firmware目录下cmake是编译工具;
build_px4fmu-v2_default是在编译后产生中间静态文件和最终生成的下载文件;
Tools文件夹下有一些工具,比如说下载工具。
mavlinek是mavlink工具包
Nuttx是包含的Nuttx操作系统源代码,还有nuttx-config这个nuttx的配置文件,以及还有ROS机器人操作系统的一些文件夹,这里就不只要介绍。这里主要介绍px4的源代码文件放置的src文件夹以及ROMFS文件夹下的启动文件。
src文件夹下一层文件目录如图所示:
systemcmds:主要放置了系统工具,能够通过启动文件启动或在nsh中去调用的工具。其中包括控制I2C,查看修改参数,查看软件版本,校准电调、查看系统性能、bootloader升级等工具。
platforms:下面只要是定义了px4平台的系统接口方便和nuttx操作系统分离,这样方便移植到其他平台。
drivers:这下面的好几级目录再下面在进行分级介绍。
boards:px4fmu-v2目录下面定义了这个型号的板子的接口配置以及相应配置接口(LED、PWM、USB、定时器等的配置)
drvers:外设的基类定义(I2C、SPI和一些ringbuffer等)。
stm32:中包括adc的基类、高精度定时器、伺服控制的驱动程序
其他的文件主要是下层传感器或者执行器的驱动程序。
modules:下面分了很多文件夹,这些文件夹各自是不同的模块,这就是最上层的功能模块包括commder、navigator、mc_att_control、mc_pos_control等。
lib:这里边包括了平台使用的库文件,比如数学工具库、地理坐标转换工具库、RC信号解码的库等。

下图是上层应用模块软件控制的结构图:
pixhawk软件分析之代码框架与文件结构_第3张图片
我们能够清晰的看到从用户到执行的控制逻辑。

下图是估计和控制的结构图:
pixhawk软件分析之代码框架与文件结构_第4张图片

下图是GCS(地面站)通过mavlink通讯协议来控制飞行器的结构图:
pixhawk软件分析之代码框架与文件结构_第5张图片

下图是控制模式的流程图:
pixhawk软件分析之代码框架与文件结构_第6张图片

参考:
[1]http://dev.px4.io
[2]https://github.com/PX4
[3]http://blog.csdn.net/czyv587/article/details/51627787?locationNum=10

你可能感兴趣的:(pixhawk)