第八章 PX4-SDlog解析
這一章節我們對SD存儲卡來進行解析。SD卡涉及到log日志,在很多飛行中log檔案非常重要的,尤其是新手在炸機過程中有了這些資料我們基本上就能分析出炸機原因。
首先我們還是來找RCS中的sd卡的啟動。這裡直接貼出來至于原因大家自己分分析一下

。Sd卡的驅動用的是硬體驅動它的驅動在是stm32_sdio.c中,經過前面幾章的學習,這個應該也不難了吧。大家自己去探個究竟。
回到檔案sdlog2.c檔案中,找到入口函數
首先回到start中首先就是對SD卡的優先級進行選擇。然後執行函數
這裡面就有解析
,log_rate=500,log_buffer_siza=18,然後就是e的标志。
然後就是一堆的讀取參數。這些參數都是param_find函數。
看到沒建立log檔案的路徑。
開辟了空間哦。
log_type選擇。回到while中,while開始會對資料進行訂閱。真正的寫入函數是LOGBUFFER_WRITE_ADN_COUNT().
這裡我們其他的不做細描述,我們這裡隻講imu資料寫入到log中。這裡我們用的log_type為LOG_TYPE_NORMAL是以我們找到這個if語句
首先就是對資料訂閱
然後判斷對否寫入标志位進行指派
然後就是将原始資料指派到log_msg中。
這個log的标号是LOG_IMU_MSG=4,在這裡我們隻對LOGBUFFER_WRITE_AND_COUNT函數說明,這裡我們可以看到參數是IMU。我們追蹤到sdlog2_messages.h中找到IMU的結構體。
看到沒對應上了哦。在說一個LOG的格式也在這個檔案最下面我們找到IMU的
這裡同樣就對應上了哦,f代表浮點型。
這一章節也不難,整個架構也已經完成。如果要添加新的資料到LOG中隻需在sdlog2_messages.h中添加資料MSG标号(不能重複哦,隻需在後面遞增就行),增加資料結構體。再在log_formats中寫入你的資料格式和你的資料說明。最後再sdlog2.c中進行訂閱相關資料,進行寫入就行了。如果不知道如何去做就去參考IMU資料的寫入。