Linux驱动:内核延时测试
Linux驱动:内核延时测试
环境:
主机:Fedora 12
目标板:MINI6410
目标板LINUX内核版本:2.6.38
实现功能:
延迟2S
方法1:利用系统全局变量jiffies
jiffies记录系统节拍,每一次节拍,内核时钟中断函数会将jiffies加1.
HZ在ARM中为100,表示1S被分为100份,系统每个节拍为10ms.
修改上篇《Linux驱动编写:LED驱动测试》(见 )中的ioctl函数,测试延时
[cpp]
- <span style="font-family:'Arial Black';font-size:18px;">//功能:ioctl操作函数
- //返回值:成功返回0
- static long led_driver_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
- {
- unsigned int temp = 0;
- unsigned long t = 0;
- temp = readl(S3C64XX_GPKDAT);
- if (cmd == 0)
- {
- temp &= ~(1 << (arg + 3));
- }
- else
- {
- temp |= 1 << (arg + 3);
- }
- //等待2S
- t = jiffies;
- while (time_after(jiffies,t + 2 * HZ) != 1);
- writel(temp,S3C64XX_GPKDAT);
- printk (DEVICE_NAME"\tjdh:led_driver cmd=%d arg=%d jiffies = %d\n",cmd,arg,jiffies);
- return 0;
- }</span>
2.利用宏ndelay(n),延时ns
udelay(n),延时us
mdelay(n),延时ms
这个简单,不做介绍
|
评论暂时关闭