SITL代码分布结构

描述

这份代码是更新了很多次才成为现在的模样,里面的一些写法,追溯起来可以追到之前的一些历史的问题,这篇文章呢,先把库里面的代码结构说明白,先看库,然后再看逻辑。

我之后会把我精简的代码上传:

代码

现在的目录应该是这样的

代码

在里面的目录里面也可以找到mk的编译文件

代码

SITL(software in the loop)软件在环仿真,后面的是一些依赖的芯片,可以看到最次的都是F4的芯片了。

代码

在lib里面是依赖的一些关于外部的库,第一个库就是博世

 

方形的样子

代码

一个简单的数据参数

该库用于支持Bosch BMI270 陀螺仪传感器。BMI270 是一款小型、低功耗、低噪声惯性测量单元,设计用于需要高精度、实时传感器数据的移动应用,如增强现实或室内导航。目前飞控里面使用这个传感器的也是一些较为高档的型号。

 

drivers/accgyro/accgyro_spi_bmi270.c

 

代码

这里就定位一下代码里面实际的位置

库下载位置:

 

 https://github.com/BoschSensortec/BMI270-Sensor-API

 

版本:2.63.1

作为 Betaflight 的一部分编译的唯一文件是 bmi270_maximum_fifo.c。

该文件包含初始化期间必须上传的设备。

代码

上面这个文件的头就是这样的,可以看到是和驱动强相关的

Dyad 是一个基于 C 语言的异步网络库,旨在轻量级、可移植和易用。它既可用于创建小型独立服务器,也可用于为现有的项目提供网络支持。

代码

很少的实现文件

Open Location Code 是一种技术,它提供了一种将位置编码为比纬度和经度更易于使用的形式的方法。生成的代码称为加号,因为它们的区别属性是它们包含一个“+”字符。

该技术旨在生成可用于替代街道地址的代码,特别是在建筑物没有编号或街道没有命名的地方。

加号代表一个区域,而不是一个点。随着数字添加到代码中,区域缩小,因此长代码比短代码更精确。

相似的代码比不同的代码更靠近。

位置可以转换为代码,代码可以完全离线转换回位置。

无需查找数据表或需要在线服务。该算法是公开的,可以不受限制地使用。

 

Google的一种地图编码技术

 

欢迎来找我

代码

这个是遥测的库,很出名,之后写

代码

关于测试是软件编写的最后一个阶段,到底能不能使用在此会有结果

代码

这个是其中的一个测试的程序

代码

在源码里面也有4个人目录,链接文件,主的项目文件,还有测试的使用的文件夹,以及大家共同依赖的文件。

代码

可以看到这个编译的ld文件是很多的,这个也没有啥好说的

代码

main文件是我嘴关注的地方,在下面是具体不同的文件目录

build 版本号,断言,调试,编译等相关配置

cms OSD、灯带等内容管理

config 配置管理

fc 飞控功能,包括初始化、任务、设置等

main.c 主程序入口

msp Multiwii Serial Protocol

navigation 导航相关

scheduler 调度程序

startup 汇编初始化硬件

uav_interconnect

vcp 虚拟串口(Virtual COM Port)功能

vcpf4 F4的虚拟串口功能

blackbox 飞机的黑匣子,记录飞行日志

common 通用工具类

drivers 不同传感器、IO、总线等的驱动程序

flight 飞行相关程序,包括失控、风速评估、混合、PID等

io 输入输出程序

platform.h F3、F4、F7等相关的宏定义

rx 接收机相关程序

sensors 传感器程序

target 不同的飞控板编译不同的程序

telemetry 天线

vcp_hal 虚拟串口的硬件抽象层

以上这些就是大概的对目录的一个解释。

代码

这个是启动文件

代码

删除的汇编的样子

代码

虚拟串口

代码

这个就是黑盒的一个叠加层的样子

代码

这个是黑盒记录器,把飞机上面的数据保存下来

 

https://github.com/cleanflight/blackbox-tools

 

解码工具

代码

这个是使能黑盒记录器的宏

代码

可以储存的介质

代码

这个是相当于一个优先级

代码

黑盒的配置的结构体

代码

速率

代码

模式

代码

这个就是编译文件目录

代码

这个是cil的文件夹,就是我们的串口连接,就是后面上传的配置啥的

代码

这个是条件编译,可以使用debug的功能

代码

通过连续跳转,定位到最终的实现是这里

代码

这个实现我看不懂了

代码

随便看一个写的什么

代码

在具体的C实现里面,可以大量的文件都在这里汇集

代码

设置同步

代码

基于串口的RX协议

代码

使用SPI接口的RX接收机

代码

还有灯光的调色方式

代码

common是就像工具箱一样的结构,这个好看

代码

坐标轴的定义

代码

飞起来的方向定义

代码

穿越机是和硬件强相关的,这里肯定有大量的硬件驱动

代码

在里面是按照一些定义的方式来写的

代码

这个是电机的协议

代码

正经飞控的实现是这么多,算法层面的东西

代码

这是算法运算完,如何驱动硬件

代码

RX协议

代码

任务驱动

代码

这个里面是已经注册的飞控(也不是注册)

代码

里面是大量的硬件IO的map

代码

还有各种的遥测协议

还有很多的我都搞不明白是干啥的,继续研究。  

      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分