我正在编写一个内核模块,该模块需要以至少 0.01 毫秒的精度测量的 0.1 毫秒间隔调用函数。250MHz ARM CPU,HZ 变量(每秒 jiffies)是 100,所以任何基于 jiffies 的东西都是不行的,除非我可以增加 jiffies 粒度。
有什么建议在哪里/如何看?
我正在编写一个内核模块,该模块需要以至少 0.01 毫秒的精度测量的 0.1 毫秒间隔调用函数。250MHz ARM CPU,HZ 变量(每秒 jiffies)是 100,所以任何基于 jiffies 的东西都是不行的,除非我可以增加 jiffies 粒度。
有什么建议在哪里/如何看?
假设您正在运行的内核启用了高分辨率计时器支持(这是一个构建时间配置选项)并且您有一个适当的计时器硬件可以提供所需的支持来以这种粒度引发中断,您可以使用在内核 hrtimer API 中注册一个符合您要求的计时器。
这是 hrtimer 文档:http ://www.mjmwired.net/kernel/Documentation/timers/hrtimers.txt
但请记住,要真正获得如此规模的不间断响应,您很可能还需要应用和配置 Linux RT(又名 PREEMPT_RT)补丁。
你可以在这里阅读更多:http: //elinux.org/Real_Time