Linux嵌入式 核心 核心定時器

2021-06-17 21:04:47 字數 1277 閱讀 2460

1.  度量時間差

時鐘中斷由系統的定時硬體以週期性的時間間隔產生,這個間隔(即頻率)由核心根據hz來確定,hz是乙個與體系結構無關的常數,可配置(50-1200),在x86平台,預設值為1000(每秒計數1000次)。

每當時鐘中斷發生時,全域性變數jiffies(unsigned long)就加1,因此jiffies記錄了自linux啟動後時鐘中斷發生的次數。驅動程式常利用jiffies來計算不同事件間的時間間隔。

如果對延遲的精度要求不高,最簡單的實現方法如下--忙等待: 延時  jit_delay 秒。

unsignedlongj=jiffies + jit_delay*hz;

while (jiffies/* do nothing */

}2. 定時器

定時器用於控制某個函式(定時器處理函式)在未來的某個特定時間執行。核心定時器註冊的處理函式只執行一次--不是環執行的。

核心定時器被組織成雙向鍊錶,並使用struct  timer_list結構描述。

struct timer_list;

操作定時器的有如下函式:

voidinit_timer(struct timer_list *timer);初始化定時器佇列結構,初始化兩個系統使用成員 entry base。

void add_timer(struct timer_list * timer);啟動定時器。

int del_timer(struct timer_list *timer);在定時器超時前將它刪除。當定時器超時後,系統會自動地將它刪除

3.  示例**

#include#include#include#include//timer

#include//jiffies

module_license("gpl");

struct timer_list timer; //定義定時器

void timer_func(int para)

int timer_init()

void timer_exit()

module_init(timer_init);

module_exit(timer_exit);

嵌入式Linux系統 「核心定時器」

linux 下的核心定時器 類似微控制器中的定時器中斷 1.涉及函式 1.初始化定時器佇列結構 init timer buttons timer 2.定時器超時函式 buttons timer.function buttons timer function 3.或者初始化定時器和超時函式作為一步 d...

linux 核心 核心定時器

一.時鐘中斷概念 1.時鐘中斷由系統的定時硬體以週期性的時間間隔產生,這個間隔 即頻率 由核心根據hz來確定,hz是乙個與體系結構無關的常數,可配置 50 1200 在x86平台上預設值是1000 2.每當時鐘中斷發生的時候,全域性變數jiffies unsigned long 就加1,所以jiff...

linux核心定時器

度量時間差 時鐘中斷由系統的定時硬體以週期性的時間間隔產生,這個間隔 頻率 由核心根據hz來確定,hz是乙個與體系結構無關的常數,可配置 50 1200 在x86平台,預設值為1000.每秒鐘產生1000次時鐘中斷 每當時鐘中斷發生時,全域性變數jiffies就加1,因此其記錄了自linux啟動後時...