導航:首頁 > 操作系統 > 嵌入式linux驅動詳解

嵌入式linux驅動詳解

發布時間:2022-12-27 23:21:36

『壹』 《linux設備驅動開發詳解基於最新的Linux4.0內核》pdf下載在線閱讀,求百度網盤雲資源

《Linux設備驅動開發詳解》(宋寶華)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:https://pan..com/s/1ddjTHycqTk3yYQDr-raoKw

提取碼:evup

書名:Linux設備驅動開發詳解

作者:宋寶華

豆瓣評分:6.5

出版社:機械工業出版社

出版年份:2015-8

頁數:618

內容簡介:

對於嵌入式工程師來說,進入更高階段後,學習Linux設備驅動開發無疑就是職業生涯的一次「重生」。這是因為Linux設備驅動開發不僅僅涉及操作系統的轉換,開發方式的轉換,更重要的是思維上的轉變。對於Linux這樣一個復雜系統,如何從復雜的代碼中抓住設備驅動開發的關鍵是任何一個Linux設備驅動開發者入門時需要面對的挑戰。除了知識、工具之外,往往還需要思路上的指導。本書不但幫助Linux設備驅動開發的初學者釐清必要的概念,還從具體的實例、設備驅動開發的指導原則循序漸進地引導讀者漸入學習佳境。為了讓讀者能夠達到Linux設備驅動開發的至臻境界,作者更是從軟體工程的角度抽象出設備驅動開發的一般思想。毫無疑問,本書將成為讀者學習Linux設備驅動開發過程中的一座「燈塔」。

作者簡介:

宋寶華,

Linux佈道者,知名嵌入式系統專家,《Essential Linux Device Drivers》譯者。作為最早從事Linux內核與設備驅動研究的專家之一,他在眾多國內外知名企業開展Linux技術培訓。他也是一位活躍的Linux開發者和深度實踐者,為Linux官方內核貢獻了大量的Linux源碼並承擔代碼審核工作。至今已向Linux官方內核提交逾數萬行代碼和幾百個補丁。他的《Linux設備驅動開發詳解》系列書在嵌入式Linux開發者中有口皆碑,是眾多Linux書籍中為數不多的暢銷書。

『貳』 嵌入式Linux設備驅動開發詳解的介紹

《嵌入式Linux設備驅動開發詳》是人民郵電出版社2008年出版的圖書,作者李俊。該書詳細講解了嵌入式Linux的各種設備驅動。

『叄』 嵌入式Linux設備驅動開發

設備驅動程序:是計算機 硬體與應用程序 的 介面 ,是計算機系統 軟體與硬體 的 橋梁 ,是一種可以與設備進行通信的 特殊程序 。

Linux上程序開發一般分為兩種:

Linux兩種狀態:

內核態有較高的許可權,可以控制處理器內存的映射和分配方式,訪問外設空間和處理器狀態寄器,控制終端等。用戶態只能運行系統上的應用程序。

驅動程序 與底層的硬體交互,所以 工作在內核態 。

完成4個工作:

模塊方式(動態載入)

直接編譯進內核

『肆』 嵌入式linux 驅動設備識別過程

驅動程序識別設備時,有以下兩種方法:
(1)驅動程序本身帶有設備的信息,比如開始地址、中斷號等:載入驅動程序時,就可以根據這些信息來識別設備。
(2)驅動程序本身沒有設備的信息,但是內核中已經(或以後)根據其他方式確定了很多設備的信息;載入驅動程序時,將驅動程序與這些設備逐個比較,確定兩者是否匹配(match)。如果驅動程序與某個設備匹配,就可以通過該驅動程序操作這個設備了。內核常使用第二種方法來識別設備,這可以將各種設備集中在-一個文件中管理,當開發板的配置改變時,便於修改代碼。在內核文件includePnuxÔatform _device.h 中,定義了兩個數據結構來表示這些設備和驅動程序: platform_ device 結構用來描述設備的名稱、ID、所佔用的資源(比如內存地址/大小、中斷號)等; platform_ driver 結構用來描述各種操作函數, 比如枚舉函數、移除設備函數、驅動的名稱等。內核啟動後,首先構造鏈表將描述設備的platform_device結構組織起來,得到一一個設備的列表:當載入某個驅動程序的platform_ driver 結構時,使用一.些匹配函數來檢查驅動程序能否支持這些設備,常用的檢查方法很簡單:比較驅動程序和設備的名稱。

