对月形单 发表于 2009-11-11 21:43

如何学好编写驱动程序?

  本人本科时是学习硬件的,现在搞了快半年的ARM+LINUX,同时补了操作系统及数据结构,在开发板了也做了一些实验.目前我想专门学习内核移植,驱动开发,FPGA/CPLD三方面.为将来工作做准备.
  请问学习驱动有什么经典的教材,且能和我目前的条件结合起来.
  我的条件:开发板是基于S3C2410的,但是我只有交叉编译器是2.25.3,内核也是LINUX2.4.18。
  我应该如何去学习驱动开发,需要什么基础知识?
                       
                        求教!

openspace 发表于 2009-11-11 22:23

Linux Device Drivers 3rd
这本书不错,描述了一下kernel的驱动API接口和一些重要的概念

不是搞硬件和嵌入式的,具体移植什么的知道的也不多
不过本版和内核版精华区有许多不错的文档
LZ可以看看,有专门讲移植的

剩下的就是 practicing & coding
有时间的话看看内核代码也不错

dreamice 发表于 2009-11-11 22:31

回复 #1 对月形单 的帖子

LZ不要学那么杂,从一个方面入手,深入下去。当然,在学校的时候,可以把各方面基础知识都打牢一些

emmoblin 发表于 2009-11-11 22:58

fpga 和linux编程差得太远了,驱动没什么好写的,而且很难找到驱动的工作。
一般一个公司没那么多外设,就算像手机这么多外设的设备,驱动也是不多的,一般一个组就够了。大部分时间都是再搞业务逻辑。
毕竟一个产品注重的还是业务。

多数的还是应用,或者linux网络编程的机会比较多。而且说实话驱动比起应用逻辑来简单多了,毕竟驱动都是按照datasheet上的指导或者相似代码进行修改,也就是一个调试的时间。

[ 本帖最后由 emmoblin 于 2009-11-11 23:00 编辑 ]

cskyrain 发表于 2009-11-11 23:03

回复 #4 emmoblin 的帖子

同意ls的
感觉驱动这边芯片厂商都提供好了,只是有时根据需要修改一下。

snail_314 发表于 2009-11-12 09:21

回复 #4 emmoblin 的帖子

要真正做驱动就要去chip商。但是。。。

chip商其实也是专一个领域,比如做网络的很少还会去做图形和视频。并且chip商一般也就几个人专门负责和Linux的kernel ABI接口的,比如内核升级了,或者新的subsystem出现,或者有新的标准出现,这些才需要真正用到“Linux Device Driver”这些知识的,毕竟chip商的的驱动都很成熟,就这么一个系列的产品,这种和kernel,middleware接口的框架代码早很成熟了,并且这一部分都是开源的。那么大部人是做什么呢?都是做domain相关的,比如新的芯片出来了,增加了新的feature,那么就让这些新的chip得到支持,这一部分很多都是以闭源形式出现的,里面都会牵涉到寄存器等涉及芯片design的端倪了;最后,还有大部分的工作就是解bug了,毕竟商业化的驱动程序代码量很大,客户也千七八怪,他们希望支持的不同distribution的Linux等,或者用了某个middleware,甚至他们用了某个不是很成熟或者第三方的应用程序,用了一些不是很成熟的api,都会造成bug。

对月形单 发表于 2009-11-12 09:24

回复 #2 openspace 的帖子

谢谢

snail_314 发表于 2009-11-12 09:25

未来的趋势,在中国应该不会出现google,ms这种引领os潮流的公司,但是有像华为这种设备商,他们虽然是设备商,但是他们财力雄厚,所以,他们会有像kernel优化,重架构等这种需求,还有百度也是,从门槛来说,他们比很多芯片商的门槛更高,所以应该也相对更值钱。但是要求也高啊

对月形单 发表于 2009-11-12 09:26

回复 #6 snail_314 的帖子

LZ说了怎么多,我还是没怎么明白你究竟要表达什么意思啊?

对月形单 发表于 2009-11-12 09:29

回复 #4 emmoblin 的帖子

是这样的吗?那为什么有驱动工程师呢?而且我主要是想和硬件结合起来,上次有人说驱动和硬件有结合,而且很好找工作的啊?现在又迷茫了!
页: [1] 2
查看完整版本: 如何学好编写驱动程序?