出版時間:2011-9 出版社:清華大學出版社 作者:張光建,劉政 編著 頁數(shù):175
內容概要
本書詳細介紹了計算機的嵌入式linux系統(tǒng)的三類驅動程序開發(fā)方法。全書共分10章。前面4章簡要介紹linux操作系統(tǒng)的操作、嵌入式linux驅動開發(fā)環(huán)境的建立方法以及l(fā)inux驅動程序開發(fā)所需要的內核基礎。第5章和第6章介紹字符驅動程序的設計方法,第7章和第8章介紹塊設備驅動程序的設計方法,第9章和第10章介紹網(wǎng)絡驅動程序的設計方法。每類驅動程序分別從數(shù)據(jù)結構、驅動架構、驅動模塊設計三方面進行了介紹,每類驅動程序都配置了一個模擬驅動小實例,通過這些小實例,可以深入理解各類驅動程序的架構。每類驅動程序還配置了一個真實外部設備的驅動程序開發(fā)實例。
本書實例豐富,通俗易懂,可作為高等學校計算機科學與技術、軟件工程等專業(yè)學生學習嵌入式技術的教材,也可以作為計算機相關專業(yè)學生學習操作系統(tǒng)的提高教材,還可作為工程技術人員設計linux驅動程序的參考書。
書籍目錄
第1章 設備驅動概述
1.1設備驅動程序的作用
1.1.1嵌入式系統(tǒng)的硬件組成
1.1.2嵌入式系統(tǒng)的軟件組成
1.1.3驅動程序的作用
1.2linux設備驅動
1.2.1linux設備驅動程序的分類及特點
1.2.2linux設備驅動程序與整個軟件系統(tǒng)的關系
1.3linux設備驅動程序開發(fā)技術的學習方法
習題1
第2章 linux基本操作
2.1linux常用命令
2.1.1文件及目錄操作命令
2.1.2顯示命令
2.1.3文件壓縮及解壓命令
2.1.4網(wǎng)絡命令
2.1.5改變文件訪問權限的命令
2.1.6幫助命令
2.1.7安裝卸載文件系統(tǒng)命令
2.2linux基本編程
2.2.1emacs編輯器
2.2.2使用gcc編譯程序
2.2.3make命令
2.2.4描述文件
習題2
第3章 嵌入式linux驅動程序開發(fā)環(huán)境的建立
3.1交叉編譯環(huán)境的建立
3.2超級終端的配置
3.3文件共享的配置
3.3.1配置防火墻
3.3.2配置samba使windows與linux共享
3.3.3配置nfs使宿主機linux與目標機linux共享
習題3
第4章 linux設備驅動內核基礎
4.1linux設備的表示
4.2設備文件系統(tǒng)(devfs)
4.3模塊
4.4i/o端口的訪問
4.5中斷管理
4.5.1中斷的注冊
4.5.2中斷的釋放
4.5.3中斷處理例程
4.5.4中斷的禁止和使能
4.6設備驅動程序中的并發(fā)控制
4.6.1信號量的初始化
4.6.2信號量的申請
4.6.3信號量的釋放
4.7內核空間和用戶空間數(shù)據(jù)復制
4.8使用printk()函數(shù)調試設備驅動程序
習題4
第5章 字符設備驅動程序
5.1有關字符設備的數(shù)據(jù)結構
5.1.1file_operations結構
5.1.2file結構
5.1.3chrdevs數(shù)組
5.2字符設備驅動程序的設計
5.2.1字符設備驅動程序的組成
5.2.2file_operations結構體變量
5.2.3字符設備驅動程序的加載及卸載函數(shù)
5.2.4字符設備驅動程序的接口函數(shù)
5.3訪問字符設備的系統(tǒng)調用
5.3.1open()函數(shù)和create()函數(shù)
5.3.2close()函數(shù)
5.3.3read()函數(shù)
5.3.4write()函數(shù)
5.3.5應用舉例
5.4內核訪問字符設備驅動程序的流程
5.4.1open()系統(tǒng)調用的執(zhí)行流程
5.4.2read()和write()系統(tǒng)調用的執(zhí)行流程
5.4.3close()系統(tǒng)調用的執(zhí)行流程
5.5字符設備驅動程序示例: 虛擬字符設備驅動程序
5.5.1虛擬字符設備驅動程序代碼
5.5.2測試程序代碼
5.5.3虛擬字符設備驅動程序的編譯
5.5.4虛擬字符設備驅動程序的測試
習題5
第6章 字符設備驅動程序實例: s3c2410 adc驅動程序
6.1s3c2410x的adc概述
6.1.1s3c2410x adc的轉換頻率及轉換時間
6.1.2s3c2410x與a/d轉換有關的寄存器
6.2s3c2410x的adc驅動程序設計
6.2.1adc驅動程序需要包含的頭文件
6.2.2adc驅動程序的file_operations結構體變量
6.2.3adc驅動程序的加載函數(shù)
6.2.4adc驅動程序的卸載函數(shù)
6.2.5adc驅動程序的接口函數(shù)
6.2.6adc中斷處理函數(shù)
6.3adc驅動程序的編譯及測試
6.3.1測試程序
6.3.2adc驅動程序的編譯
6.3.3adc驅動程序的測試
習題6
第7章 塊設備驅動程序
7.1有關塊設備的數(shù)據(jù)結構
7.1.1block_device_operations結構
7.1.2gendisk結構
7.1.3request_queue結構
7.1.4buffer_head結構
7.1.5request結構
7.2塊設備驅動程序的設計
7.2.1塊設備驅動程序的組成
7.2.2文件包含與宏定義
7.2.3block_device_operations結構體變量
7.2.4塊設備驅動程序的接口函數(shù)
7.2.5塊設備驅動程序的request()函數(shù)
7.2.6塊設備驅動的加載函數(shù)
7.2.7塊設備驅動的卸載函數(shù)
7.3塊設備驅動程序示例: 虛擬塊設備驅動程序
7.3.1虛擬塊設備驅動程序代碼
7.3.2虛擬塊設備驅動程序的編譯
7.3.3虛擬塊設備驅動程序的測試
習題7
第8章 塊設備驅動程序實例: sd卡驅動程序
8.1sd卡功能概述
8.1.1總線協(xié)議
8.1.2sd卡的引腳
8.1.3sd卡的命令
8.1.4sd卡的響應
8.1.5sd卡的寄存器
8.1.6sd卡的狀態(tài)及操作模式
8.2s3c2410x sdi接口概述
8.2.1sdi寄存器
8.2.2sdi的初始化
8.2.3sd卡命令的發(fā)送
8.2.4數(shù)據(jù)的讀寫
8.3基于s3c2410x的sd卡驅動程序設計
8.3.1sd卡驅動程序的加載函數(shù)
8.3.2sd卡驅動程序的卸載函數(shù)
8.3.3sd卡驅動程序的接口函數(shù)
8.3.4sd卡驅動程序的request()函數(shù)
8.4sd卡驅動程序的編譯及測試
8.4.1sd卡驅動程序的編譯
8.4.2sd卡驅動程序的測試
習題8
第9章 網(wǎng)絡設備驅動程序
9.1有關網(wǎng)絡設備的數(shù)據(jù)結構
9.1.1net_device結構體
9.1.2sk_buff結構體
9.2網(wǎng)絡設備驅動程序開發(fā)常用的內核函數(shù)
9.2.1sk_buff結構操作函數(shù)
9.2.2內存申請和釋放函數(shù)
9.2.3網(wǎng)絡驅動程序注冊和解除注冊函數(shù)
9.2.4以太網(wǎng)設備通用初始化函數(shù)
9.2.5發(fā)送隊列的啟動、喚醒及停止函數(shù)
9.2.6查詢網(wǎng)絡設備是否在運行的函數(shù)
9.2.7向上層傳遞數(shù)據(jù)包的函數(shù)
9.3網(wǎng)絡設備驅動程序的設計
9.3.1網(wǎng)絡設備驅動程序的組成
9.3.2網(wǎng)絡設備驅動程序的加載函數(shù)
9.3.3網(wǎng)絡設備驅動程序的卸載函數(shù)
9.3.4網(wǎng)絡設備驅動程序的接口函數(shù)
9.3.5網(wǎng)卡中斷處理程序
9.4網(wǎng)絡設備驅動程序示例: 虛擬網(wǎng)絡設備驅動程序
9.4.1虛擬網(wǎng)絡設備驅動程序代碼
9.4.2虛擬網(wǎng)絡設備驅動程序的編譯
9.4.3虛擬網(wǎng)絡設備驅動程序的測試
習題9
第10章 網(wǎng)絡設備驅動程序實例:ax88796驅動程序
10.1ax88796芯片與cpu的接口
10.1.1ax88796與cpu的接口信號
10.1.2s3c2410 cpu與ax88796接口的信號
10.1.3s3c2410 cpu與網(wǎng)卡芯片接口相關的寄存器
10.1.4up-netarm 2410-s中ax88796與s3c2410 cpu的連接
10.2ax88796 mac核心寄存器
10.2.1mac核心寄存器概述
10.2.2常用的mac核心寄存器
10.3ax88796芯片的緩沖區(qū)操作
10.3.1數(shù)據(jù)包的接收
10.3.2數(shù)據(jù)包的發(fā)送
10.3.3填充數(shù)據(jù)包到發(fā)送緩沖區(qū)以及從接收緩沖區(qū)環(huán)移走數(shù)據(jù)包
10.4ax88796驅動程序設計
10.4.1ax88796.h
10.4.2ax88796驅動程序的加載函數(shù)
10.4.3ax88796驅動程序的卸載函數(shù)
10.4.4ax88796驅動程序的接口函數(shù)
10.4.5ax88796驅動程序的中斷處理程序
10.5ax88796驅動程序的編譯及測試
10.5.1ax88796網(wǎng)絡驅動程序的編譯
10.5.2ax88796驅動程序的測試
習題10
參考文獻
章節(jié)摘錄
版權頁:插圖:任何一個計算機系統(tǒng)的運行都是系統(tǒng)中軟硬件協(xié)作的結果。硬件是底層基礎,是所有軟件得以運行的平臺,代碼最終會落實為硬件上的組合邏輯與時序邏輯;軟件則實現(xiàn)了具體應用,它按照各種不同的業(yè)務需求而設計,滿足了用戶的需求。硬件較固定,軟件則很靈活,可以適應各種復雜多變的應用。為了盡可能快速地完成設計,應用軟件工程師不想也不關心硬件,而硬件工程師也難有足夠的閑暇和能力去顧及軟件。例如,應用軟件工程師在調用套接字發(fā)送和接收數(shù)據(jù)的時候,他不關心網(wǎng)卡上的中斷、寄存器、存儲空間、I/O端口、片選以及其他任何硬件詞匯;在使用printf()函數(shù)輸出信息的時候,他不用知道底層究竟是怎樣把相應的信息輸出到屏幕或串口的。因此,應用軟件工程師需要看到一個沒有硬件的純粹的軟件世界,硬件必須透明地呈現(xiàn)給他們。誰來實現(xiàn)硬件對應用軟件工程師的隱形?這個艱巨的任務就落在了驅動工程師的頭上。對設備驅動最通俗的解釋就是“驅使硬件設備行動”。設備驅動與底層硬件直接打交道,按照硬件設備的具體工作方式讀寫設備寄存器,完成設備的輪詢、中斷處理、DMA通信,進行物理內存向虛擬內存的映射,最終使通信設備能夠收發(fā)數(shù)據(jù),使顯示設備能夠顯示文字和畫面,使存儲設備能夠記錄文件數(shù)據(jù)。設備驅動充當了硬件和應用軟件之間的紐帶,它使得應用軟件只需要調用系統(tǒng)軟件的應用編程接口( API)就可讓硬件去完成要求的工作。在系統(tǒng)中沒有操作系統(tǒng)的情況下,工程師可以根據(jù)硬件設備的特點自行定義接口,如對串口定義SerialSend()、SerialRecv(),對LED定義LightOn()、LightOff(),以及對FLASH定義FlashWrite()、FlashRead()等。而在有操作系統(tǒng)的情況下,設備驅動的架構則由相應的操作系統(tǒng)定義,驅動工程師必須按照相應的架構設計設備驅動,這樣,設備驅動才能良好地整合到操作系統(tǒng)的內核中。驅動程序溝通著硬件和應用軟件,相應地驅動工程師溝通著硬件工程師和應用軟件工程師。隨著通信、電子行業(yè)的發(fā)展,全世界每天都會有大量的新芯片被生產(chǎn),大量的新電路板被設計,因此,也會有大量設備驅動需要開發(fā)。這些設備驅動,或運行在簡單的單任務環(huán)境中,或運行在VxWorks、Linux、Windows等多任務操作系統(tǒng)環(huán)境中,都發(fā)揮著不可替代的作用。
編輯推薦
《嵌入式Linux驅動程序開發(fā)實例教程》是21世紀高等學校嵌入式系統(tǒng)專業(yè)規(guī)劃教材之一。
圖書封面
評論、評分、閱讀與下載
嵌入式Linux驅動程序開發(fā)實例教程 PDF格式下載