嵌入式Linux驅(qū)動程序開發(fā)實(shí)例教程

出版時(shí)間:2011-9  出版社:清華大學(xué)出版社  作者:張光建,劉政 編著  頁數(shù):175  

內(nèi)容概要

  本書詳細(xì)介紹了計(jì)算機(jī)的嵌入式linux系統(tǒng)的三類驅(qū)動程序開發(fā)方法。全書共分10章。前面4章簡要介紹linux操作系統(tǒng)的操作、嵌入式linux驅(qū)動開發(fā)環(huán)境的建立方法以及l(fā)inux驅(qū)動程序開發(fā)所需要的內(nèi)核基礎(chǔ)。第5章和第6章介紹字符驅(qū)動程序的設(shè)計(jì)方法,第7章和第8章介紹塊設(shè)備驅(qū)動程序的設(shè)計(jì)方法,第9章和第10章介紹網(wǎng)絡(luò)驅(qū)動程序的設(shè)計(jì)方法。每類驅(qū)動程序分別從數(shù)據(jù)結(jié)構(gòu)、驅(qū)動架構(gòu)、驅(qū)動模塊設(shè)計(jì)三方面進(jìn)行了介紹,每類驅(qū)動程序都配置了一個模擬驅(qū)動小實(shí)例,通過這些小實(shí)例,可以深入理解各類驅(qū)動程序的架構(gòu)。每類驅(qū)動程序還配置了一個真實(shí)外部設(shè)備的驅(qū)動程序開發(fā)實(shí)例。
  本書實(shí)例豐富,通俗易懂,可作為高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程等專業(yè)學(xué)生學(xué)習(xí)嵌入式技術(shù)的教材,也可以作為計(jì)算機(jī)相關(guān)專業(yè)學(xué)生學(xué)習(xí)操作系統(tǒng)的提高教材,還可作為工程技術(shù)人員設(shè)計(jì)linux驅(qū)動程序的參考書。

書籍目錄

第1章 設(shè)備驅(qū)動概述
 1.1設(shè)備驅(qū)動程序的作用
  1.1.1嵌入式系統(tǒng)的硬件組成
  1.1.2嵌入式系統(tǒng)的軟件組成
  1.1.3驅(qū)動程序的作用
 1.2linux設(shè)備驅(qū)動
  1.2.1linux設(shè)備驅(qū)動程序的分類及特點(diǎn)
  1.2.2linux設(shè)備驅(qū)動程序與整個軟件系統(tǒng)的關(guān)系
 1.3linux設(shè)備驅(qū)動程序開發(fā)技術(shù)的學(xué)習(xí)方法
  習(xí)題1
第2章 linux基本操作
 2.1linux常用命令
  2.1.1文件及目錄操作命令
  2.1.2顯示命令
  2.1.3文件壓縮及解壓命令
  2.1.4網(wǎng)絡(luò)命令
  2.1.5改變文件訪問權(quán)限的命令
  2.1.6幫助命令
  2.1.7安裝卸載文件系統(tǒng)命令
  2.2linux基本編程
 2.2.1emacs編輯器
  2.2.2使用gcc編譯程序
  2.2.3make命令
  2.2.4描述文件
  習(xí)題2
第3章 嵌入式linux驅(qū)動程序開發(fā)環(huán)境的建立
 3.1交叉編譯環(huán)境的建立
 3.2超級終端的配置
 3.3文件共享的配置
  3.3.1配置防火墻
  3.3.2配置samba使windows與linux共享
  3.3.3配置nfs使宿主機(jī)linux與目標(biāo)機(jī)linux共享
  習(xí)題3
第4章 linux設(shè)備驅(qū)動內(nèi)核基礎(chǔ)
 4.1linux設(shè)備的表示
 4.2設(shè)備文件系統(tǒng)(devfs)
 4.3模塊
 4.4i/o端口的訪問
 4.5中斷管理
  4.5.1中斷的注冊
  4.5.2中斷的釋放
  4.5.3中斷處理例程
  4.5.4中斷的禁止和使能
 4.6設(shè)備驅(qū)動程序中的并發(fā)控制
  4.6.1信號量的初始化
  4.6.2信號量的申請
  4.6.3信號量的釋放
 4.7內(nèi)核空間和用戶空間數(shù)據(jù)復(fù)制
 4.8使用printk()函數(shù)調(diào)試設(shè)備驅(qū)動程序
  習(xí)題4
