0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SITL代碼分布結(jié)構(gòu)

云深之無(wú)跡 ? 來(lái)源:云深之無(wú)跡 ? 作者:云深之無(wú)跡 ? 2022-08-31 10:36 ? 次閱讀

這份代碼是更新了很多次才成為現(xiàn)在的模樣,里面的一些寫法,追溯起來(lái)可以追到之前的一些歷史的問題,這篇文章呢,先把庫(kù)里面的代碼結(jié)構(gòu)說明白,先看庫(kù),然后再看邏輯。

我之后會(huì)把我精簡(jiǎn)的代碼上傳:

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

現(xiàn)在的目錄應(yīng)該是這樣的

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

在里面的目錄里面也可以找到mk的編譯文件

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

SITL(software in the loop)軟件在環(huán)仿真,后面的是一些依賴的芯片,可以看到最次的都是F4的芯片了。

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

在lib里面是依賴的一些關(guān)于外部的庫(kù),第一個(gè)庫(kù)就是博世

方形的樣子

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

一個(gè)簡(jiǎn)單的數(shù)據(jù)參數(shù)

該庫(kù)用于支持Bosch BMI270 陀螺儀傳感器。BMI270 是一款小型、低功耗、低噪聲慣性測(cè)量單元,設(shè)計(jì)用于需要高精度、實(shí)時(shí)傳感器數(shù)據(jù)的移動(dòng)應(yīng)用,如增強(qiáng)現(xiàn)實(shí)或室內(nèi)導(dǎo)航。目前飛控里面使用這個(gè)傳感器的也是一些較為高檔的型號(hào)。

drivers/accgyro/accgyro_spi_bmi270.c

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

這里就定位一下代碼里面實(shí)際的位置

庫(kù)下載位置:

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

版本:2.63.1

作為 Betaflight 的一部分編譯的唯一文件是 bmi270_maximum_fifo.c。

該文件包含初始化期間必須上傳的設(shè)備。

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

上面這個(gè)文件的頭就是這樣的,可以看到是和驅(qū)動(dòng)強(qiáng)相關(guān)的

Dyad 是一個(gè)基于 C 語(yǔ)言的異步網(wǎng)絡(luò)庫(kù),旨在輕量級(jí)、可移植和易用。它既可用于創(chuàng)建小型獨(dú)立服務(wù)器,也可用于為現(xiàn)有的項(xiàng)目提供網(wǎng)絡(luò)支持。

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

很少的實(shí)現(xiàn)文件

Open Location Code 是一種技術(shù),它提供了一種將位置編碼為比緯度和經(jīng)度更易于使用的形式的方法。生成的代碼稱為加號(hào),因?yàn)樗鼈兊膮^(qū)別屬性是它們包含一個(gè)“+”字符。

該技術(shù)旨在生成可用于替代街道地址的代碼,特別是在建筑物沒有編號(hào)或街道沒有命名的地方。

加號(hào)代表一個(gè)區(qū)域,而不是一個(gè)點(diǎn)。隨著數(shù)字添加到代碼中,區(qū)域縮小,因此長(zhǎng)代碼比短代碼更精確。

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

位置可以轉(zhuǎn)換為代碼,代碼可以完全離線轉(zhuǎn)換回位置。

無(wú)需查找數(shù)據(jù)表或需要在線服務(wù)。該算法是公開的,可以不受限制地使用。

Google的一種地圖編碼技術(shù)

歡迎來(lái)找我

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

這個(gè)是遙測(cè)的庫(kù),很出名,之后寫

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

關(guān)于測(cè)試是軟件編寫的最后一個(gè)階段,到底能不能使用在此會(huì)有結(jié)果

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

這個(gè)是其中的一個(gè)測(cè)試的程序

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

在源碼里面也有4個(gè)人目錄,鏈接文件,主的項(xiàng)目文件,還有測(cè)試的使用的文件夾,以及大家共同依賴的文件。

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

可以看到這個(gè)編譯的ld文件是很多的,這個(gè)也沒有啥好說的

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

main文件是我嘴關(guān)注的地方,在下面是具體不同的文件目錄

build 版本號(hào),斷言,調(diào)試,編譯等相關(guān)配置

cms OSD、燈帶等內(nèi)容管理

config 配置管理

fc 飛控功能,包括初始化、任務(wù)、設(shè)置等

main.c 主程序入口

msp Multiwii Serial Protocol

navigation 導(dǎo)航相關(guān)

scheduler 調(diào)度程序

startup 匯編初始化硬件

uav_interconnect

vcp 虛擬串口(Virtual COM Port)功能

vcpf4 F4的虛擬串口功能

blackbox 飛機(jī)的黑匣子,記錄飛行日志

common 通用工具類

drivers 不同傳感器、IO、總線等的驅(qū)動(dòng)程序

flight 飛行相關(guān)程序,包括失控、風(fēng)速評(píng)估、混合、PID等

