0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SITL代码分布结构

云深之无迹 来源:云深之无迹 作者:云深之无迹 2022-08-31 10:36 次阅读

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

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

1cd24476-2867-11ed-ba43-dac502259ad0.png

现在的目录应该是这样的

1cf041b0-2867-11ed-ba43-dac502259ad0.png

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

1d16d898-2867-11ed-ba43-dac502259ad0.png

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

1d33f7b6-2867-11ed-ba43-dac502259ad0.png

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

方形的样子

1d965fdc-2867-11ed-ba43-dac502259ad0.png

一个简单的数据参数

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

drivers/accgyro/accgyro_spi_bmi270.c

1dae4b74-2867-11ed-ba43-dac502259ad0.png

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

下载位置:

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

版本:2.63.1

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

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

1dd08004-2867-11ed-ba43-dac502259ad0.png

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

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

1df95d26-2867-11ed-ba43-dac502259ad0.png

很少的实现文件

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

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

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

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

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

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

Google的一种地图编码技术

欢迎来找我

1eb1b556-2867-11ed-ba43-dac502259ad0.png

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

1eccaafa-2867-11ed-ba43-dac502259ad0.png

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

1ef9b2b6-2867-11ed-ba43-dac502259ad0.png

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

1f1a557a-2867-11ed-ba43-dac502259ad0.png

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

1f2f96b0-2867-11ed-ba43-dac502259ad0.png

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

1f50b886-2867-11ed-ba43-dac502259ad0.png

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 虚拟串口的硬件抽象层

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

1f746452-2867-11ed-ba43-dac502259ad0.png

这个是启动文件

1f9d998a-2867-11ed-ba43-dac502259ad0.png

删除的汇编的样子

1fc01c9e-2867-11ed-ba43-dac502259ad0.png

虚拟串口

1fdae538-2867-11ed-ba43-dac502259ad0.png

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

201ba398-2867-11ed-ba43-dac502259ad0.png

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

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

解码工具

20337018-2867-11ed-ba43-dac502259ad0.png

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

20560c40-2867-11ed-ba43-dac502259ad0.png

可以储存的介质

2076ee38-2867-11ed-ba43-dac502259ad0.png

这个是相当于一个优先级

209cf182-2867-11ed-ba43-dac502259ad0.png

黑盒的配置的结构体

20bcbe4a-2867-11ed-ba43-dac502259ad0.png

速率

20db4dce-2867-11ed-ba43-dac502259ad0.png

模式

20f0faca-2867-11ed-ba43-dac502259ad0.png

这个就是编译文件目录

2124f258-2867-11ed-ba43-dac502259ad0.png

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

21422de6-2867-11ed-ba43-dac502259ad0.png

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

2167f742-2867-11ed-ba43-dac502259ad0.png

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

217edf52-2867-11ed-ba43-dac502259ad0.png

这个实现我看不懂了

2195db3a-2867-11ed-ba43-dac502259ad0.png

随便看一个写的什么

21af2662-2867-11ed-ba43-dac502259ad0.png

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

21cc5d54-2867-11ed-ba43-dac502259ad0.png

设置同步

21f73498-2867-11ed-ba43-dac502259ad0.png

基于串口的RX协议

220b520c-2867-11ed-ba43-dac502259ad0.png

使用SPI接口的RX接收机

222e7840-2867-11ed-ba43-dac502259ad0.png

还有灯光的调色方式

224ceeec-2867-11ed-ba43-dac502259ad0.png

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

226763b2-2867-11ed-ba43-dac502259ad0.png

坐标轴的定义

22918886-2867-11ed-ba43-dac502259ad0.png

飞起来的方向定义

22a40b78-2867-11ed-ba43-dac502259ad0.png

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

22be32c8-2867-11ed-ba43-dac502259ad0.png

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

22e84ffe-2867-11ed-ba43-dac502259ad0.png

这个是电机的协议

23159df6-2867-11ed-ba43-dac502259ad0.png

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

2335ac4a-2867-11ed-ba43-dac502259ad0.png

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

23549326-2867-11ed-ba43-dac502259ad0.png

RX协议

2373176a-2867-11ed-ba43-dac502259ad0.png

任务驱动

238e706e-2867-11ed-ba43-dac502259ad0.png

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

23aa730e-2867-11ed-ba43-dac502259ad0.png

里面是大量的硬件IO的map

23db6cf2-2867-11ed-ba43-dac502259ad0.png

还有各种的遥测协议

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

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

    关注

    2548

    文章

    50660

    浏览量

    751841
  • 芯片
    +关注

    关注

    453

    文章

    50384

    浏览量

    421720
  • 代码
    +关注

    关注

    30

    文章

    4742

    浏览量

    68333

