歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux驅動:內核延時測試

Linux驅動:內核延時測試

日期:2017/3/1 10:38:56   编辑:Linux編程

環境:

主機:Fedora 12

目標板:MINI6410

目標板LINUX內核版本:2.6.38

實現功能:

延遲2S

方法1:利用系統全局變量jiffies

jiffies記錄系統節拍,每一次節拍,內核時鐘中斷函數會將jiffies加1.

HZ在ARM中為100,表示1S被分為100份,系統每個節拍為10ms.

修改上篇《Linux驅動編寫:LED驅動測試》(見 http://www.linuxidc.com/Linux/2012-01/51818.htm)中的ioctl函數,測試延時

[cpp]
  1. <span style="font-family:'Arial Black';font-size:18px;">//功能:ioctl操作函數
  2. //返回值:成功返回0
  3. static long led_driver_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
  4. {
  5. unsigned int temp = 0;
  6. unsigned long t = 0;
  7. temp = readl(S3C64XX_GPKDAT);
  8. if (cmd == 0)
  9. {
  10. temp &= ~(1 << (arg + 3));
  11. }
  12. else
  13. {
  14. temp |= 1 << (arg + 3);
  15. }
  16. //等待2S
  17. t = jiffies;
  18. while (time_after(jiffies,t + 2 * HZ) != 1);
  19. writel(temp,S3C64XX_GPKDAT);
  20. printk (DEVICE_NAME"\tjdh:led_driver cmd=%d arg=%d jiffies = %d\n",cmd,arg,jiffies);
  21. return 0;
  22. }</span>
這個方法會使內核忙等待,會影響系統效率.

2.利用宏ndelay(n),延時ns

udelay(n),延時us

mdelay(n),延時ms

這個簡單,不做介紹

Copyright © Linux教程網 All Rights Reserved