精華區beta CSSE 關於我們 聯絡資訊
※ 引述《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