原文标题:BF固件:代码分布结构

文章出处:【微信号:TT1827652464,微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    代码结构分析

    1 代码结构分析概述 在编写代码时,要求要结构清晰、接口简单。如果代码结构过于复杂,会带来很多问
    的头像 发表于 05-12 22:23 3614次阅读
    <b class='flag-5'>代码</b><b class='flag-5'>结构</b>分析

    llama.cpp代码结构&amp;调用流程分析

    llama.cpp 的代码结构比较直观,如下所示,为整体代码结构中的比较核心的部分的代码结构
    的头像 发表于 11-07 09:23 2041次阅读
    llama.cpp<b class='flag-5'>代码</b><b class='flag-5'>结构</b>&amp;调用流程分析

    何为分布式二极管结构

    请问数字电子技术第六版里介绍cmos反相器的输入保护电路中应用了双极型二极管是什么类型的二极管,只听过双极型晶体管,没有搜到有双极型二极管这个概念。还有分布式二极管结构是指D2是一个场效应管,可以
    发表于 04-16 15:51

    怎样去设计分布式电容共面波导结构式移相器?

    BST材料的特性是什么?怎样去设计分布式电容共面波导结构式移相器?
    发表于 06-08 06:55

    嵌入式系统中内存的分布情况

    前言硬件程序调试比较看重内存的分布情况,可以通过编译输出文件来分析运行时的数据结构如有疑问,欢迎指正,谢谢内存分布代码段 (Text segment):存放程序执行
    发表于 10-27 10:22

    分布式专家系统结构设计

    分布式专家系统是分布式技术与人工智能相结合的产物,它的主要研究内容是分布式问题求解。文章提出了一种分布式专家系统的结构,系统由管理节点和执行
    发表于 12-31 16:55 16次下载

    分布反馈(DFB)半导体激光器的结构和原理是什么?

    分布反馈(DFB)半导体激光器的结构和原理是什么? 1.结构及工作机理 DFB激光器的激光振荡不是靠F—P腔来实现,而是依靠沿纵向等间隔分
    发表于 04-02 15:46 3.9w次阅读

    分布式离散余弦变换的硬件结构

    在本文中,我们介绍了一种基于分布式算法的2D DCT 结构,该结构中,我们充分利用 了三角函数的周期性与对偶性,并利用简单ALU 实现加减法的分时复用,从而比已有的分 布式DCT 结构
    发表于 04-06 16:49 22次下载

    弧形轨道结构下电流分布特性的仿真研究

    弧形轨道结构下电流分布特性的仿真研究_王盟
    发表于 01-04 16:45 0次下载

    FreeRTOS源代码结构与基本目录

    下载的FreeRTOS包含每种处理器体系的源代码以及范例程序。把所有体系的源代码打包可以方便分发,但是文件的数量可能会让人感到畏惧。幸好目录结构非常简单,并且FreeRTOS的实时内核只包含在3个源文件中(如果使用co-rout
    发表于 11-18 02:02 4008次阅读

    基于POI分布的空间索引结构TDG

    基于POI分布的空间索引结构TDG
    发表于 06-25 15:56 10次下载

    浅析Zephyr应用的代码结构中的自定义驱动

    本篇是《《Zephyr应用的代码结构》》系列的终篇和下面两篇文章一起可以构建出一个有app独立管理的zephyr项目 Zephyr应用的代码结构--West提货单: zephyr和ze
    的头像 发表于 08-18 09:08 4733次阅读

    高通量芯片流体分布结构

    高通量芯片流体层分为梯度分布和树状分布两种结构。如图1a所示,梯度分布由连续相通道、分散相通道、一个公共出口通道以及在水平方向上排布的多个MFDG组成。图1b所示树状
    的头像 发表于 07-10 15:02 1747次阅读

    电机内部结构磁场分布速览

    电机在运行过程中,其内部结构中的磁场分布,既复杂,也清晰。
    的头像 发表于 05-02 14:57 5930次阅读
    电机内部<b class='flag-5'>结构</b>磁场<b class='flag-5'>分布</b>速览

    【鸿蒙】OpenHarmony 4.0蓝牙代码结构简析

    OpenHarmony 4.0蓝牙代码结构简析前言 OpenHarmony 4.0上蓝牙仓和目录结构进行一次较大整改,本文基于4.0以上版本对蓝牙代码进行分析,便于读者快速了解和学习
    的头像 发表于 02-26 16:08 1474次阅读
    【鸿蒙】OpenHarmony 4.0蓝牙<b class='flag-5'>代码</b><b class='flag-5'>结构</b>简析