内核定时器使用的错误
想使用内核定时器来对开发板上的灯,定时的点亮、关闭,相成闪烁的效果。在用户态应用程序调用这个驱动时,linux直接崩溃了,问题出在定时器调用的那个函数中:
执行到myled_ioctl_led_on()或者myled_ioctl_led_off()时就出错了。奇怪的是如果把这两个函数禁掉,直接printk,是正常的。函数中就是调用了一个内核中的函数,而且不用时钟,直接调用时是正常的。
void myled_ioctl_led_on(void)
{
cpm2_set_pin(2, 13, CPM_PIN_OUTPUT|CPM_PIN_GPIO|CPM_PIN_VALUE_0);
}
void led_twinkle_timer_function(unsigned long arg)
{
if (!led_twinkle_status)
{
myled_ioctl_led_on();
//printk(KERN_ALERT"led on \n");
led_twinkle_status = 1;
}
else
{
myled_ioctl_led_off();
//printk(KERN_ALERT"led off \n");
led_twinkle_status = 0;
}
mod_timer(&myled_dev->s_timer, jiffies+HZ);
}
执行到myled_ioctl_led_on()或者myled_ioctl_led_off()时就出错了。奇怪的是如果把这两个函数禁掉,直接printk,是正常的。函数中就是调用了一个内核中的函数,而且不用时钟,直接调用时是正常的。
void myled_ioctl_led_on(void)
{
cpm2_set_pin(2, 13, CPM_PIN_OUTPUT|CPM_PIN_GPIO|CPM_PIN_VALUE_0);
}
...全文
相关推荐
Linux内核延时研究与函数代码分析
同时,需要注意延时函数的使用限制和注意事项,以避免出现问题和错误。 Linux内核延时函数代码示例:1.
龙芯1B开发板一体化红外接收头+20键迷你红外遥控器驱动.pdf
内核定时器内核定时器用于精确控制时间间隔,确保在解码过程中能够准确地识别信号的时序,从而正确解析遥控器的编码。4.
linux下定时器源码.zip
**定时器在驱动开发中的应用** - 在驱动开发中,定时器常用于设备轮询、错误恢复、心跳检测等场景。 - 例如,网络驱动可能使用定时器定期发送心跳包,检查网络连接状态。
Android 内核分析报告2
当系统断电时,主板上的RTC芯片会继续维持系统的时间,从而保证在下次开机后系统的时间不会出现错误。在系统启动时,内核会从RTC中读取时间来初始化系统时间;而在关机时,内核会将当前系统时间写回RTC中。
SingleTimer VC定时器类
虽然“SingleTimer”并不直接与Windows内核定时器挂钩,但它可以在用户模式下模拟类似的功能,以满足应用程序的定时需求。


