資料介紹
?11.4 塊設備驅動編程
塊設備通常指一些需要以塊(如512字節(jié))的方式寫入的設備,如IDE硬盤、SCSI硬盤、光驅等。它的驅動程序的編寫過程與字符型設備驅動程序的編寫有很大的區(qū)別。
塊設備驅動編程接口相對復雜,不如字符設備明晰易用。塊設備驅動程序對整個系統(tǒng)的性能影響較大,速度和效率是設計塊設備驅動程要重點考慮的問題。系統(tǒng)中使用緩沖區(qū)與訪問請求的優(yōu)化管理(合并與重新排序)來提高系統(tǒng)性能。
1.編程流程說明
塊設備驅動程序的編寫流程同字符設備驅動程序的編寫流程很類似,也包括了注冊和使用兩部分。但與字符驅動設備所不同的是,塊設備驅動程序包括一個request請求隊列。它是當內核安排一次數(shù)據(jù)傳輸時在列表中的一個請求隊列,以最大化系統(tǒng)性能為原則進行排序。在后面的讀寫操作時會詳細講解這個函數(shù),圖11.5為塊設備驅動程序的流程圖,請讀者注意與字符設備驅動程序的區(qū)別。

圖11.5 塊設備驅動程序流程圖
2.重要數(shù)據(jù)結構
每個塊設備物理實體由一個gendisk結構體來表示(在《/linux/genhd.h》中定義),每個gendisk可以支持多個分區(qū)。
每個gendisk中包含了本物理實體的全部信息以及操作函數(shù)接口。整個塊設備的注冊過程是圍繞gendisk來展開的。在驅動程序中需要初始化的gendisk的一些成員如下所示。
struct gendisk
{
int major; /* 主設備號 */
int first_minor; /* 第一個次設備號 */
int minors; /* 次設備號個數(shù),一個塊設備至少需要使用一個次設備號,而且塊設
備的每個分區(qū)都需要一個次設備號,因此這個成員等于1,則表明該塊
設備是不可被分區(qū)的,否則可以包含minors – 1 個分區(qū)。*/
char disk_name[32]; /* 塊設備名稱,在/proc/partions中顯示 */
struct hd_struct **part; /* 分區(qū)表 */
struct block_device_operations *fops; /* 塊設備操作接口,與字符設備的
file_operations結構對應*/
struct request_queue *queue; /* I/O請求隊列 */
void *private_data; /* 指向驅動程序私有數(shù)據(jù) */
sector_t capacity; /* 塊設備可包含的扇區(qū)數(shù) */
…… /* 其他省略 */
};
與字符設備驅動程序一樣,塊設備驅動程序也包含一個在《linux/fs.h》中定義的block_device_operations結構,其定義如下所示。
塊設備通常指一些需要以塊(如512字節(jié))的方式寫入的設備,如IDE硬盤、SCSI硬盤、光驅等。它的驅動程序的編寫過程與字符型設備驅動程序的編寫有很大的區(qū)別。
塊設備驅動編程接口相對復雜,不如字符設備明晰易用。塊設備驅動程序對整個系統(tǒng)的性能影響較大,速度和效率是設計塊設備驅動程要重點考慮的問題。系統(tǒng)中使用緩沖區(qū)與訪問請求的優(yōu)化管理(合并與重新排序)來提高系統(tǒng)性能。
1.編程流程說明
塊設備驅動程序的編寫流程同字符設備驅動程序的編寫流程很類似,也包括了注冊和使用兩部分。但與字符驅動設備所不同的是,塊設備驅動程序包括一個request請求隊列。它是當內核安排一次數(shù)據(jù)傳輸時在列表中的一個請求隊列,以最大化系統(tǒng)性能為原則進行排序。在后面的讀寫操作時會詳細講解這個函數(shù),圖11.5為塊設備驅動程序的流程圖,請讀者注意與字符設備驅動程序的區(qū)別。