『伍』 嵌入式開發(七):linux字元型設備驅動初步

姓名:王芷若    學號:19020100180

學院:電子工程學院

【嵌牛導讀】:本篇文章整理Linux知識點—Linux字元型設備驅動初步。

【嵌牛鼻子】:Linux設備類型,結構體,驅動模塊

【嵌牛提問】:Linux設備有什麼類型?關鍵函數有哪些?

【嵌牛內容】–linux字元型設備驅動初步

一、Linux字元設備驅動初步

1、Linux設備類型

(1)字元設備:只能一個位元組一個位元組的讀寫的設備,不能隨機讀取設備內存中的某一數據,讀取數據需要按照先後順序進行。字元設備是面向流的設備,常見的字元設備如滑鼠、鍵盤、串口、控制台、LED等。

(2)塊設備:是指可以從設備的任意位置讀取一定長度的數據設備。塊設備如硬碟、磁碟、U盤和SD卡等存儲設備。

(3)網路設備:網路設備比較特殊,不在是對文件進行操作,而是由專門的網路介面來實現。應用程序不能直接訪問網路設備驅動程序。在/dev目錄下也沒有文件來表示網路設備。

2、開發流程

在這里插入圖片描述

3、關鍵函數講解(以2.6以下版本內核為例)

(1)驅動模塊注冊register_chrdev()函數

原型:register_chrdev(unsigned int major, const char *name,const struct file_operations *fops);

major:主設備號,該值為 0 時,自動運行分配。而實際值不是 0 ;

name:設備名稱;

fops:操作函數,實現驅動定義的open、read、write、close等內核函數與應用程序調用的open、read、write、close間的映射;

返回值:

major 值為 0 ,正常注冊後,返回分配的主設備號。如果分配失敗,返回 EBUSY 的負值 ( -EBUSY ) 。major 值若大於 linux/major.h (2.4內核)中聲明的最大值 (#define MAX_CHRDEV 255) ,則返回EINVAL 的負值 (-EINVAL) 。指定 major 值後,若有注冊的設備,返回 EBUSY 的負值 (-EBUSY)。若正常注冊,則返回 0 值

(2)驅動注銷unregister_chrdev()函數

原型:

#include <linux.fs.h>

int unregister_chrdev (unsigned int major, const char *name)

變數:

major 主設備號

name 設備文件

返回值:

major 值若大於 linux/major.h (2.4 內核)中聲明的最大值 (#define MAX_CHRDEV 255),返回 EINVAL的負值 (-EINVAL)。指定了 major的值後,若將要注銷的 major 值並不是注冊的設備驅動程序,返回 EINVAL的負值 ( -EINVAL )。正常注銷則返回 0值。

(3)File_operation結構體

file_operations結構是建立驅動程序和設備編號的連接,內部是一組函數指針,每個打開的文件,也就是file結構,和一組函數關聯,這些操作主要用來實現系統調用的

struct file_operations {

struct mole *owner;//擁有該結構的模塊的指針,一般為THIS_MODULES

loff_t (*llseek) (struct file *, loff_t, int);//用來修改文件當前的讀寫位置

ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);//從設備中同步讀取數據

ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);//向設備發送數據

ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);//初始化一個非同步的讀取操作

ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);//初始化一個非同步的寫入操作

int (*readdir) (struct file *, void *, filldir_t);//僅用於讀取目錄,對於設備文件,該欄位為NULL

unsigned int (*poll) (struct file *, struct poll_table_struct *); //輪詢函數,判斷目前是否可以進行非阻塞的讀寫或寫入

int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); //執行設備I/O控制命令

long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); //不使用BLK文件系統,將使用此種函數指針代替ioctl

long (*compat_ioctl) (struct file *, unsigned int, unsigned long); //在64位系統上,32位的ioctl調用將使用此函數指針代替