第5章 字符設(shè)備驅(qū)動程序
 5.1有關(guān)字符設(shè)備的數(shù)據(jù)結(jié)構(gòu)
  5.1.1file_operations結(jié)構(gòu)
  5.1.2file結(jié)構(gòu)
  5.1.3chrdevs數(shù)組
 5.2字符設(shè)備驅(qū)動程序的設(shè)計(jì)
  5.2.1字符設(shè)備驅(qū)動程序的組成
  5.2.2file_operations結(jié)構(gòu)體變量
  5.2.3字符設(shè)備驅(qū)動程序的加載及卸載函數(shù)
  5.2.4字符設(shè)備驅(qū)動程序的接口函數(shù)
 5.3訪問字符設(shè)備的系統(tǒng)調(diào)用
  5.3.1open()函數(shù)和create()函數(shù)
  5.3.2close()函數(shù)
  5.3.3read()函數(shù)
  5.3.4write()函數(shù)
  5.3.5應(yīng)用舉例
 5.4內(nèi)核訪問字符設(shè)備驅(qū)動程序的流程
  5.4.1open()系統(tǒng)調(diào)用的執(zhí)行流程
  5.4.2read()和write()系統(tǒng)調(diào)用的執(zhí)行流程
  5.4.3close()系統(tǒng)調(diào)用的執(zhí)行流程
 5.5字符設(shè)備驅(qū)動程序示例: 虛擬字符設(shè)備驅(qū)動程序
  5.5.1虛擬字符設(shè)備驅(qū)動程序代碼
  5.5.2測試程序代碼
  5.5.3虛擬字符設(shè)備驅(qū)動程序的編譯
  5.5.4虛擬字符設(shè)備驅(qū)動程序的測試
  習(xí)題5
第6章 字符設(shè)備驅(qū)動程序?qū)嵗?s3c2410 adc驅(qū)動程序
 6.1s3c2410x的adc概述
  6.1.1s3c2410x adc的轉(zhuǎn)換頻率及轉(zhuǎn)換時(shí)間
  6.1.2s3c2410x與a/d轉(zhuǎn)換有關(guān)的寄存器
 6.2s3c2410x的adc驅(qū)動程序設(shè)計(jì)
  6.2.1adc驅(qū)動程序需要包含的頭文件
  6.2.2adc驅(qū)動程序的file_operations結(jié)構(gòu)體變量
  6.2.3adc驅(qū)動程序的加載函數(shù)
  6.2.4adc驅(qū)動程序的卸載函數(shù)
  6.2.5adc驅(qū)動程序的接口函數(shù)
  6.2.6adc中斷處理函數(shù)
 6.3adc驅(qū)動程序的編譯及測試
  6.3.1測試程序
  6.3.2adc驅(qū)動程序的編譯
  6.3.3adc驅(qū)動程序的測試
  習(xí)題6
第7章 塊設(shè)備驅(qū)動程序
 7.1有關(guān)塊設(shè)備的數(shù)據(jù)結(jié)構(gòu)
  7.1.1block_device_operations結(jié)構(gòu)
  7.1.2gendisk結(jié)構(gòu)
  7.1.3request_queue結(jié)構(gòu)
  7.1.4buffer_head結(jié)構(gòu)
  7.1.5request結(jié)構(gòu)
 7.2塊設(shè)備驅(qū)動程序的設(shè)計(jì)
  7.2.1塊設(shè)備驅(qū)動程序的組成
  7.2.2文件包含與宏定義
  7.2.3block_device_operations結(jié)構(gòu)體變量
  7.2.4塊設(shè)備驅(qū)動程序的接口函數(shù)
  7.2.5塊設(shè)備驅(qū)動程序的request()函數(shù)
  7.2.6塊設(shè)備驅(qū)動的加載函數(shù)
  7.2.7塊設(shè)備驅(qū)動的卸載函數(shù)
 7.3塊設(shè)備驅(qū)動程序示例: 虛擬塊設(shè)備驅(qū)動程序
  7.3.1虛擬塊設(shè)備驅(qū)動程序代碼
  7.3.2虛擬塊設(shè)備驅(qū)動程序的編譯
  7.3.3虛擬塊設(shè)備驅(qū)動程序的測試
  習(xí)題7
