這份代碼是更新了很多次才成為現(xiàn)在的模樣,里面的一些寫法,追溯起來可以追到之前的一些歷史的問題,這篇文章呢,先把庫里面的代碼結(jié)構(gòu)說明白,先看庫,然后再看邏輯。
我之后會把我精簡的代碼上傳:
現(xiàn)在的目錄應(yīng)該是這樣的
在里面的目錄里面也可以找到mk的編譯文件
SITL(software in the loop)軟件在環(huán)仿真,后面的是一些依賴的芯片,可以看到最次的都是F4的芯片了。
在lib里面是依賴的一些關(guān)于外部的庫,第一個庫就是博世
方形的樣子
一個簡單的數(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
這里就定位一下代碼里面實際的位置
庫下載位置:
https://github.com/BoschSensortec/BMI270-Sensor-API
版本:2.63.1
作為 Betaflight 的一部分編譯的唯一文件是 bmi270_maximum_fifo.c。
該文件包含初始化期間必須上傳的設(shè)備。
上面這個文件的頭就是這樣的,可以看到是和驅(qū)動強(qiáng)相關(guān)的
Dyad 是一個基于 C 語言的異步網(wǎng)絡(luò)庫,旨在輕量級、可移植和易用。它既可用于創(chuàng)建小型獨(dú)立服務(wù)器,也可用于為現(xiàn)有的項目提供網(wǎng)絡(luò)支持。
很少的實現(xiàn)文件
Open Location Code 是一種技術(shù),它提供了一種將位置編碼為比緯度和經(jīng)度更易于使用的形式的方法。生成的代碼稱為加號,因為它們的區(qū)別屬性是它們包含一個“+”字符。
該技術(shù)旨在生成可用于替代街道地址的代碼,特別是在建筑物沒有編號或街道沒有命名的地方。
加號代表一個區(qū)域,而不是一個點(diǎn)。隨著數(shù)字添加到代碼中,區(qū)域縮小,因此長代碼比短代碼更精確。
相似的代碼比不同的代碼更靠近。
位置可以轉(zhuǎn)換為代碼,代碼可以完全離線轉(zhuǎn)換回位置。
無需查找數(shù)據(jù)表或需要在線服務(wù)。該算法是公開的,可以不受限制地使用。
Google的一種地圖編碼技術(shù)
歡迎來找我
這個是遙測的庫,很出名,之后寫
關(guān)于測試是軟件編寫的最后一個階段,到底能不能使用在此會有結(jié)果
這個是其中的一個測試的程序
在源碼里面也有4個人目錄,鏈接文件,主的項目文件,還有測試的使用的文件夾,以及大家共同依賴的文件。
可以看到這個編譯的ld文件是很多的,這個也沒有啥好說的
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)度程序
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 虛擬串口的硬件抽象層
以上這些就是大概的對目錄的一個解釋。
這個是啟動文件
刪除的匯編的樣子
虛擬串口
這個就是黑盒的一個疊加層的樣子
這個是黑盒記錄器,把飛機(jī)上面的數(shù)據(jù)保存下來
https://github.com/cleanflight/blackbox-tools
解碼工具
這個是使能黑盒記錄器的宏
可以儲存的介質(zhì)
這個是相當(dāng)于一個優(yōu)先級
黑盒的配置的結(jié)構(gòu)體
速率
模式
這個就是編譯文件目錄
這個是cil的文件夾,就是我們的串口連接,就是后面上傳的配置啥的
這個是條件編譯,可以使用debug的功能
通過連續(xù)跳轉(zhuǎn),定位到最終的實現(xiàn)是這里
這個實現(xiàn)我看不懂了
隨便看一個寫的什么
在具體的C實現(xiàn)里面,可以大量的文件都在這里匯集
設(shè)置同步
基于串口的RX協(xié)議
使用SPI接口的RX接收機(jī)
還有燈光的調(diào)色方式
common是就像工具箱一樣的結(jié)構(gòu),這個好看
坐標(biāo)軸的定義
飛起來的方向定義
穿越機(jī)是和硬件強(qiáng)相關(guān)的,這里肯定有大量的硬件驅(qū)動
在里面是按照一些定義的方式來寫的
這個是電機(jī)的協(xié)議
正經(jīng)飛控的實現(xiàn)是這么多,算法層面的東西
這是算法運(yùn)算完,如何驅(qū)動硬件
RX協(xié)議
任務(wù)驅(qū)動
這個里面是已經(jīng)注冊的飛控(也不是注冊)
里面是大量的硬件IO的map
還有各種的遙測協(xié)議
還有很多的我都搞不明白是干啥的,繼續(xù)研究。
-
傳感器
+關(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)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論