int (*mmap) (struct file *, struct vm_area_struct *); //用於請求將設備內存映射到進程地址空間

int (*open) (struct inode *, struct file *); //打開

int (*flush) (struct file *, fl_owner_t id);

int (*release) (struct inode *, struct file *); //關閉

int (*fsync) (struct file *, struct dentry *, int datasync); //刷新待處理的數據

int (*aio_fsync) (struct kiocb *, int datasync); //非同步刷新待處理的數據

int (*fasync) (int, struct file *, int); //通知設備FASYNC標志發生變化

int (*lock) (struct file *, int, struct file_lock *);

ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);

unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);

int (*check_flags)(int);

int (*flock) (struct file *, int, struct file_lock *);

ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);

ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);

int (*setlease)(struct file *, long, struct file_lock **);

};

『陸』 新手學習嵌入式linux驅動開發有沒有什麼步驟

1. 學會寫簡單的makefile
2. 編一應用程序,可以用makefile跑起來
3. 學會寫驅動的makefile
4. 寫一簡單char驅動,makefile編譯通過,可以insmod, lsmod, rmmod. 在驅動的init函數里列印hello world, insmod後應該能夠通過dmesg看到輸出。
5. 寫一完整驅動, 加上read, write, ioctl, polling等各種函數的驅動實現。 在ioctl里完成從用戶空間向內核空間傳遞結構體的實現。
6. 寫一block驅動, 加上read,write,ioctl,poll等各種函數實現。
7. 簡單學習下內存管理, 這個是最難的,明白各種memory alloc的函數實現細節。這是Linux開發的基本功。
8. 學習鎖機制的應用,這個不是最難的但是最容易犯錯的,涉及到很多同步和並發的問題。
9. 看內核中實際應用的驅動代碼。 你會發現最基本的你已經知道了, 大的框架都是一樣的, 無非是read, write, ioctl等函數的實現, 但裡麵包含了很多很多細小的實現細節是之前不知道的。 這時候就要考慮到很多別的問題而不僅僅是基本功能的實現。 推薦您看2.6.20中integrated的一個驅動 kvm, 記得是在driver/lguest下,很好玩的, 就是Linux下的虛擬機驅動, 代碼不長,但功能強大。有能力的可以自己寫一操作系統按照要求做成磁碟鏡像載入到虛擬機中, 然後客戶機可以有自己的4G虛擬地址空間。
10. 看完驅動歡迎您進入Linux kernel學習中來。 最簡單的方法,跟著ldd(Linux devive driver)做一遍。

『柒』 嵌入式Linux設備驅動開發詳解的編輯推薦

本書特色:本書系統地介紹了嵌入式Linux設備驅動開發的相關知識和實例,主要包括:
數碼管驅動程序;鍵盤驅動程序;A/D、D/A驅動程序;LCD驅動程序;觸摸屏驅動程序;CAN匯流排驅動程序;I2C匯流排驅動程序;音頻匯流排驅動程序;IDE驅動程序;NAND Flash和NOR Flash驅動程序;USB設備驅動程序;串口驅動程序;網路設備驅動程序。
實例豐富、講解細致、代碼分析詳盡,嵌入式Linux設備驅動開發的理想參考用書。

『捌』 如何學習嵌入式Linux驅動

學習嵌入式Linux驅動,首先我們需要的是去了解整個嵌入式開發的整個流程分為四個層次:底層硬體設計、嵌入式驅動開發、內核開發、應用層開發。其中底層硬體設計必須要有一定的硬體功底,我建議你若不是科班出身(數電、模電、高頻學的比較好)的人不要去考慮。內核開發需要你有很好的軟體功底(C語言、C++學的很好,有過一定的項目經驗最好),這個事嵌入式驅動開發的人以後可以考慮發展的方向,不建議一開始就學。如果你是面臨著急需找工作的人並且你有一定的商業頭腦、創新思維,我認為學習應用層開發是最好不過的選擇,但是你別忘了因為簡單容易學所以學的人比較多。如果你把前面三個選擇都否定了,而且你C語言學的還可以,有學過C51或者STM32這些簡單的東西,你不妨看下去。如果你覺得這些對你沒用或者不感興趣,請就此打住不要再往下看不要再浪費你的時間了。親,去做你該做的事吧!
一、入門者:了解嵌入式
了解嵌入式開發我覺得最好的東西還是《嵌入式系統設計師教程》,這本書寫的很爛,無非是用來應付考試的。但是我認為對我們了解嵌入式開發需要學習些什麼東西還是有一點用處的,可以在網上瀏覽一下,你就可以知道嵌入式大概要學的東西,不建議精讀。另外如果想大致了解一下嵌入式開發的四個層次,可以看下韋東山韋老師的《作為一個新人,怎樣學習嵌入式Linux》http://blog.sina.com.cn/s/blog_13955cfdb0102v3it.html

