如何在实时Linux的内核模式下获取中断时间(时间戳)?

时间:2014-04-01 08:49:33

标签: linux linux-kernel timestamp embedded-linux ftrace

客户端/服务器通信 - 客户端是发送方,服务器是接收方。

当服务器在以太网接口(UDP)上接收数据时,将触发服务器中的内核。我在服务器端使用实时LINUX。服务器(即嵌入式pc目标)正在处理中断以触发嵌入式pc目标(包含rt Linux)以获得执行新到达数据的注意力。

如果中断发生后如何计算内核中的时间并将响应发送回客户端?

1 个答案:

答案 0 :(得分:0)

1)如果您使用的是嵌入式Linux平台,可以参考CPU数据表:也许它有一套高速计时器。例如,我正在使用基于ARM Cortex A8的SoC,它具有可以高达38.4 MHz的时钟的GP定时器,因此我可以以~27ns的精度测量执行时间。很可能,您的操作系统不会提供此类API,因此欢迎您直接从内核驱动程序读写CPU寄存器。

2)如果您只想估计执行时间,仅此而已,您可以使用电路板的GPIO引脚之一。将引脚设置为“start”,设置为“end”,然后通过示波器观察此引脚(如果有)。

3)如果我误解了你,你所需要的只是实时的时间戳(如HH:mm:ss),你可以参考你板子的RTC芯片。使用实时时钟芯片的驱动程序,您可以从内核模块中读取时间。不幸的是,您可能无法通过中断服务程序执行此操作。 或者只需调用 do_gettimeofday ,并根据需要通过 time_to_tm 将timeval转换为人类可读的内容:)