· 多年嵌入式人才培養及項目研發經驗總結
· 數百家企業嵌入式研發崗位人才需求匯總
· 數十所嵌入式專業大學院校教學現狀調研
· 側重實踐及案例分析并輔以代碼加以講解
shell是用戶與內核進行交互操作的一種接口,是linux最重要的軟件之一。目前最流行的shell稱為bash shell,bash shell腳本編程以其簡潔、高效而著稱,多年來成為linux程序本書結合作者實際的開發經驗,對vxworks操作系統內部的機制及其各類設備驅動的開發進行了深入的講解和分析。全書分3篇共11章,第1篇對vxworks操作系統的主要組件如任務、任務調度、任務間通信、內存管理、中斷處理進行了較為細致的分析;其后對很多vxworks開發者不甚了解的vxworks內核映像類型以及啟動方式和流程進行了詳細的說明和解析。第2篇是驅動開發的準備階段,著重介紹了vxworks系統下設備驅動的內核層次結構。第3篇作為本書的重點,每章對應一類驅動,結合開發實例,詳細而完整地分析了vxworks下普通字符設備驅動、串口驅動、普通塊設備驅動、flash設備驅動、網絡設備驅動以及usb設備驅動的設計和實現。
《vxworks設備驅動開發詳解》面向廣大工程技術工作者,既可作為高等院校教師和相關專業學生的教材,又可作為各類培訓班的培訓教程。
《Vxworks設備驅動開發詳解》章節:
第1篇 vxworks操作系統快速入門篇
第1章 vxworks嵌入式操作
系統的特點與應用
1.1 嵌入式系統概述
1.1.1 嵌入式系統定義
1.1.2 嵌入式系統組成和特點
1.1.3 嵌入式系統發展趨勢
1.1.4 實時操作系統
1.實時操作系統定義
2.實時操作系統的特征
3.實時操作系統的相關概念
1.2 vxworks操作系統基本特點
1.2.1 操作系統內核結構——微內核和宏內核
1.宏內核
2.微內核
1.2.2 vxworks內核——高性能的微內核設計
1.2.3 vxworks開發支持——可裁減的運行軟件
1.2.4 vxworks網絡支持——綜合的網絡工具
1.2.5 vxworks移植性支持
1.兼容posix 1003.1b標準
2.平臺的選擇
3.方便移植到用戶硬件上
1.2.6 vxworks操作系統選件
1.3 vxworks操作系統應用范圍
1.4 本章小結
第2章 vxworks操作系統的基本組件
2.1 vxworks任務
2.1.1 內核實現基本原理
2.1.2 任務操作函數
2.1.3 深入了解任務棧
2.1.4 任務名長度問題
2.1.5 正確結束任務
2.1.6 任務的鉤子函數——黑客機制
2.1.7 任務小結
2.2 vxworks任務調度算法——基于優先級的搶占式調度
2.3 vxworks任務間通信策略
2.3.1 信號量
2.3.2 消息隊列
2.3.3 管道
2.3.4 網絡套接字socket
2.3.5 任務間通信的特殊機制:信號
2.4 vxworks內存管理——虛擬地址空間支持
2.5 vxworks中斷處理——多層次的中斷轉移
2.5.1 vxworks下中斷轉移過程詳解(基于arm平臺)
2.5.2 中斷上下文中為何不可調用可引起睡眠的函數
2.6 本章小結
第3章 vxworks操作系統啟動過程詳解
3.1 vxworks操作系統啟動
3.1.1 vxworks基本啟動方式
3.1.2 vxworks操作系統內存布局
1.非壓縮形式
2.壓縮形式
3.1.3 下載型啟動方式概述
3.1.4 rom型啟動方式概述
3.2 深入理解bootrom——下載啟動方式下的“瑞士軍刀”
3.2.1 bootrom的構成
3.2.2 bootrom腳本的創建
3.2.3 腳本運行過程分析
3.2.4 bootrom的重定位
3.2.5 ram中運行的bootrom代碼
1.usrinit函數
2.usrroot函數
3.bootcmdloop函數
3.2.6 在bootrom中添加用戶代碼
3.2.7 其他注意事項及說明
3.3 深入vxworks啟動過程
3.3.1 rom型映像早期啟動流程詳解
1.rominit函數
2.romstart函數
3.3.2 下載型映像早期啟動流程詳解
3.3.3 公共啟動流程詳解
1.usrinit函數分析
2.usrroot函數分析
3.啟動用戶代碼
3.4 vxworks bsp文件組成
3.4.1 源文件
3.4.2 頭文件
3.4.3 makefile文件
3.4.4 擴展文件
3.4.5 說明文件
3.5 本章小結
第2篇 vxworks設備驅動起步篇
第4章 設備驅動
4.1 設備驅動的功能
4.2 設備驅動的結構
4.3 設備驅動的基本特點
4.3.1 驅動代碼執行環境——任務和中斷上下文
4.3.2 設備基本分類
4.3.3 驅動代碼安全性——參數合法性檢查
4.3.4 驅動基本工作模式——輪詢和中斷
4.3.5 驅動與硬件數據的交互方式——dma和直接復制
4.3.6 其他注意事項——volatile關鍵字
4.4 本章小結
第5章 vxworks下設備驅動的內核結構層次
5.1 認識vxworks設備驅動內核基本層次
1.usb設備驅動內核層次
2.塊設備驅動內核層次
3.字符設備驅動內核層次
4.網絡設備驅動內核層次
5.2 vxworks內核驅動基本結構——內核三張表
5.2.1 系統設備表
5.2.2 系統驅動表
5.2.3 系統文件描述符表
5.2.4 內核三張表之間的聯系
5.3 vxworks內核驅動支持——“免費的午餐”
5.3.1 管道虛擬設備驅動支持
5.3.2 虛擬內存設備驅動支持
1.虛擬內存設備創建函數
2.虛擬內存設備使用實例
5.3.3 ramdisk設備驅動支持
5.3.4 網絡設備(netdrv)高層次驅動支持
1.netdrv驅動基本工作原理
2.網絡設備節點的創建
3.netdrv驅動中關鍵參數的獲取
5.4 vxworks文件系統支持
5.4.1 虛擬根文件系統vrfs
5.4.2 事務型文件系統hrfs
5.4.3 ms-dos兼容型文件系統dosfs
5.4.4 原始文件系統rawfs
5.4.5 cd-rom文件系統cdromfs
5.4.6 只讀文件系統romfs
5.4.7 目標機文件系統tsfs
5.5 添加驅動到vxworks內核
1.將驅動代碼編入內核映像
2.注冊驅動和創建設備
5.6 本章小結
第3篇 vxworks之六大核心設備驅動
第6章 vxworks設備驅動之字符設備驅動詳解
6.1 用戶請求到字符設備驅動服務函數的傳遞
6.2 實例入門:基于spi接口的串口擴展芯片vk3224驅動實現
6.3 認識vxworks字符設備驅動基本數據結構——dev_hdr結構
6.4 注冊字符設備驅動和創建字符設備節點
6.5 編寫字符設備驅動底層服務函數
6.5.1 編寫字符設備打開函數
6.5.2 編寫字符設備讀寫函數
6.5.3 編寫字符設備控制函數
6.5.4 編寫字符設備關閉函數
6.5.5 設備驅動工作模式的選擇
6.5.6 編寫字符設備刪除函數
6.6 刪除字符設備節點和卸載字符設備驅動
6.6.1 刪除字符設備節點
6.6.2 卸載字符設備驅動
6.7 本章小結
第7章 vxworks設備驅動之串口驅動詳解
7.1 認識vxworks內核tty
中間層——串口驅動的基石
7.1.1 tty中間層應具備的功能
7.1.2 基于tty的串口驅動實現思想
7.1.3 tty中間層與底層串口驅動的關系
7.2 vxworks內核tty中間層初始化詳解
7.2.1 ttydrv函數
7.2.2 ttydevcreate函數
7.2.3 sysserialhwinit和sysserialhwinit2函數
7.2.4 tty中間層初始化過程小結及注意事項
7.3 認識vxworks下串口驅動基本數據結構——sio_chan結構
7.3.1 內核sio_chan結構定義
7.3.2 封裝sio_chan結構
7.4 vxworks串口驅動文件基本構成
7.5 vxworks串口驅動內核接口
文件sysserial.c的實現
1.sysserial.c模板文件
2.模板文件函數功能說明
3.sysserial.c文件功能小結
7.6 編寫vxworks串口驅動底層服務函數
7.6.1 編寫串口驅動初始化函數
7.6.2 編寫串口驅動回調函數——arm926uartcallback- install
7.6.3 編寫串口驅動控制函數——arm926uartioctl
7.6.4 編寫串口驅動中斷處理函數——arm926uartint
7.6.5 編寫串口驅動啟動發送函數——arm926uart- txstartup
7.6.6 編寫串口驅動輪詢工作模式支持函數
1.編寫發送函數arm926uartpolloutput
2.編寫接收函數arm926uartpollinput
7.7 再議vxworks內核tty中間層
7.8 本章小結
第8章 vxworks設備驅動之塊設備驅動詳解
8.1 認識vxworks塊設備驅動內核基本層次
8.2 vxworks塊設備驅動基石——內核文件系統支持
8.2.1 rawfs文件系統詳解
1.rawfs文件系統初始化第一步:rawfsinit函數
2.rawfs文件系統初始化第二步:rawfsdevinit函數
3.rawfs文件系統使用示例
4.cbio中間層淺析
8.2.2 dosfs文件系統詳解
1.dosfs初始化基本流程
2.初始化第一步:dosfslibinit函數
3.初始化第二步:dosfsdevcreate函數
4.dosfs文件系統格式化
5.dosfs文件系統初始化小結
8.3 認識vxworks塊設備驅動基本數據結構——blk_dev結構
8.3.1 內核blk_dev結構定義
8.3.2 封裝blk_dev結構
8.4 vxworks塊設備驅動基本架構
8.4.1 塊設備驅動工作的特點
8.4.2 基于cbio中間層的塊設備驅動內核層次
8.4.3 塊設備驅動底層函數組成
8.5 編寫vxworks塊設備驅動底層服務函數
8.5.1 認識ata(ide)硬盤結構
8.5.2 認識硬盤分區
8.5.3 認識cbio分區管理層
8.5.4 編寫塊設備驅動初始化函數
8.5.5 編寫塊設備驅動讀設備函數atablkrd
8.5.6 編寫塊設備驅動寫設備函數atablkwrt
8.5.7 編寫塊設備驅動設備控制函數ataioctl
8.5.8 編寫塊設備驅動設備狀態查詢函數atastatus
8.5.9 編寫塊設備驅動設備復位函數atareset
8.6 本章小結
第9章 vxworks設備驅動之flash設備驅動詳解
9.1 認識flash設備
9.1.1 概述
9.1.2 flash設備硬件接口的差別
9.1.3 flash設備容量和成本
9.1.4 flash設備可靠性和耐用性
9.1.5 flash設備易用性
9.1.6 flash設備軟件支持
9.2 深入nand flash設備
9.3 深入nor flash設備
9.3.1 nor flash存儲器特點
9.3.2 nor flash命令集bcs / scs
9.3.3 nor flash接口訪問標準
9.4 認識flash設備地址問題——驅動“陷阱”
9.5 vxworks下flash設備驅動內核層次詳解——認識trueffs中間層
9.6 vxworks內核trueffs中間層初始化詳解
9.7 創建和使用flash設備
9.8 認識vxworks下flash設備驅動基本架構
9.9 編寫vxworks下flash設備驅動socket層服務函數
9.9.1 socket驅動層文件構成
9.9.2 socket驅動層實現示例
9.9.3 socket層實現小結
9.10 編寫vxworks下flash設備驅動mtd層服務函數
9.10.1 tffsconfig.c文件——flash設備驅動初始化入口
9.10.2 tffsmtd.c文件——flash設備驅動mtd層服務函數所在地
9.10.2.1 編寫flash設備識別函數
9.10.2.2 編寫flash設備讀函數
9.10.2.3 編寫flash設備寫函數
9.10.2.4 編寫flash設備塊擦除函數
9.10.2.5 編寫flash設備地址映射函數
9.11 本章小結
第10章 vxworks設備驅動之網絡設備驅動詳解
10.1 vxworks下網絡設備驅動內核基本層次——認識mux接口層
10.1.1 網絡設備驅動的基本特點
10.1.2 網絡設備驅動內核層次
10.1.3 認識mux中間層
10.2 認識vxworks網絡設備驅動基本數據結構——end_obj結構
10.3 實例介紹:基于tms320d-m6446平臺的emac網口驅動
10.4 定義vxworks網絡設備驅動自定義結構——“信息集中地”
10.5 vxworks網絡設備驅動加載與啟動
10.5.1 網絡設備驅動初始化基本流程
10.5.2 修改confignet.h文件
10.5.3 網絡設備驅動加載函數armload的實現
10.5.4 網絡設備驅動啟動函數armstart的實現
10.6 vxworks網絡設備驅動數據幀后臺處理支持:netjobadd
10.7 編寫vxworks網絡設備驅動數據幀接收函數
10.7.1 編寫數據幀接收“下半部分”入口函數
10.7.2 vxworks內核網絡棧對數據幀的封裝要求
10.7.3 網絡數據幀處理和上傳
10.7.4 再議網絡數據幀的接收
10.8 編寫vxworks網絡設備驅動數據幀發送函數
10.9 編寫vxworks網絡設備控制函數
10.10 編寫vxworks網絡設備驅動查詢模式支持函數
1.armpollsend函數的實現
2.armpollrcv函數的實現
10.11 編寫vxworks網絡設備停止和卸載函數
1.armstop函數的實現
2.armunload函數的實現
10.12 認識vxworks網絡設備驅動內核支持函數
10.13 vxworks網絡設備驅動實現小結
10.14 認識網絡設備ip地址和mac地址
10.15 vxworks網絡設備驅動對多網口的支持
10.15.1 修改底層驅動
10.15.2 修改confignet.h文件
10.15.3 修改usrnetinit函數
10.16 本章小結
第11章 vxworks設備驅動之usb設備驅動詳解
11.1 usb詳解
11.1.1 usb的定義
11.1.2 認識usb描述符及其相互關系
1.驅動描述符(device descriptor)
2.配置描述符(configuration descriptor)
3.接口描述符(interface descriptor)
4.端點描述符(endpoint descriptor)
11.1.3 usb控制器基本分類
11.1.4 認識usb硬件接口
11.2 認識vxworks下usb設備驅動內核層次和驅動對象
11.3 示例介紹:uhci usb主機控制器基本工作原理
11.3.1 uhci規范
11.3.2 uhci基本工作原理和數據結構
11.3.3 uhci控制器驅動原理概述
11.4 vxworks下usb設備操作請求內核傳遞過程詳解
11.4.1 第一層入口函數:usbbulkdevblkrd
11.4.2 第二層入口函數:usbbulkcmdexecute
11.4.3 第三層入口函數:usbdtransfer
11.4.4 第四層入口函數:urbexecblock
11.4.5 第五層入口函數:usbdcoreentry
11.4.6 第六層入口函數:fnctransfer
11.4.7 第七層入口函數:usbhcdirpsubmit
11.4.8 第八層入口函數:底層hcd總入口函數
11.4.9 vxworks下usb設備操作請求內核傳遞過程總結
11.5 vxworks下usb設備應用層類驅動初始化詳解
11.6 vxworks下usb控制器驅動初始化詳解
11.7 vxworks下usb控制器驅動架構
11.8 編寫vxworks下usb控制器驅動底層服務函數
11.8.1 編寫usb操作請求總入口函數
11.8.2 編寫usb控制器驅動中斷處理函數
11.8.3 編寫usb控制器驅動具體服務函數
11.9 本章小結
參考文獻