二、初學者:學習使用Linux
我這里的初學者者指的是已經回了解了嵌入式,有慾望想往深處學習的碼農們。這個時候我們已經找到了感覺了。嵌入式操作系統有Vxworks、WINCE、uCLinux、Embedded Linux等操作,但是我們一般選擇Linux。原因有二:Linux代碼開源,可供學習免費使用。Linux學習的資料非常多,很容易找到小夥伴。學習嵌入式Linux驅動,就必須先學習使用Linux。但是我們對於Linux的使用其實不必學的太多,多了反而會在這浪費的時間。像大家都說可以的《鳥哥的linux私房菜》我不建議大家讀,我認為像《Linux就該這么學》這樣范范而談的書籍反而更適合我們初學者。我們對Linux的定位是:基本命令會用,不懂再查。
http://www.linuxprobe.com/chapter-00.html如果覺的適合自己可以去看下

二、菜鳥們:加強C語言,看得懂電路圖
我相信到這一階段你已經深深的愛上了Linux,當然你也可能恨死她了,恨她為什麼有那麼多命令,恨她為什麼不去想Windows那麼傻瓜式啊,點點就可以了,但是你別忘了其實Windows也有DOS命令行,只是你沒有用過而已吧。我對沒有去Linux命令界面敲過幾行命令的人視為不會使用操作系統的人,你覺得啦?
既然你愛上她了(不愛請不要再往下看),那請問你為了一個愛你的人做件可能對你難的事,你願意嗎?願意的話,我們就要去加強自己的C語言基礎,我覺得書看的多,視頻看的多,還不如看懂一本書,把一本書的程序題好好敲敲,你覺得啦?所以我還是推薦最好的入門的C語言書籍《C程序設計》譚浩強前輩寫的。對於看得懂電路圖我認為最好的是去下一個畫電路板的軟體隨便找幾個電路圖畫畫,慢慢就會了,當然你也可以跳過,我相信如果你真的愛上這一行了以後的學習工作中會逼出來的。

三、碼農們:選擇一塊合適的開發板,然後看書、看數據手冊、敲代碼、看視頻
嵌入式Linux驅動開發是一個敲代碼的過程,所以稱之為碼農。對於嵌入式Linux驅動開發來說是一個偏軟體的工作,而碼農們就是一個看書、看資料、看視頻學習理論知識,然後自己實現的反反復復的過程。只有你不斷Debug不斷解決不斷充實理論知識,才可能往更高層次走。對於書籍我推薦韋東山韋老師的《嵌入式Linux驅動開發完全手冊》,當然我覺得成為中國化的S3C2440數據手冊更好些(至於為什麼學ARM9的S3C2440可以往下看),當然這本書也有他的不好之處:太過於實踐,理論知識不全。我覺得配合杜春雷老師的《ARM體系結構與編程》看會非常好,有比較詳細的對ARM的介紹。另外既然我們學習S3C2440的話,《S3C2440數據手冊》我們是非看不可。另外老外寫的《設備驅動開發》也就是所謂的LDD,還有就是宋寶華老師的《Linux設備驅動開發詳解》,挺不錯的。視頻的話我力頂《嵌入式Linux驅動開發完全手冊》的作者韋東山韋老師的視頻,可以去百問網http://www.100ask.org/ 自行查看。開發板的話我覺得可以自行選擇,最好選擇S3c2440或者S3c2410的晶元,因為ARM9的資料最多,隨便上網搜就是一大把。
四、大神們:研究Linux
毛德操/ 胡希明寫的《Linux內核源代碼情景分析》、 趙炯《Linux內核完全注釋》、《unix環境高級編程》還有更多的可以去看一看瞧一瞧了,我相信你學到這里就可以自找出路了,我也目前在前面階段,以後把這些學習完再做補充了。