第8章 塊設(shè)備驅(qū)動程序?qū)嵗?sd卡驅(qū)動程序
 8.1sd卡功能概述
  8.1.1總線協(xié)議
  8.1.2sd卡的引腳
  8.1.3sd卡的命令
  8.1.4sd卡的響應(yīng)
  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卡驅(qū)動程序設(shè)計(jì)
  8.3.1sd卡驅(qū)動程序的加載函數(shù)
  8.3.2sd卡驅(qū)動程序的卸載函數(shù)
  8.3.3sd卡驅(qū)動程序的接口函數(shù)
  8.3.4sd卡驅(qū)動程序的request()函數(shù)
  8.4sd卡驅(qū)動程序的編譯及測試
  8.4.1sd卡驅(qū)動程序的編譯
  8.4.2sd卡驅(qū)動程序的測試
  習(xí)題8
第9章 網(wǎng)絡(luò)設(shè)備驅(qū)動程序
 9.1有關(guān)網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)結(jié)構(gòu)
  9.1.1net_device結(jié)構(gòu)體
  9.1.2sk_buff結(jié)構(gòu)體
 9.2網(wǎng)絡(luò)設(shè)備驅(qū)動程序開發(fā)常用的內(nèi)核函數(shù)
  9.2.1sk_buff結(jié)構(gòu)操作函數(shù)
  9.2.2內(nèi)存申請和釋放函數(shù)
  9.2.3網(wǎng)絡(luò)驅(qū)動程序注冊和解除注冊函數(shù)
  9.2.4以太網(wǎng)設(shè)備通用初始化函數(shù)
  9.2.5發(fā)送隊(duì)列的啟動、喚醒及停止函數(shù)
  9.2.6查詢網(wǎng)絡(luò)設(shè)備是否在運(yùn)行的函數(shù)
  9.2.7向上層傳遞數(shù)據(jù)包的函數(shù)
 9.3網(wǎng)絡(luò)設(shè)備驅(qū)動程序的設(shè)計(jì)
  9.3.1網(wǎng)絡(luò)設(shè)備驅(qū)動程序的組成
  9.3.2網(wǎng)絡(luò)設(shè)備驅(qū)動程序的加載函數(shù)
  9.3.3網(wǎng)絡(luò)設(shè)備驅(qū)動程序的卸載函數(shù)
  9.3.4網(wǎng)絡(luò)設(shè)備驅(qū)動程序的接口函數(shù)
  9.3.5網(wǎng)卡中斷處理程序
 9.4網(wǎng)絡(luò)設(shè)備驅(qū)動程序示例: 虛擬網(wǎng)絡(luò)設(shè)備驅(qū)動程序
  9.4.1虛擬網(wǎng)絡(luò)設(shè)備驅(qū)動程序代碼
  9.4.2虛擬網(wǎng)絡(luò)設(shè)備驅(qū)動程序的編譯
  9.4.3虛擬網(wǎng)絡(luò)設(shè)備驅(qū)動程序的測試
  習(xí)題9
第10章 網(wǎng)絡(luò)設(shè)備驅(qū)動程序?qū)嵗篴x88796驅(qū)動程序
 10.1ax88796芯片與cpu的接口
  10.1.1ax88796與cpu的接口信號
  10.1.2s3c2410 cpu與ax88796接口的信號
  10.1.3s3c2410 cpu與網(wǎng)卡芯片接口相關(guān)的寄存器
  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驅(qū)動程序設(shè)計(jì)
  10.4.1ax88796.h
  10.4.2ax88796驅(qū)動程序的加載函數(shù)
  10.4.3ax88796驅(qū)動程序的卸載函數(shù)
  10.4.4ax88796驅(qū)動程序的接口函數(shù)
  10.4.5ax88796驅(qū)動程序的中斷處理程序
 10.5ax88796驅(qū)動程序的編譯及測試
  10.5.1ax88796網(wǎng)絡(luò)驅(qū)動程序的編譯
  10.5.2ax88796驅(qū)動程序的測試
  習(xí)題10
參考文獻(xiàn)

章節(jié)摘錄

