- VxWorks設備驅動開發詳解
- 曹桂平等編著
- 1805字
- 2019-01-09 15:53:23
前言
VxWorks是較為常用的嵌入式硬實時操作系統,在很多領域都有其應用的身影,然而由于VxWorks操作系統源代碼不公開,雖然文檔中對各種驅動設計都有說明,但在實際應用中還是會遇到很多問題。本書根據作者工作中的一些驅動經驗,結合Wind River提供的一些官方文檔和開發環境下的源代碼寫成,對VxWorks下各種常見設備的驅動都做了比較詳細的介紹和分析,可以作為VxWorks下設備驅動設計的指南。另外,對于各種類型的VxWorks啟動方式以及映像文件組成進行了較為細致的分析,將澄清VxWorks BSP開發者具有的很多疑問。本書既可作為VxWorks初學者的學習材料,也可作為VxWorks老手的參考資料。
本書內容
本書分為3篇共11章。
第1篇為VxWorks操作系統快速入門篇,共包括3章內容。
第1章簡單介紹了嵌入式系統,并對VxWorks操作系統的特性進行了簡單說明。
第2章對VxWorks操作系統的主要組成進行了比較詳細的介紹,包括任務、任務調度、任務間通信、內存管理、中斷處理。書中內容不是翻譯官方的文檔,而是結合作者的經驗有感而發。
第3章對VxWorks內核映像類型以及啟動方式進行了詳細分析,并對下載方式中使用的bootrom進行了較為深入的分析和介紹,此后對VxWorks操作系統的啟動過程進行了梳理。本章將澄清讀者對VxWorks啟動方面的很多疑問。
第2篇為VxWorks設備驅動起步篇,共包括2章內容。
第4章討論了驅動程序的基本功能和結構,對驅動程序中常用的一些策略以及注意事項進行了介紹。
第5章介紹了VxWorks設備驅動的內核結構層次,著重對I/O子系統及其維護的三張系統表進行了討論,并對VxWorks下已有的幾個較為常用的驅動以代碼示例的方式介紹其使用方法。
第3篇為本書的重點,對VxWorks下六大核心設備驅動進行了詳細的分析和介紹,六類驅動中每類驅動對應一章內容,故本篇共包括6章內容。
第6章開始進入具體設備驅動的設計,本章將從結構層次最簡單的普通字符設備驅動開始講起,以一個SPI接口驅動代碼為例,著重討論了普通字符設備驅動的結構、設計方式和具體實現。
第7章對串口驅動設計和實現進行了詳細的分析。串口也是字符設備的一種,由于其常用性,VxWorks內核專門提供了TTY中間層來提高串口驅動設計的效率,降低串口驅動設計的復雜度。
第8章進入第二大類設備——塊設備驅動的設計和實現的分析。我們將從數據結構的知識出發,分析塊設備驅動的基本結構,進而討論其具體實現。VxWorks下塊設備驅動工作的方式比較特殊,其使用的阻塞讀寫方式不同于通用操作系統下的中斷讀寫方式,這與VxWorks特殊的工作環境有關。
第9章將對Flash設備驅動進行詳細介紹。Flash設備是嵌入式平臺上最常見和常用的設備,用以存儲操作系統內核映像和用戶數據。本章將對VxWorks內核提供的TrueFFS中間層進行展開,分析Flash設備驅動涉及的各個方面。
第10章進入第三大類設備——網絡設備驅動的設計和實現。網絡設備由于其獨特的工作方式,其內核驅動層次不同于其他兩類設備(字符設備、塊設備),其不屬于I/O子系統管理,而是直接工作在內核網絡棧的實現下。為了簡化網絡設備驅動設計的復雜度,VxWorks提供了MUX中間層,在該層次下實現的驅動通常被稱為增強型網絡驅動。本章同樣也是從數據結構的知識出發,以實際項目中使用的網口驅動代碼為例,逐步完成對網絡設備驅動的設計和實現。
第11章分析了USB設備驅動的設計和實現。首先對USB本身進行了詳細的介紹,之后對要驅動的對象進行了澄清。一般而言,USB設備驅動指的是對USB主機或者目標機控制器的驅動,這個驅動由于與內核USB棧耦合較緊密,故必須對內核USB棧的實現有很清楚的了解才能成功地完成USB主機控制器的驅動開發。本章首先跟隨一個USB類驅動層讀數據請求,對請求在內核USB棧中的傳遞路徑進行了跟蹤,對路徑上調用的關鍵函數以及使用的數據結構進行了較為詳細的分析和介紹,之后以Mass Storage類驅動為例,介紹類驅動的初始化過程,并以UHCI控制器驅動為例,介紹主機控制器驅動的初始化過程,最后總結出了USB主機控制器的驅動結構,給出了驅動中兩個中心函數的實現框架。
致謝
我要感謝我尊敬的慈祥的奶奶,您的勤勞善良將影響我的一生,是您教導我“自成人,方成人”,告誡我要嚴于律己。同時,我要感謝我的父母,你們鬢角的絲絲白發,早已印入我的心中,成為我奮斗不止的動力。
本書參與編寫的人員有:曹桂平、張勇、王麗娜、周毅、林小峰、劉剛、馬海波、李強、吳慧、馬玉剛、馮浩、唐愛琴、李子龍、王明明、蔣志,全書由華清遠見嵌入式培訓中心審校。
鑒于作者能力有限,不可能對VxWorks下各類驅動中的每一個問題都理解到位,如果發現理解或者分析有誤之處,懇請廣大讀者批評、指正,讀者也可通過郵件(郵箱地址為ingdxdy@gmail.com)與作者聯系。
曹桂平