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