io 輸入輸出程序

platform.h F3、F4、F7等相關(guān)的宏定義

rx 接收機(jī)相關(guān)程序

sensors 傳感器程序

target 不同的飛控板編譯不同的程序

telemetry 天線

vcp_hal 虛擬串口的硬件抽象層

以上這些就是大概的對(duì)目錄的一個(gè)解釋。

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

這個(gè)是啟動(dòng)文件

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

刪除的匯編的樣子

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

虛擬串口

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

這個(gè)就是黑盒的一個(gè)疊加層的樣子

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

這個(gè)是黑盒記錄器,把飛機(jī)上面的數(shù)據(jù)保存下來(lái)

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

解碼工具

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

這個(gè)是使能黑盒記錄器的宏

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

可以儲(chǔ)存的介質(zhì)

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

這個(gè)是相當(dāng)于一個(gè)優(yōu)先級(jí)

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

黑盒的配置的結(jié)構(gòu)體

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

速率

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

模式

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

這個(gè)就是編譯文件目錄

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

這個(gè)是cil的文件夾,就是我們的串口連接,就是后面上傳的配置啥的

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

這個(gè)是條件編譯,可以使用debug的功能

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

通過連續(xù)跳轉(zhuǎn),定位到最終的實(shí)現(xiàn)是這里

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

這個(gè)實(shí)現(xiàn)我看不懂了

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

隨便看一個(gè)寫的什么

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

在具體的C實(shí)現(xiàn)里面,可以大量的文件都在這里匯集

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

設(shè)置同步

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

基于串口的RX協(xié)議

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

使用SPI接口的RX接收機(jī)

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

還有燈光的調(diào)色方式

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

common是就像工具箱一樣的結(jié)構(gòu),這個(gè)好看

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

坐標(biāo)軸的定義

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

飛起來(lái)的方向定義

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

穿越機(jī)是和硬件強(qiáng)相關(guān)的,這里肯定有大量的硬件驅(qū)動(dòng)

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

在里面是按照一些定義的方式來(lái)寫的

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

這個(gè)是電機(jī)的協(xié)議

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

正經(jīng)飛控的實(shí)現(xiàn)是這么多,算法層面的東西

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

這是算法運(yùn)算完,如何驅(qū)動(dòng)硬件

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

RX協(xié)議

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

任務(wù)驅(qū)動(dòng)

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

這個(gè)里面是已經(jīng)注冊(cè)的飛控(也不是注冊(cè))

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

里面是大量的硬件IO的map

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

還有各種的遙測(cè)協(xié)議

還有很多的我都搞不明白是干啥的,繼續(xù)研究。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2542

    文章

    50241

    瀏覽量

    750099
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    49938

    瀏覽量

    419619
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4694

    瀏覽量

    68078

原文標(biāo)題:BF固件:代碼分布結(jié)構(gòu)