版權(quán)頁:插圖:任何一個計(jì)算機(jī)系統(tǒng)的運(yùn)行都是系統(tǒng)中軟硬件協(xié)作的結(jié)果。硬件是底層基礎(chǔ),是所有軟件得以運(yùn)行的平臺,代碼最終會落實(shí)為硬件上的組合邏輯與時(shí)序邏輯;軟件則實(shí)現(xiàn)了具體應(yīng)用,它按照各種不同的業(yè)務(wù)需求而設(shè)計(jì),滿足了用戶的需求。硬件較固定,軟件則很靈活,可以適應(yīng)各種復(fù)雜多變的應(yīng)用。為了盡可能快速地完成設(shè)計(jì),應(yīng)用軟件工程師不想也不關(guān)心硬件,而硬件工程師也難有足夠的閑暇和能力去顧及軟件。例如,應(yīng)用軟件工程師在調(diào)用套接字發(fā)送和接收數(shù)據(jù)的時(shí)候,他不關(guān)心網(wǎng)卡上的中斷、寄存器、存儲空間、I/O端口、片選以及其他任何硬件詞匯;在使用printf()函數(shù)輸出信息的時(shí)候,他不用知道底層究竟是怎樣把相應(yīng)的信息輸出到屏幕或串口的。因此,應(yīng)用軟件工程師需要看到一個沒有硬件的純粹的軟件世界,硬件必須透明地呈現(xiàn)給他們。誰來實(shí)現(xiàn)硬件對應(yīng)用軟件工程師的隱形?這個艱巨的任務(wù)就落在了驅(qū)動工程師的頭上。對設(shè)備驅(qū)動最通俗的解釋就是“驅(qū)使硬件設(shè)備行動”。設(shè)備驅(qū)動與底層硬件直接打交道,按照硬件設(shè)備的具體工作方式讀寫設(shè)備寄存器,完成設(shè)備的輪詢、中斷處理、DMA通信,進(jìn)行物理內(nèi)存向虛擬內(nèi)存的映射,最終使通信設(shè)備能夠收發(fā)數(shù)據(jù),使顯示設(shè)備能夠顯示文字和畫面,使存儲設(shè)備能夠記錄文件數(shù)據(jù)。設(shè)備驅(qū)動充當(dāng)了硬件和應(yīng)用軟件之間的紐帶,它使得應(yīng)用軟件只需要調(diào)用系統(tǒng)軟件的應(yīng)用編程接口( API)就可讓硬件去完成要求的工作。在系統(tǒng)中沒有操作系統(tǒng)的情況下,工程師可以根據(jù)硬件設(shè)備的特點(diǎn)自行定義接口,如對串口定義SerialSend()、SerialRecv(),對LED定義LightOn()、LightOff(),以及對FLASH定義FlashWrite()、FlashRead()等。而在有操作系統(tǒng)的情況下,設(shè)備驅(qū)動的架構(gòu)則由相應(yīng)的操作系統(tǒng)定義,驅(qū)動工程師必須按照相應(yīng)的架構(gòu)設(shè)計(jì)設(shè)備驅(qū)動,這樣,設(shè)備驅(qū)動才能良好地整合到操作系統(tǒng)的內(nèi)核中。驅(qū)動程序溝通著硬件和應(yīng)用軟件,相應(yīng)地驅(qū)動工程師溝通著硬件工程師和應(yīng)用軟件工程師。隨著通信、電子行業(yè)的發(fā)展,全世界每天都會有大量的新芯片被生產(chǎn),大量的新電路板被設(shè)計(jì),因此,也會有大量設(shè)備驅(qū)動需要開發(fā)。這些設(shè)備驅(qū)動,或運(yùn)行在簡單的單任務(wù)環(huán)境中,或運(yùn)行在VxWorks、Linux、Windows等多任務(wù)操作系統(tǒng)環(huán)境中,都發(fā)揮著不可替代的作用。

編輯推薦

《嵌入式Linux驅(qū)動程序開發(fā)實(shí)例教程》是21世紀(jì)高等學(xué)校嵌入式系統(tǒng)專業(yè)規(guī)劃教材之一。

圖書封面

評論、評分、閱讀與下載


    嵌入式Linux驅(qū)動程序開發(fā)實(shí)例教程 PDF格式下載


用戶評論 (總計(jì)7條)

 
 

  •   有實(shí)例,感覺不錯。
  •   真的很鼓勵這本書!
  •   不錯的書,實(shí)例豐富,也較詳細(xì)
  •   書不錯,講的也挺清晰的
  •   內(nèi)容簡單,實(shí)踐性不強(qiáng)
  •   看偏移買的,對付考試夠了。
  •   不過最好還是選對平臺,如果平臺不對,移植起來很麻煩的
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7