Linux下timer延時的使用

2021-06-10 08:30:28 字數 3092 閱讀 2570

因筆者工作在嵌入式平台上(非x386),下面給出的結論僅在arm平台上測試過。

1. 在原子上下文,延遲應該少於100微秒。

使用udelay

2. 在非原子上下文延遲的使用

0-100us: 使用udelay

100us以上: 使用usleep_range

20ms以上且不要求精確: 使用msleep

msleep不精確,完全可以用usleep_range代替。

下面是在freescale i.mx6q (arm cortex a9, 1.0ghz, qual-core)平台上的測試結果,

使用的核心版本是: 3.7.0-rc1+

10us delaycompare: udelay:10:usleep_range:31

100us delaycompare: udelay:99:usleep_range:119

1ms delaycompare: mdelay:998: msleep10429: usleep_range:1017

5ms delaycompare: mdelay:5004: msleep18480: usleep_range:5017

10ms delaycompare: mdelay:9991: msleep19431: usleep_range:10020

20ms delaycompare: mdelay:19987: msleep24205: usleep_range:20019

25ms delaycompare: mdelay:24995: msleep39140: usleep_range:25021

10us delaycompare: udelay:10:usleep_range:31

100us delaycompare: udelay:100:usleep_range:119

1ms delaycompare: mdelay:998: msleep10404: usleep_range:1017

5ms delaycompare: mdelay:5003: msleep18486: usleep_range:5017

10ms delaycompare: mdelay:9993: msleep19455: usleep_range:10027

20ms delaycompare: mdelay:19990: msleep24168: usleep_range:20021

25ms delaycompare: mdelay:25004: msleep39137: usleep_range:25020

10us delaycompare: udelay:10:usleep_range:31

100us delaycompare: udelay:100:usleep_range:119

1ms delaycompare: mdelay:998: msleep10340: usleep_range:1017

5ms delaycompare: mdelay:5005: msleep18480: usleep_range:5016

10ms delaycompare: mdelay:9990: msleep19427: usleep_range:10014

20ms delaycompare: mdelay:19999: msleep24205: usleep_range:20013

25ms delaycompare: mdelay:24996: msleep39144: usleep_range:25024

10us delaycompare: udelay:10:usleep_range:33

100us delaycompare: udelay:100:usleep_range:116

1ms delaycompare: mdelay:998: msleep10387: usleep_range:1014

5ms delaycompare: mdelay:5007: msleep18484: usleep_range:5013

10ms delaycompare: mdelay:9997: msleep19454: usleep_range:10024

20ms delaycompare: mdelay:19990: msleep24179: usleep_range:20020

25ms delaycompare: mdelay:24997: msleep39140: usleep_range:25018

10us delaycompare: udelay:10:usleep_range:35

100us delaycompare: udelay:100:usleep_range:119

1ms delaycompare: mdelay:998: msleep10330: usleep_range:1017

5ms delaycompare: mdelay:5005: msleep18482: usleep_range:5016

10ms delaycompare: mdelay:9991: msleep19433: usleep_range:10021

20ms delaycompare: mdelay:19989: msleep24203: usleep_range:20020

25ms delaycompare: mdelay:24993: msleep39145: usleep_range:25022

10us delaycompare: udelay:10:usleep_range:31

100us delaycompare: udelay:100:usleep_range:120

1ms delaycompare: mdelay:998: msleep10383: usleep_range:1017

5ms delaycompare: mdelay:5004: msleep18486: usleep_range:5017

10ms delaycompare: mdelay:9994: msleep19451: usleep_range:10023

20ms delaycompare: mdelay:19991: msleep24171: usleep_range:20022

25ms delaycompare: mdelay:24998: msleep39141: usleep_range:25020

JS中的延時與Timer函式

延時 settimeout code,millisec 用於設定在指定的毫秒數後呼叫函式 設定延時 var timeoutid settimeout function 5000 cleartimeout timeoutid 用於取消由 settimeout 函式設定的延時 週期呼叫 timer se...

Linux下的packet socket使用總結

上節講到的raw socket雖然已經能處理ip層的資料了,但是在實際的應用中可能需要獲取更加底層的報文資訊。這就需要用到另一種更加強大的socket建立方式 packet socket,建立之後直接可以操作包括以太層在內的報文資料。packet socket的建立方式如下 socket af pa...

linux下的EDA primetime使用

primetime是進行靜態時序分析 sta 的工具,根據設計者給出的時序約束來對電路進行分析觀察設計是否滿足時序要求。pt能夠提供以下檢查 建立時間和保持時間檢查 時鐘脈衝寬度的檢查 時鐘門的檢查 未約束的時鐘端點 組合反饋迴路等。需要注意的是pt的輸入檔案是門級網表,一般先要通過dc將rtl級電...