作者ashkenazy (流浪者的土壤)
看板CSSE
标题Re: [问题] 关於device driver
时间Mon May 29 13:28:14 2006
※ 引述《fish39 (没有女朋友T.T)》之铭言:
: 我想问一下,市面上写device driver除了欧莱礼Linux deivce driver
: 那本外,还有没有其他本啊?
: 感觉那本写的有点难(C底子不好),目前还是看以前学长的code
: 学长写的,其实还ok,不像那本书,写的那麽难~~~
: 希望,有人玩嵌入式系统的,可以分享一下经验,谢谢
目前讲Linux驱动程式的中文书就只有这本而已
如果是Windows驱动程式,书跟资料就会相对多一些
有过一定linux kernel开发经验的人,可能会觉得这本书废话很多
但对没有接触过linux kernel的人,难度颇高
问题可能在於这本书的作者太强了
很多东西作者认为你应该已经知道了,我没必要再跟你解释
(特别是Advanced Char Driver Operations这个章节)
或者很多内容作者认为读者自己去看书上附的code就懂了
小弟比较建议里面的程式全部自己动手从头写过一遍,对於了解范例帮助会比较大
看这本书基础要求:
1. C语言的底子要够厚
2. 基本的资料结构需要有撰写的经验
3. 读过恐龙本,对於作业系统概念有基本了解
建议搭配阅读的资料:
如果是Linux Deivce Driver 2e (kernel 2.4)
1. Bovet & Cesati -- Understanding the Linux Kernel 2e -- O'Reilly
2. Richard Stevens -- Advanced Programming in the Unix Environment
-- Addison Wesley
3.
http://lxr.linux.no/
如果是Linux Deivce Driver 3e (kernel 2.6)
1. Bovet & Cesati -- Understanding the Linux Kernel 3e -- O'Reilly
2. Richard Stevens -- Advanced Programming in the Unix Environment
-- Addison Wesley
3.
http://lxr.linux.no/
4. Robert Love -- Linux Kernel Development 2e -- Novell Press
(觉得欧莱里那本Linux Kernel太硬啃不下去的,可以先看这本)
这些书网路上都有电子档,怎麽搜寻就去大陆网页各显神通喽
不过工具书还是手边留一本查起来比较方便
比较大的难关会卡在
Char Drivers、Advanced Char Driver Operations与Interrupt Handling这三个章节
前面都是在引导读者熟悉Linux Kernel Module的设计
到了Char Drivers这章通常都会卡一下,而这个章节的困难之处
在於会牵扯到application、library、kernel、device driver的互动
建议自己动手写读写应用程式,会比较容易理解这里的互动关系
对system call也会有一些概念,因此小弟才会建议拿R.Stevens那本钜作当参考书
如果R.Stevens这本还是觉得难度太高
还有另一本Mitchell, Samuel, Oldham写的Advanced Linux Programming -- Sams出版
算是R.Stevens那本的精简版,英文也比较简单,也是专门针对Linux环境所撰写的
Advanced Char Driver Operations这个章节应该会卡最久
但是里面所提到的某些file operations,使用机会比较没这麽大
这个章节会彻底考验读者对恐龙本以及Unix system call界面的理解程度
特别是难缠的Blocking/Non-blocking I/O、I/O Multiplexing、asynchronous I/O
这些东西在这本书中是不会跟你解释的,作者认为读者应该已经会了 Orz
不过还有两本书可以挽救困在这里感到无助的读者
Sean Walton -- Linux Socket Programming -- Sams
R. Stevens, Fenner, Rudoff -- UNIX Network Programming Volume 1, 3e
The Sockets Networking API -- Addison Wesley
最後一个难关应该就是Interrupt Handling
这个章节里面读者不去了解Linux如何实作Interrupt也不行了
(而且又再次挑战了读者对恐龙本的理解程度 囧rz)
书中对於Linux实作Interrupt有相当基本的介绍,但讲的还是太简单了
小弟经验是要通过这关
还是非得把Understanding the Linux Kernel的某些章节看过才行
其他几个章节,相对之下难度就没有这麽可怕
但对於要撰写某些特殊装置的驱动程式如USB、PCI等
这本书讲的东西就只有大概粗略的介绍而已了
就小弟所听闻,目前在业界实作驱动程式,大多也是只用Char Drivers
很多台湾公司的产品,管他什麽网卡还是什麽装置的
就用Char Drivers去写,效能?能吃吗?反正可以跑才是王道 囧rz
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.76.254.42
2F:→ anndy:The Linux Kernel Module Programming Guide 05/31 06:18
3F:推 w0717:推能跑才是王道 06/03 09:54
※ skywalking:转录至某隐形看板 12/28 01:13