今天看看px4的log部分,log这部分其实是比较独立的模块,是可以拿出来使用在其它场合的。基本上也就是一般的记录日志的那一套形式。
不过也记录下来吧。这里没有粘贴代码,一行一行说明,但是下面的内容和代码是一一对应的。
首先根据rcS,它启动rc.logging,那咱们就看看这个脚本:
if [ -d
/fs/microsd ]
then
if ver hwcmp PX4FMU_V1
then
if sdlog2 start -r 40 -a -b 3
-t
then
fi
else
if sdlog2 start -r 100 -a -b
12 -t
then
fi
fi
fi
可见,只是启动sdlog2这个命令。后面那一堆都是参数。接下来看代码了。
Src/modules/sdlog2/sdlog2.c,找到sdlog2_thread_main函数,这个是入口。前面一段是参数分析,稍微看下这段:
r参数写入日志频率,对于fmuv2来说,频率是100Hz,即每10ms执行一次。
b参数是log buffer大小,对于fmuv2来说,是12kB。
a参数表示当系统armed以后,开始记录日志。
t参数表示日志文件名字中含有时间戳信息。
然后下面初始化了日志模块接收信息的结构体或者联合体。注释里也说了主要是为了节省空间。
#pragam pack(push,1)