版权声明:本文为博主原创文章,未经博主允许不得转载。
第八章 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数据的写入。
http://blog.youkuaiyun.com/qq_18112493/article/details/71102005