文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    代碼結(jié)構(gòu)分析

    1 代碼結(jié)構(gòu)分析概述 在編寫代碼時(shí),要求要結(jié)構(gòu)清晰、接口簡(jiǎn)單。如果代碼結(jié)構(gòu)過于復(fù)雜,會(huì)帶來(lái)很多問
    的頭像 發(fā)表于 05-12 22:23 ?3545次閱讀
    <b class='flag-5'>代碼</b><b class='flag-5'>結(jié)構(gòu)</b>分析

    llama.cpp代碼結(jié)構(gòu)&amp;調(diào)用流程分析

    llama.cpp 的代碼結(jié)構(gòu)比較直觀,如下所示,為整體代碼結(jié)構(gòu)中的比較核心的部分的代碼結(jié)構(gòu)
    的頭像 發(fā)表于 11-07 09:23 ?1932次閱讀
    llama.cpp<b class='flag-5'>代碼</b><b class='flag-5'>結(jié)構(gòu)</b>&amp;調(diào)用流程分析

    何為分布式二極管結(jié)構(gòu)?

    請(qǐng)問數(shù)字電子技術(shù)第六版里介紹cmos反相器的輸入保護(hù)電路中應(yīng)用了雙極型二極管是什么類型的二極管,只聽過雙極型晶體管,沒有搜到有雙極型二極管這個(gè)概念。還有分布式二極管結(jié)構(gòu)是指D2是一個(gè)場(chǎng)效應(yīng)管,可以
    發(fā)表于 04-16 15:51

    怎樣去設(shè)計(jì)分布式電容共面波導(dǎo)結(jié)構(gòu)式移相器?

    BST材料的特性是什么?怎樣去設(shè)計(jì)分布式電容共面波導(dǎo)結(jié)構(gòu)式移相器?
    發(fā)表于 06-08 06:55

    嵌入式系統(tǒng)中內(nèi)存的分布情況

    前言硬件程序調(diào)試比較看重內(nèi)存的分布情況,可以通過編譯輸出文件來(lái)分析運(yùn)行時(shí)的數(shù)據(jù)結(jié)構(gòu)如有疑問,歡迎指正,謝謝內(nèi)存分布代碼段 (Text segment):存放程序執(zhí)行
    發(fā)表于 10-27 10:22

    分布式專家系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

    分布式專家系統(tǒng)是分布式技術(shù)與人工智能相結(jié)合的產(chǎn)物,它的主要研究?jī)?nèi)容是分布式問題求解。文章提出了一種分布式專家系統(tǒng)的結(jié)構(gòu),系統(tǒng)由管理節(jié)點(diǎn)和執(zhí)行
    發(fā)表于 12-31 16:55 ?16次下載

    分布反饋(DFB)半導(dǎo)體激光器的結(jié)構(gòu)和原理是什么?

    分布反饋(DFB)半導(dǎo)體激光器的結(jié)構(gòu)和原理是什么? 1.結(jié)構(gòu)及工作機(jī)理 DFB激光器的激光振蕩不是靠F—P腔來(lái)實(shí)現(xiàn),而是依靠沿縱向等間隔分
    發(fā)表于 04-02 15:46 ?3.8w次閱讀

    分布式離散余弦變換的硬件結(jié)構(gòu)

    在本文中,我們介紹了一種基于分布式算法的2D DCT 結(jié)構(gòu),該結(jié)構(gòu)中,我們充分利用 了三角函數(shù)的周期性與對(duì)偶性,并利用簡(jiǎn)單ALU 實(shí)現(xiàn)加減法的分時(shí)復(fù)用,從而比已有的分 布式DCT 結(jié)構(gòu)
    發(fā)表于 04-06 16:49 ?22次下載

    弧形軌道結(jié)構(gòu)下電流分布特性的仿真研究

    弧形軌道結(jié)構(gòu)下電流分布特性的仿真研究_王盟
    發(fā)表于 01-04 16:45 ?0次下載

    FreeRTOS源代碼結(jié)構(gòu)與基本目錄

    下載的FreeRTOS包含每種處理器體系的源代碼以及范例程序。把所有體系的源代碼打包可以方便分發(fā),但是文件的數(shù)量可能會(huì)讓人感到畏懼。幸好目錄結(jié)構(gòu)非常簡(jiǎn)單,并且FreeRTOS的實(shí)時(shí)內(nèi)核只包含在3個(gè)源文件中(如果使用co-rout
    發(fā)表于 11-18 02:02 ?3983次閱讀

    基于POI分布的空間索引結(jié)構(gòu)TDG

    基于POI分布的空間索引結(jié)構(gòu)TDG
    發(fā)表于 06-25 15:56 ?10次下載

    淺析Zephyr應(yīng)用的代碼結(jié)構(gòu)中的自定義驅(qū)動(dòng)

    本篇是《《Zephyr應(yīng)用的代碼結(jié)構(gòu)》》系列的終篇和下面兩篇文章一起可以構(gòu)建出一個(gè)有app獨(dú)立管理的zephyr項(xiàng)目 Zephyr應(yīng)用的代碼結(jié)構(gòu)--West提貨單: zephyr和ze
    的頭像 發(fā)表于 08-18 09:08 ?4589次閱讀

    高通量芯片流體分布結(jié)構(gòu)

    高通量芯片流體層分為梯度分布和樹狀分布兩種結(jié)構(gòu)。如圖1a所示,梯度分布由連續(xù)相通道、分散相通道、一個(gè)公共出口通道以及在水平方向上排布的多個(gè)MFDG組成。圖1b所示樹狀
    的頭像 發(fā)表于 07-10 15:02 ?1706次閱讀

    電機(jī)內(nèi)部結(jié)構(gòu)磁場(chǎng)分布速覽

    電機(jī)在運(yùn)行過程中,其內(nèi)部結(jié)構(gòu)中的磁場(chǎng)分布,既復(fù)雜,也清晰。
    的頭像 發(fā)表于 05-02 14:57 ?5708次閱讀
    電機(jī)內(nèi)部<b class='flag-5'>結(jié)構(gòu)</b>磁場(chǎng)<b class='flag-5'>分布</b>速覽

    【鴻蒙】OpenHarmony 4.0藍(lán)牙代碼結(jié)構(gòu)簡(jiǎn)析

    OpenHarmony 4.0藍(lán)牙代碼結(jié)構(gòu)簡(jiǎn)析前言 OpenHarmony 4.0上藍(lán)牙倉(cāng)和目錄結(jié)構(gòu)進(jìn)行一次較大整改,本文基于4.0以上版本對(duì)藍(lán)牙代碼進(jìn)行分析,便于讀者快速了解和學(xué)習(xí)
    的頭像 發(fā)表于 02-26 16:08 ?1312次閱讀
    【鴻蒙】OpenHarmony 4.0藍(lán)牙<b class='flag-5'>代碼</b><b class='flag-5'>結(jié)構(gòu)</b>簡(jiǎn)析