咨询:做驱动应该看哪些文档?
最近正在学习驱动,关于Switch芯片的一驱动,组长给了我很多资料(包括源代码)。我问组长应该怎么看,组长就告诉我从 module_init() 里面的 function 慢慢追。。。可能这样是培养我的自我思考的能力吧。
资料包括:
(1) 源代码
(2) 和此 Switch 芯片相关的其他文件(很多,除了datasheet之外还有很多其他的pdf,乱七八糟的东西,正是因为太多,所以才不知道除了Datasheet应该看什么东西)
这个版块肯定有很多做驱动开发的,所以大家依据自己的经验给小生指指路。Thanks.
我先说说我现在的情况吧:
Datasheet里面基本上都是讲这个Switch的工作原理和相关控制(例如:VLAN 和 QoS相关控制),目前这份文档看得差不多了,相关寄存器也基本了解得差不多了。
但是,一看到程序就很蒙,主要表现在:
软件部分 和 硬件部分相连的部分感觉蒙,例如,如图1:
图中的程序有很多都是对PIN进行设置和操作的,但是目前对各个PIN脚的功能不清楚(这应该算是硬件原理没有搞懂吧...)(问题1:此时应该看什么文档?大约为什么名字?)
我自己的看法是:
------------------
应该先把硬件的基本电路图看明白了,把芯片的各个管脚搞明白了,再看驱动。【问题2:我这种想法对吗?】
对前面问题进行简单总结下吧:
【问题3】
拿到一个芯片后,肯定先要看datasheet,关于此芯片的用法和相关寄存器(这一步我倒是做到了),我还应该看哪些文档呢?或者说我还应该哪些其他类型事情?
为了使得大家理解我的意思,说话稍微罗嗦了些,希望大家见谅,多多指出指导意见,谢了 首要的就是datasheet。其次,如果一些资料是介绍如何编程使用设备或者驱动的话,那也要仔细看一下。
同时,你还得有Linux下设备驱动的一些基本知识。
回复 #2 Godbach 的帖子
谢谢版主的回复,您的速度可真是快啊,嘿嘿。 原帖由 qiangqiang02 于 2009-8-13 11:14 发表 http://linux.chinaunix.net/bbs/images/common/back.gif谢谢版主的回复,您的速度可真是快啊,嘿嘿。
呵呵,刚好赶过来看到。我最初做这些东西的时候也很迷茫,除了别人告诉我有一本LDD2可以看之外,就剩下自己在哪里瞎倒腾了。最后也只是一知半解啊。
回复 #1 qiangqiang02 的帖子
单纯的硬件驱动和Linux下的模块驱动有很大的差异。Linux下编写模块驱动,首先必须具备编写硬件驱动的能力;其次,要对Linux底层调用机制,模块编程等有比较深入的了解,如果要做得更深的话,对linux内核也需要足够的熟悉。
从资料上来说,datasheet是第一步,另外,LDD3,ULK等书都是难得的好书。 还要了解你所有物总线,如你要开发驱动的设备是通过PCI/PCIe连接、USB连接、还是HPI连接等。例如PCI看一下PCI Local Bus Specification,实际上目前做PCIe设备也是基本上只用PCI的兼容部分。
CPU一侧对于Linux平台基本上已经封装了,主要是看一下内核中相关的文档,如讲DMA的。但如果是做一些嵌入式平台的,有时候还需要了解一下CPU的一些相关知识。 你提到,“目前对各个PIN脚的功能不清楚”,我感觉好像你只看了datasheet而没有看原理图吧。结合核心芯片的datasheet里的reference design看原理图。一般原理图都是依据那个画的。还有,不是所有管脚的功能都需要你去“研究”,一些初始化配置的寄存器,在整个产品的运行生命周期中只初始化一次就好了,所以,一般芯片厂商还会带有一些demo code,这些demo code不见得是什么OS上的driver,可能就是一般单片机上跑的小程序,简单初始化一下,然后fire的那种,这种demo code也要仔细读,帮助非常大。 OK,非常感谢楼上几位的忠诚建议,目前正在寻找突破口,痛苦ING....
页:
[1]