我是一名学生,暑假想学习一下如何编写驱动程序,请问我应该从哪方面入手?
我是一名学生,暑假想学习一下如何编写驱动程序,请问我应该从哪方面入手?
比如说就编写一个优盘的驱动程序。
谢谢各位高手。
学好汇编和C,然后找一些驱动程序的例子,看看别人是怎么写的,然后模仿着写
先从从Linux开始,因为: 开放源代码,所有的代码你都可以找到,还有资料多,很多相关的书,在网上也可以找到很多相关资料,最后用的人也很多,在eeworld里也有很多牛人,不懂很方便提问.
你想写PC机上的驱动?还是嵌入式的驱动?Windows的驱动?还是Linux的驱动?
我正在学写驱动.
别人给的程序要么看的迷迷糊糊(没注释),要么就是不设计硬件,郁闷
想自己写,但实在是不知道硬件访问应该写在什么地方.
驱动没那么神秘,其实驱动很无聊,
就是看资料,改代码
我也正在编写驱动,个人觉得可以先从LINUX驱动编程开始,熟悉简单的字符驱动,然后再结合I/O的控制,这样就可以再深入理解LINUX的驱动编程了。
没接触过的,会感觉驱动很神秘。只要真正动手写过一个小驱动,就知道,不过如此。也是码代码,框架步骤流程都是固定的。
所有对硬件的操作,都在驱动层。
不过驱动层也分多层,最简单的是mdd/pdd的分法,MDD将同一类接口的一些操作都抽象出来,这里不涉及硬件寄存器和接口的直接操作,但是会调用pdd层的函数。而pdd层就是直接初始化硬件设置,直接对硬件寄存器进行操作了。这里实现很多回调函数,供mdd层调用。回调函数的命名、输入输出参数、返回值等都由mdd层定义好的。
所以,操作系统的上层是不需要关心底层硬件的,因为操作系统的驱动层已经将底层硬件的操作转成了统一的接口,提供给上层应用调用,这个接口就是操作系统的API了。
有C编程的经验吗?否则,太难进入了!还要了解windows internal(WDM的驱动) 的东东!
驱动也分好多种~基于各种平台~最好还是做嵌入式linux或者WinCE的驱动吧~比较多人搞这2个平台的驱动~而且比较好玩~个人认为~呵呵
找到简单的设备的datasheet
找到样例代码
自己动手
linux方向
源代码是最好的资料,可以看linux0.11的代码,比较小 以读懂
driver目录+google搜索
有个项目做更好了
赵炯博士的那本《linux内核完全注释》很不错 有免费pdf版 蛮清晰地
windows方向
不太熟 有个论坛不错:http://www.driverdevelop.com/first.html(驱动开发网)
看DDK的帮助文档就行了,其他的书籍基本都是照抄DDK