做linux下的驱动开发,需要掌握哪些技能和知识点?有没具体的要求列一下.谢谢各位
展开全部
.您要驱动什么东西?抛开Linux系统的约束,您对要驱动的东西是如何工作的、如何去编程驱动它了解吗?是一点不了解?半知半解?一般了解?还是熟知?精通?如果对要驱动的东西都不了解,或者纯粹就想泛泛地学习Linux驱动编程,估计收获不会很大。
2.做过多线程编程吗?为什么要多线程?深刻理会了多线程中如何访问临界资源,如何使用mutex,semaphore?多个线程工作起来,怎么控制它们像我们几个人一起协作干活那样,该各干各的,又该相互通知与配合呢?
3.如果把操作系统比作一个大的执行程序,那么驱动程序就相当于以动态链接库形式提供的“插件”。您有没有做过“插件”式的应用程序?没做过也没关系,您认真思考一下这样的问题:您要做一个控制小车的程序,您这个程序功能很牛X,您希望无论是张家的小车,还是李家的小车都能被您控制,无奈您手头上只有牛家的小车,但你明白,张家、李家的小车功能和你牛家的差不多,控制也就那些事,就是目前不知道具体该如何控制。您得想个法子,留好接口,尽可能保证以后张家、李家的小车都可以被你的程序控制——这时候,你的程序该怎么设计结构比较好呢?
4.CPU在时钟脉冲“PIA-PIA”的节奏下都在干些什么?无论是X86或是ARM,要做驱动,对这个还是得有点基本的了解。
5.保护模式,虚拟内存,大致的道理明白吗?这个得知道。咱们现在大多数的处理器都有cache,cache干啥用?对DMA会有些什么不良影响?这个如果要搞DMA(例如PCI设备驱动)需要明白。
6.按楼上的兄弟说的,找本LDD学习
7.总的来说,设备驱动程序干的是驱动硬件的活,但它的编写更需要注重软件的思路、结构和方法。前面说的写小车控制程序能一定程度上说明这个问题。当然,听起来好像有点难,但是干起来还是挺爽的,没有想的那么复杂
2.做过多线程编程吗?为什么要多线程?深刻理会了多线程中如何访问临界资源,如何使用mutex,semaphore?多个线程工作起来,怎么控制它们像我们几个人一起协作干活那样,该各干各的,又该相互通知与配合呢?
3.如果把操作系统比作一个大的执行程序,那么驱动程序就相当于以动态链接库形式提供的“插件”。您有没有做过“插件”式的应用程序?没做过也没关系,您认真思考一下这样的问题:您要做一个控制小车的程序,您这个程序功能很牛X,您希望无论是张家的小车,还是李家的小车都能被您控制,无奈您手头上只有牛家的小车,但你明白,张家、李家的小车功能和你牛家的差不多,控制也就那些事,就是目前不知道具体该如何控制。您得想个法子,留好接口,尽可能保证以后张家、李家的小车都可以被你的程序控制——这时候,你的程序该怎么设计结构比较好呢?
4.CPU在时钟脉冲“PIA-PIA”的节奏下都在干些什么?无论是X86或是ARM,要做驱动,对这个还是得有点基本的了解。
5.保护模式,虚拟内存,大致的道理明白吗?这个得知道。咱们现在大多数的处理器都有cache,cache干啥用?对DMA会有些什么不良影响?这个如果要搞DMA(例如PCI设备驱动)需要明白。
6.按楼上的兄弟说的,找本LDD学习
7.总的来说,设备驱动程序干的是驱动硬件的活,但它的编写更需要注重软件的思路、结构和方法。前面说的写小车控制程序能一定程度上说明这个问题。当然,听起来好像有点难,但是干起来还是挺爽的,没有想的那么复杂
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询