Chinaunix首页 | 论坛 | 博客
  • 博客访问: 208853
  • 博文数量: 63
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 620
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-05 14:36
文章存档

2010年(8)

2009年(55)

我的朋友

分类: LINUX

2009-12-24 16:29:11

关于linux设备驱动的问题

关键词:                                             

linux下的设备驱动,其实没有想象中的那么难,要写好linux驱动程序,其实最关键是对要驱动的设备的理解,在很多情况下我们写的驱动程序,很多情况是对设备理解不好,导致这样那样的bug;在写linux驱动的时候很多情况下会出现kernel oops的错误,这其实是对地址操作的不正确,那么这就要求我们对linux的内存管理有一定了解,要对地址越界等问题仔细观察。另一个常见的问题是应用程序调用了驱动程序之后,会发现内核没有任何的消息打印出来,应用程序就停住了,有的看起来是死机了但是外部强制中止应用程序,还是可以退出的,对于这些情况,多数是因为在驱动程序里面采用了阻塞的方式,没有事件使驱动推出阻塞等待的状态,这个时候就需要去查找驱动程序在哪里被阻塞了;而有的是确实是死机了,外部无法中止,那就是说明采用了阻塞而且中断无法响应导致,那么这个时候就需要去查找驱动程序在哪里被阻塞了,而且还要看看中断是不是被屏蔽掉了。很多时候我们在驱动的时候都没有什么好的工具,通常我们都会用printk语句在怀疑的地方打印调试,一步一步跟踪,这虽然效率不是很高,但是基本上都可以解决问题。

以上就是在写驱动的过程中常见的情况,如果解决了这些问题,驱动应该是可以正常工作的。要使驱动更好的工作,以及容错,那就要对设备的特性进行深入理解了。

阅读(830) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~