第一次写博客,分享心得。
在学习内核驱动时,韦东山老师所用的内核版本是2.6.26,我的内核版本是2.6.32。因为烧写进开发板的内核映像就是2.6.32的,为了保持版本号一致,就没有跟随老师用同一个版本。学习过程中就会遇到所讲课内容和我的内核内容冲突的问题,例如有的宏或者函数在2.6.26中有定义,但是在2.6.32中就取消了或者采用其他的定义方式。这样就需要自己深入内核代码中去查找差异,可以比较当前内核中自带的函数如何处理类似的问题。
我在学习按键中断驱动时就遇到了这样的问题,尝试各种办法,最终得以解决,分享一下。
第一次make时出现错误提示:
error:implicit declaration of function 'request irq',
提示说request_irq这个中断注册函数定义模糊(不知道标准的翻译是什么,我的理解如此)。于是在《Linux设备驱动程序》中查找到了request_irq的函数定义:
int request_irq(unsigned int irq,
irqreturn_t (*handler)(int , void *, struct pt_regs *),