圖11.5 塊設備驅動程序流程圖
2.重要數(shù)據(jù)結構
每個塊設備物理實體由一個gendisk結構體來表示(在《/linux/genhd.h》中定義),每個gendisk可以支持多個分區(qū)。
每個gendisk中包含了本物理實體的全部信息以及操作函數(shù)接口。整個塊設備的注冊過程是圍繞gendisk來展開的。在驅動程序中需要初始化的gendisk的一些成員如下所示。
struct gendisk
{
int major; /* 主設備號 */
int first_minor; /* 第一個次設備號 */
int minors; /* 次設備號個數(shù),一個塊設備至少需要使用一個次設備號,而且塊設
備的每個分區(qū)都需要一個次設備號,因此這個成員等于1,則表明該塊
設備是不可被分區(qū)的,否則可以包含minors – 1 個分區(qū)。*/
char disk_name[32]; /* 塊設備名稱,在/proc/partions中顯示 */
struct hd_struct **part; /* 分區(qū)表 */
struct block_device_operations *fops; /* 塊設備操作接口,與字符設備的
file_operations結構對應*/
struct request_queue *queue; /* I/O請求隊列 */
void *private_data; /* 指向驅動程序私有數(shù)據(jù) */
sector_t capacity; /* 塊設備可包含的扇區(qū)數(shù) */
…… /* 其他省略 */
};
與字符設備驅動程序一樣,塊設備驅動程序也包含一個在《linux/fs.h》中定義的block_device_operations結構,其定義如下所示。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- Linux設備驅動開發(fā)詳解 56次下載
- 嵌入式Linux設備驅動程序開發(fā)基礎知識總結免費下載 13次下載
- 《Linux設備驅動開發(fā)詳解》第5章、Linux文件系統(tǒng)與設備文件系統(tǒng) 0次下載
- 《Linux設備驅動開發(fā)詳解》第7章、Linux設備驅動中的并發(fā)控制 10次下載
- 《Linux設備驅動開發(fā)詳解》第8章、Linux設備驅動中的阻塞與非阻塞IO 9次下載
- 《Linux設備驅動開發(fā)詳解》第9章、Linux設備驅動中的異步通知與異步IO 0次下載
- 《Linux設備驅動開發(fā)詳解》第13章、Linux塊設備驅動 18次下載
- 《Linux設備驅動開發(fā)詳解》第14章、Linux終端設備驅動 8次下載
- 《Linux設備驅動開發(fā)詳解》第16章、Linux網(wǎng)絡設備驅動 5次下載
- 《Linux設備驅動開發(fā)詳解》第17章、Linux音頻設備驅動 17次下載
- 《Linux設備驅動開發(fā)詳解》第23章、Linux設備驅動的移植 9次下載
- Linux設備驅動開發(fā)之設備驅動簡述 0次下載
- Linux設備驅動開發(fā)入門
- Linux的設備驅動程序開發(fā)
- 嵌入式Linux設備驅動開發(fā)
- Linux 驅動開發(fā)與應用開發(fā),你知道多少? 2.2k次閱讀
- Linux內核驅動與單個PCI設備的綁定和解綁定 2.9k次閱讀
- 一文總結linux的platform驅動 2.2k次閱讀
- 如何寫一個Linux設備驅動程序 5.5k次閱讀
- Linux設備驅動開發(fā)的基本知識 4.9k次閱讀
- Linux驅動到底能不能在應用層開發(fā)驅動 6.7k次閱讀
- 米爾科技Linux設備驅動研究淺談 2.5k次閱讀
- 米爾科技LINUX設備驅動程序教程 2.7k次閱讀
- 基于PXA255開發(fā)板外圍字符設備的嵌入式Linux字符設備驅動設計與應用 1.5k次閱讀
- 基于嵌入式Linux內核的系統(tǒng)設備驅動程序開發(fā)設計 1.5k次閱讀
- 基于Linux2.6.30開發(fā)DS18B20的驅動程序的類型和文件操作接口函數(shù)詳解 1.8k次閱讀
- 想要駕馭Linux驅動開發(fā),必須深刻理解Linux總線設備驅動框架 1.1w次閱讀
- 嵌入式Linux驅動開發(fā)基礎總結(上篇) 9k次閱讀
- 基于FPGA嵌入式系統(tǒng)的設備驅動開發(fā) 2.7k次閱讀
- 關于Linux設備驅動中input子系統(tǒng)的介紹 3k次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論