作者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
→ anndy:The Linux Kernel Module Programming Guide 05/31 06:18
推 w0717:推能跑才是王道 06/03 09:54
※ skywalking:轉錄至某隱形看板 12/28 01:13