红联Linux门户
Linux帮助

关于linux设备驱动的问题

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

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

共有 4 条评论

  1. xihu_wy 于 2010-11-16 09:05:00发表:

    收到

  2. lin8331568 于 2009-10-12 09:22:14发表:

    恩,经验之谈,好!

  3. yi0734 于 2009-08-16 23:14:10发表:

    谢谢啦,很有意义

  4. js001sdx 于 2009-08-13 14:29:28发表:

    学习