本发明涉及嵌入式设备,特别涉及一种嵌入式设备控制器的实时日志记录方法。
背景技术:
实时日志记录了软件真实的运行过程,一般用来调试软件或者定位软件运行过程中出现故障的位置。目前市场上的诸如麻醉机呼吸控制单元板的嵌入式设备控制器具备有效数据上传的功能,但不具备实时日志输出的功能,当出现了故障,一般靠技术人员等待故障复现时进行分析,不能第一时间对现场故障进行分析处理。
技术实现要素:
本发明的目的在于克服已有的嵌入式设备控制器无法及时实时输出日志信息,导致技术人员无法及时对现场故障加以处理的缺陷,从而提供一种实时日志记录方法。
为了实现上述目的,本发明提供了一种嵌入式设备控制器的实时日志记录方法,包括:
步骤1)、判断嵌入式设备控制器是否存在文件系统,若存在文件系统,执行下一步,否则执行步骤3);
步骤2)、将日志消息以文件方式存储,然后判断是否需要将日志消息实时输出,若需要,执行下一步,否则,结束操作;
步骤3)、判断通讯口缓存中的空闲字节数是否大于所要发送的日志消息的长度,若大于或等于,执行下一步,否则,执行步骤6);其中,所述通讯口包括串口、网口、无线端口中的一种;
步骤4)、判断通讯口是否处于忙状态,若通讯口处于不忙的状态,则执行下一步,若通讯口处于忙状态,则将日志消息的数据帧拷贝到通讯口缓存区的下一个位置,并将数据帧地址及长度写入待发送队列,待通讯口处于不忙状态后,再执行下一步;
步骤5)、将日志消息的数据拷贝到通讯口的发送缓存中,重置dma的内存地址及发送长度,使能dma发送,然后执行步骤7);
步骤6)、通讯口缓存空闲字节数小于要发送的数据长度,等待通讯口缓存空闲 字节被释放,待通讯口缓存空闲字节数增加使得通讯口缓存空闲字节数大于或等于所要发送的数据的长度后,再执行步骤4);
步骤7)、dma发送日志消息数据,在发送过程中置位忙状态;
步骤8)、在dma发送完成的中断中,执行以下操作:
步骤8-1)、复位忙状态,即将通讯口的忙状态转变为不忙状态;
步骤8-2)、检查待发送队列中有无数据,若还有待发送的数据,则将这些数据移出待发送队列,然后执行步骤3),若不存在待发送数据,执行步骤8-3);
步骤8-3)、检查等待队列,如果等待队列中包括有日志消息的数据,就转而执行步骤3),如果没有,结束操作。
本发明的优点在于:
本发明的方法能够实时传输并记录日志消息,保证日志信息的完整性。使得在出现故障时,技术人员可以查看日志,迅速定位故障点。
附图说明
图1是日志发送流程的原理示意图;
图2是本发明的嵌入式设备控制器的实时日志记录方法的流程图。
具体实施方式
现结合附图对本发明作进一步的描述。
日志发送流程原理如图1,将要发送的日志数据拷贝至发送缓存,将发送地址和长度写入消息队列,发送任务在判断dma(directmemoryaccess,存储器直接访问)空闲后,接收消息队列数据,并重置dma的内存地址及长度,使能dma发送,发送过程不需要cpu干预,极大地减轻了cpu负担,也在一定程度上提高了实时性。从日志发送流程也可发现数据发送时间、数据量和数据缓存的关系:数据缓存是空间换时间,复用是时间换空间。
本发明中所涉及的日志的内容可根据各个任务的特点定义,可包括统计日志、传感器日志、通讯口交互指令日志、各模块工作状态日志等。日志的协议可定义不同的数据帧头、指令、长度、校验等实现。
参考图2,本发明的嵌入式设备控制器的实时日志记录方法包括:
步骤1)、判断嵌入式设备控制器是否存在文件系统,若存在文件系统,执行下一步,否则执行步骤3);
步骤2)、将日志消息以文件方式存储,然后判断是否需要将日志消息实时输出,若需要,执行下一步,否则,结束操作;
步骤3)、判断通讯口缓存中的空闲字节数是否大于所要发送的日志消息的长度,若大于或等于,执行下一步,否则,执行步骤6);其中,所述通讯口包括串口、网口、无线端口中的一种;
步骤4)、判断通讯口是否处于忙状态,若通讯口处于不忙的状态,则执行下一步,若通讯口处于忙状态,则将日志消息的数据帧拷贝到通讯口缓存区的下一个位置,并将数据帧地址及长度写入待发送队列,待通讯口处于不忙状态后,再执行下一步;
步骤5)、将日志消息的数据拷贝到通讯口的发送缓存中,重置dma的内存地址及发送长度,使能dma发送,然后执行步骤7);
步骤6)、通讯口缓存空闲字节数小于要发送的数据长度,等待通讯口缓存空闲字节被释放,待通讯口缓存空闲字节数增加使得通讯口缓存空闲字节数大于或等于所要发送的数据的长度后,再执行步骤4);
步骤7)、dma发送日志消息数据,在发送过程中置位忙状态;
步骤8)、在dma发送完成的中断中,执行以下操作:
步骤8-1)、复位忙状态,即将通讯口的忙状态转变为不忙状态;
步骤8-2)、检查待发送队列中有无数据,若还有待发送的数据,则将这些数据移出待发送队列,然后执行步骤3),若不存在待发送数据,执行步骤8-3);
步骤8-3)、检查等待队列,如果等待队列中包括有日志消息的数据,就转而执行步骤3),如果没有,结束操作。
在本发明的方法中,每个任务的日志内容完整地复制到一个数据缓冲区内,若是数据缓冲区空间不够,需要等到有空闲空间再复制。这就保证了日志传输的完整性。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均 应涵盖在本发明的权利要求范围当中。