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

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

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

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

云深之無跡 ? 來源:云深之無跡 ? 作者:云深之無跡 ? 2022-08-31 10:36 ? 次閱讀

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

我之后會把我精簡的代碼上傳:

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)于外部的庫,第一個庫就是博世

方形的樣子

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

一個簡單的數(shù)據(jù)參數(shù)

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

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。

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

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

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

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

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

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

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

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

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

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

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

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

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

歡迎來找我

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

這個是遙測的庫,很出名,之后寫

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

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

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文件是我嘴關(guān)注的地方,在下面是具體不同的文件目錄

build 版本號,斷言,調(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ū)動程序

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

io 輸入輸出程序

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

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

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

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

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

解碼工具

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

這個是使能黑盒記錄器的宏

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

可以儲存的介質(zhì)

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

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

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

這個就是編譯文件目錄

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

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

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

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

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

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

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

這個實現(xiàn)我看不懂了

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

隨便看一個寫的什么

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

在具體的C實現(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),這個好看

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

坐標(biāo)軸的定義

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

飛起來的方向定義

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

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

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

在里面是按照一些定義的方式來寫的

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

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

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

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

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

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

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

RX協(xié)議

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

任務(wù)驅(qū)動

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

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

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

里面是大量的硬件IO的map

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

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

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

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

    關(guān)注

    2545

    文章

    50445

    瀏覽量

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

    關(guān)注

    452

    文章

    50206

    瀏覽量

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

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68231

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

    1 代碼結(jié)構(gòu)分析概述 在編寫代碼時,要求要結(jié)構(gòu)清晰、接口簡單。如果代碼結(jié)構(gòu)過于復(fù)雜,會帶來很多問
    的頭像 發(fā)表于 05-12 22:23 ?3595次閱讀
    <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 ?2004次閱讀
    llama.cpp<b class='flag-5'>代碼</b><b class='flag-5'>結(jié)構(gòu)</b>&amp;調(diào)用流程分析

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

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

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

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

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

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

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

    分布式專家系統(tǒng)是分布式技術(shù)與人工智能相結(jié)合的產(chǎn)物,它的主要研究內(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腔來實現(xiàn),而是依靠沿縱向等間隔分
    發(fā)表于 04-02 15:46 ?3.8w次閱讀

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

    在本文中,我們介紹了一種基于分布式算法的2D DCT 結(jié)構(gòu),該結(jié)構(gòu)中,我們充分利用 了三角函數(shù)的周期性與對偶性,并利用簡單ALU 實現(xiàn)加減法的分時復(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ù)量可能會讓人感到畏懼。幸好目錄結(jié)構(gòu)非常簡單,并且FreeRTOS的實時內(nèi)核只包含在3個源文件中(如果使用co-rout
    發(fā)表于 11-18 02:02 ?3999次閱讀

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

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

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

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

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

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

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

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

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

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