第八章
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
数据的写入。