我相信能夠學習嵌入式Linux驅動的人都能夠知道有好的學習資料學習能夠事半功倍的,本人也是學習驅動的菜鳥,歷經了學習的滄桑,今天在這里分享一下自己學習嵌入式Linux驅動過程中自認為好的資料,不好請勿噴。有興趣的可以轉載分享給你的朋友。以後有時間我會整理我在學習過程中的東西,加我關注以後一起學習叫流。

『玖』 嵌入式Linux設備驅動開發詳解的目錄

第1章嵌入式系統與驅動程序1
本章目標1
1.1嵌入式系統概述1
1.1.1嵌入式系統的概念1
1.1.2嵌入式系統的特點2
1.1.3嵌入式系統的體系結構2
1.2嵌入式處理器介紹4
1.2.1嵌入式處理器分類4
1.2.2ARM概述5
1.2.3ARM系列晶元簡介5
1.3嵌入式操作系統介紹7
1.3.1主流嵌入式操作系統7
1.3.2嵌入式系統的發展狀況8
1.3.3嵌入式Linux介紹8
1.3.4嵌入式系統開發環境的建立9
1.3.5嵌入式軟體開發10
1.4嵌入式Linux驅動程序12
1.4.1嵌入式Linux的內核空間和用戶空間12
1.4.2嵌入式Linux的文件系統12
1.4.3嵌入式Linux的設備管理14
1.4.4嵌入式Linux的驅動程序16
1.5知識索引20
1.6思考與練習21
第2章簡單的字元設備驅動程序23
本章目標23
2.1嵌入式Linux字元設備的驅動程序結構23
2.1.1嵌入式Linux驅動程序常用的頭文件24
2.1.2File_operations結構體24
2.1.3字元設備驅動程序的入口25
2.1.4驅動程序的設備注冊26
2.2設備驅動程序中的具體問題27
2.2.1I/O埠28
2.2.2內存操作29
2.2.3中斷處理29
2.3LED的驅動程序實例及測試30
2.3.1LED I/O埠設置30
2.3.2LED硬體電路設計32
2.3.3LED驅動程序設計33
2.3.4LED測試程序設計36
2.4嵌入式Linux中斷處理驅動程序及測試37
2.4.1中斷處理過程37
2.4.2中斷向量表39
2.4.3中斷的處理模式39
2.4.4中斷的優先順序40
2.4.5中斷的嵌套40
2.4.6中斷源的擴展40
2.4.7中斷控制寄存器的設置41
2.5按鍵中斷的驅動程序實例45
2.5.1按鍵中斷的電路設計45
2.5.2按鍵中斷的驅動程序設計45
2.6知識索引48
2.7思考與練習49
第3章數字顯示驅動程序50
本章目標50
3.1數字顯示器50
3.1.1數碼管簡介50
3.1.2數碼管的分類51
3.1.3數碼管顯示原理51
3.2數碼管顯示電路的硬體設計52
3.2.1解碼器的使用52
3.2.2數碼管的驅動方式53
3.2.3串/並變換的解碼設計55
3.3數碼管驅動程序實例56
3.3.1驅動程序的初始化和卸載模塊56
3.3.2文件操作結構模塊57
3.3.3數碼管的打開模塊57
3.3.4數碼管的讀寫模塊58
3.3.5數碼管的I/O控制模塊58
3.3.6數碼管的退出模塊58
3.3.7驅動程序的模塊載入和卸載59
3.4數碼管顯示電路測試程序設計60
3.4.1數碼管測試設計60
3.4.2數碼管測試程序60
3.4.3數碼管測試效果61
3.5知識索引61
3.6思考與練習62
第4章鍵盤驅動程序63
本章目標63
4.1鍵盤介面概述63
4.1.1鍵盤的分類63
4.1.2鍵盤的防抖65
4.1.3鍵盤的掃描65
4.1.4鍵盤的緩沖演算法67
4.2鍵盤的驅動設計實例67
4.2.1鎖存器和緩沖器擴展鍵盤67
4.2.2鎖存器和緩沖器的介面68
4.2.3鎖存器和緩沖器擴展鍵盤驅動程序設計69
4.2.4鎖存器和緩沖器擴展鍵盤測試程序設計71
4.3智能控制晶元HD7279擴展鍵盤72
4.3.1HD7279的電路設計72
4.3.2HD7279的指令介紹73
4.3.3HD7279的串列介面74
4.3.4HD7279的驅動程序設計75
4.3.5HD7279的測試程序設計84
4.4知識索引85
4.5思考與練習85
第5章A/D驅動程序86
本章目標86
5.1A/D轉換的過程86
5.1.1采樣和保持86
5.1.2量化和編碼88
5.1.3ADC的分類89
5.2A/D轉換器的基本原理89
5.2.1逐次逼近型A/D轉換器89
5.2.2雙積分型A/D轉換器90
5.2.3V/F和F/V型轉換器93
5.2.4其他A/D轉換器95
5.3A/D轉換器介面技術97
5.3.1ADC的主要參數及意義97
5.3.2ADC的電路選擇方法98
5.3.3ADC實際應用中的問題99
5.4S3C2410 A/D轉換驅動設計實例99
5.4.1S3C2410的A/D轉換電路99
5.4.2S3C2410X的A/D轉換控制寄存器100
5.4.3S3C2410X的A/D轉換數據寄存器101
5.4.4S3C2410X中A/D轉換驅動程序的設計102
5.4.5S3C2410X中A/D轉換測試程序的設計105
5.5知識索引106
5.6思考與練習107
第6章D/A驅動程序108
本章目標108
6.1D/A的原理介紹108
6.1.1D/A轉換的概念及基本原理108
6.1.2電子模擬開關109
6.1.3D/A轉換器的基本結構110
6.1.4D/A轉換的靜態參數114
6.1.5D/A轉換的動態參數115
6.2D/A轉換的硬體電路設計116
6.2.1D/A轉換的介面技術116
6.2.2D/A轉換晶元介紹117
6.2.3D/A轉換的電路設計118
6.3D/A轉換器的驅動程序實例118
6.3.1D/A驅動程序中的宏定義118
6.3.2D/A的模塊載入118
6.3.3D/A轉換器的文件操作模塊119
6.3.4D/A轉換器的讀寫控制模塊120
6.3.5D/A轉換器的打開、退出模塊120
6.4測試程序的設計120
6.4.1D/A測試程序中的宏定義121
6.4.2D/A測試程序的主函數121
6.4.3D/A測試程序中的功能函數122
6.4.4D/A測試程序中的功能列印函數123
6.4.5D/A測試程序中的波形生成函數123
6.4.6D/A測試程序的效果124
6.5知識索引125
6.6思考與練習125
第7章LCD驅動程序126
本章目標126
7.1LCD顯示器概述126
7.1.1液晶126
7.1.2LCD顯示屏的背光127
7.1.3LCD顯示器的分類127
7.1.4LCD的顯示原理127
7.1.5LCD的驅動方式130
7.1.6LCD的常用指標131
7.2LCD的顯示介面131
7.2.1灰度STN的時序132
7.2.2彩色STN的時序133
7.2.3TFT的時序134
7.3嵌入式處理器的LCD控制器136
7.3.1LCD控制器136
7.3.2LCD控制器的設置137
7.3.3LCD的字元顯示緩存139
7.4LCD的驅動程序設計140
7.4.1LCD驅動程序相關的宏定義140
7.4.2LCD驅動程序的底層操作函數142
7.4.3LCD驅動程序提供的API145
7.4.4LCD驅動程序的模塊化載入151
7.4.5LCD的測試程序152
7.5基於Framebuffer的LCD驅動程序實例155
7.5.1Framebuffer概述155
7.5.2LCD的電路連接155
7.5.3Framebuffer設備驅動程序的結構156
7.5.4Framebuffer設備驅動程序的設計159
7.5.5Framebuffer設備測試程序的設計164
7.5.6嵌入式Linux常用的GUI166
7.6知識索引166
7.7思考與練習167
第8章觸摸屏驅動程序168
本章目標168
8.1觸摸屏概述168
8.2觸摸屏的分類168
8.2.1電阻技術觸摸屏168
8.2.2表面聲波技術觸摸屏169
8.2.3電容電感技術觸摸屏170
8.2.4紅外線技術觸摸屏170
8.3觸摸屏的特性171
8.3.1透明度和色彩失真171
8.3.2反光性171
8.3.3清晰度171
8.3.4漂移172
8.3.5檢測和定位172
8.4觸摸屏的硬體電路設計172
8.4.1電阻式觸摸屏的電路原理172
8.4.2電阻式觸摸屏原點的定位173
8.4.3電阻式觸摸屏的電路連接174
8.5觸摸屏的驅動程序實例176
8.5.1觸摸屏介面的模式176
8.5.2A/D轉換和觸摸屏寄存器的設置177
8.5.3觸摸屏的坐標179
8.5.4觸摸屏的電路連接180
8.5.5觸摸屏的驅動程序介面181
8.6測試程序的設計182
8.6.1觸摸屏的數據定義183
8.6.2觸摸屏的數據處理183
8.6.3觸摸屏的運行測試185
8.7知識索引186
8.8思考與練習187
第9章CAN匯流排驅動程序188
本章目標188
9.1CAN匯流排介面設計188
9.1.1CAN匯流排概述188
9.1.2CAN的工作特點及主要優點189
9.1.3CAN匯流排的電氣特徵和MAC幀結構189
9.2嵌入式處理器上CAN匯流排介面的擴展190
9.2.1SJA1000簡介190
9.2.2SJA1000擴展191
9.3SJA1000擴展CAN匯流排介面的設計192
9.3.1CAN 控制器SJA1000的操作模式192
9.3.2CAN控制器SJA1000的特徵功能193
9.3.3CAN 控制器SJA1000的Basic CAN模式設置194
9.4SJA1000擴展CAN匯流排介面的通信196
9.4.1通過CAN匯流排建立通信的步驟196
9.4.2SJA1000的初始化196
9.4.3驅動程序的結構設計198
9.4.4驅動程序init、exit、open、close函數的實現200
9.4.5驅動程序read、write函數的實現201
9.4.6驅動程序interrupt、ioctl函數實現202
9.4.7測試程序的編寫202
9.5驅動程序的載入204
9.6知識索引204
9.7思考與練習205
第10章IIC匯流排驅動程序206
本章目標206
10.1IIC匯流排概述206
10.1.1IIC匯流排介紹206
10.1.2IIC匯流排引入的原因206
10.1.3IIC匯流排的特點206
10.1.4IIC匯流排的基本結構207
10.1.5IIC匯流排的術語207
10.1.6IIC匯流排的工作208
10.1.7IIC匯流排的競爭仲裁209
10.1.8IIC匯流排的工作流程210
10.2嵌入式處理器的IIC介面211
10.2.1IIC匯流排控制寄存器212
10.2.2IIC匯流排控制/狀態寄存器213
10.2.3IIC匯流排地址寄存器214
10.2.4IIC匯流排移位數據寄存器214
10.2.5S3C2410中與IIC對應的I/O埠215
10.3基於IIC的鍵盤晶元應用216
10.3.1ZLG7290的功能217
10.3.2ZLG7290的控制方式218
10.3.3ZLG7290的寄存器218
10.3.4ZLG7290的通信介面219
10.3.5ZLG7290的指令介紹219
10.4IIC匯流排驅動程序實例221
10.4.1ZLG7290的電路連接221
10.4.2ZLG7290的通信流程223
10.4.3ZLG7290驅動中變數的定義225
10.4.4ZLG7290驅動中實時時鍾的改變226
10.4.5ZLG7290和IIC寄存器的初始化227
10.4.6ZLG7290驅動程序的模塊化228
10.4.7ZLG7290的文件操作結構228
10.5IIC匯流排的測試程序230
10.6知識索引231
10.7思考與練習231
第11章音頻匯流排驅動程序232
本章目標232
11.1音頻匯流排介面概述232
11.1.1音頻的采樣精度233
11.1.2音頻編碼233
11.2IIS音頻匯流排介面233
11.2.1IIS匯流排的物理連接233
11.2.2IIS的匯流排協議234
11.2.3IIS匯流排的硬體設計235
11.2.4IIS匯流排的寄存器236
11.3AC97音頻匯流排介面239
11.4IIS匯流排的驅動程序設計240
11.4.1音頻設備基礎知識240
11.4.2音頻設備文件241
11.4.3WAV聲音文件243
11.4.4音頻設備和驅動程序的通信243
11.4.5設備的初始化和載入244
11.4.6DMA的操作和宏定義246
11.4.7audio設備文件的操作248
11.4.8mixer設備文件的操作260
11.5音頻驅動程序的測試262
11.6知識索引262
11.7思考與練習263
第12章IDE介面驅動程序264
本章目標264
12.1IDE介面概述264
12.1.1硬碟知識介紹264
12.1.2IDE介面標准267
12.1.3IDE介面的傳輸模式269
12.1.4IDE介面寄存器269
12.2IDE介面驅動程序的移植271
12.2.1嵌入式Linux下IDE驅動程序介面271
12.2.2嵌入式Linux下IDE驅動程序272
12.2.3IDE硬碟的讀/寫操作274
12.3IDE驅動程序測試282
12.3.1磁碟文件系統簡介283
12.3.2IDE分區測試283
12.4知識索引285
12.5思考與練習285
第13章快閃記憶體晶元的驅動程序286
本章目標286
13.1快閃記憶體晶元概述286
13.1.1快閃記憶體晶元的物理特性286
13.1.2嵌入式文件系統概述289
13.1.3MTD體系介紹289
13.1.4Flash專有名詞291
13.2NAND Flash291
13.2.1NAND Flash的結構291
13.2.2NAND Flash的操作292
13.2.3NAND Flash控制器294
13.2.4NAND Flash的時序296
13.2.5NAND Flash的驅動程序實例297
13.3NOR Flash301
13.3.1NOR Flash的結構301
13.3.2NOR Flash的操作302
13.3.3NOR Flash的驅動程序實例303
13.4基於快閃記憶體的文件系統307
13.5知識索引309
13.6思考與練習310
第14章USB 設備驅動程序311
本章目標311
14.1USB介面概述311
14.1.1USB系統311
14.1.2USB的電氣特性312
14.1.3USB匯流排的拓撲結構313
14.1.4USB的通信協議313
14.2嵌入式系統中USB的使用315
14.2.1OHCI概述315
14.2.2Host介面硬體設計316
14.3嵌入式系統中USB設備的驅動程序設計316
14.3.1

閱讀全文

與嵌入式linux驅動詳解相關的資料

熱點內容
考駕照怎麼找伺服器 瀏覽:882
阿里雲伺服器如何更換地區 瀏覽:970
手機app調音器怎麼調古箏 瀏覽:501
銳起無盤系統在伺服器上需要設置什麼嗎 瀏覽:17
紅旗計程車app怎麼應聘 瀏覽:978
如何編寫linux程序 瀏覽:870
吉利車解壓 瀏覽:248
java輸入流字元串 瀏覽:341
安卓軟體沒網怎麼回事 瀏覽:785
dvd壓縮碟怎麼導出電腦 瀏覽:274
冒險島什麼伺服器好玩 瀏覽:541
如何在伺服器上做性能測試 瀏覽:793
命令序列錯 瀏覽:259
javaif的條件表達式 瀏覽:576
手機app上傳的照片怎麼找 瀏覽:531
雲伺服器面臨哪些威脅 瀏覽:748
c語言各種編譯特點 瀏覽:177
路由器多種加密方法 瀏覽:604
程序員阻止電腦自動彈出定位 瀏覽:168
如何做伺服器服務商 瀏覽:762