資料介紹
?11.4 塊設備驅動編程
塊設備通常指一些需要以塊(如512字節)的方式寫入的設備,如IDE硬盤、SCSI硬盤、光驅等。它的驅動程序的編寫過程與字符型設備驅動程序的編寫有很大的區別。
塊設備驅動編程接口相對復雜,不如字符設備明晰易用。塊設備驅動程序對整個系統的性能影響較大,速度和效率是設計塊設備驅動程要重點考慮的問題。系統中使用緩沖區與訪問請求的優化管理(合并與重新排序)來提高系統性能。
1.編程流程說明
塊設備驅動程序的編寫流程同字符設備驅動程序的編寫流程很類似,也包括了注冊和使用兩部分。但與字符驅動設備所不同的是,塊設備驅動程序包括一個request請求隊列。它是當內核安排一次數據傳輸時在列表中的一個請求隊列,以最大化系統性能為原則進行排序。在后面的讀寫操作時會詳細講解這個函數,圖11.5為塊設備驅動程序的流程圖,請讀者注意與字符設備驅動程序的區別。
圖11.5 塊設備驅動程序流程圖
2.重要數據結構
每個塊設備物理實體由一個gendisk結構體來表示(在《/linux/genhd.h》中定義),每個gendisk可以支持多個分區。
每個gendisk中包含了本物理實體的全部信息以及操作函數接口。整個塊設備的注冊過程是圍繞gendisk來展開的。在驅動程序中需要初始化的gendisk的一些成員如下所示。
struct gendisk
{
int major; /* 主設備號 */
int first_minor; /* 第一個次設備號 */
int minors; /* 次設備號個數,一個塊設備至少需要使用一個次設備號,而且塊設
備的每個分區都需要一個次設備號,因此這個成員等于1,則表明該塊
設備是不可被分區的,否則可以包含minors – 1 個分區。*/
char disk_name[32]; /* 塊設備名稱,在/proc/partions中顯示 */
struct hd_struct **part; /* 分區表 */
struct block_device_operations *fops; /* 塊設備操作接口,與字符設備的
file_operations結構對應*/
struct request_queue *queue; /* I/O請求隊列 */
void *private_data; /* 指向驅動程序私有數據 */
sector_t capacity; /* 塊設備可包含的扇區數 */
…… /* 其他省略 */
};
與字符設備驅動程序一樣,塊設備驅動程序也包含一個在《linux/fs.h》中定義的block_device_operations結構,其定義如下所示。
塊設備通常指一些需要以塊(如512字節)的方式寫入的設備,如IDE硬盤、SCSI硬盤、光驅等。它的驅動程序的編寫過程與字符型設備驅動程序的編寫有很大的區別。
塊設備驅動編程接口相對復雜,不如字符設備明晰易用。塊設備驅動程序對整個系統的性能影響較大,速度和效率是設計塊設備驅動程要重點考慮的問題。系統中使用緩沖區與訪問請求的優化管理(合并與重新排序)來提高系統性能。
1.編程流程說明
塊設備驅動程序的編寫流程同字符設備驅動程序的編寫流程很類似,也包括了注冊和使用兩部分。但與字符驅動設備所不同的是,塊設備驅動程序包括一個request請求隊列。它是當內核安排一次數據傳輸時在列表中的一個請求隊列,以最大化系統性能為原則進行排序。在后面的讀寫操作時會詳細講解這個函數,圖11.5為塊設備驅動程序的流程圖,請讀者注意與字符設備驅動程序的區別。
圖11.5 塊設備驅動程序流程圖
2.重要數據結構
每個塊設備物理實體由一個gendisk結構體來表示(在《/linux/genhd.h》中定義),每個gendisk可以支持多個分區。
每個gendisk中包含了本物理實體的全部信息以及操作函數接口。整個塊設備的注冊過程是圍繞gendisk來展開的。在驅動程序中需要初始化的gendisk的一些成員如下所示。
struct gendisk
{
int major; /* 主設備號 */
int first_minor; /* 第一個次設備號 */
int minors; /* 次設備號個數,一個塊設備至少需要使用一個次設備號,而且塊設
備的每個分區都需要一個次設備號,因此這個成員等于1,則表明該塊
設備是不可被分區的,否則可以包含minors – 1 個分區。*/
char disk_name[32]; /* 塊設備名稱,在/proc/partions中顯示 */
struct hd_struct **part; /* 分區表 */
struct block_device_operations *fops; /* 塊設備操作接口,與字符設備的
file_operations結構對應*/
struct request_queue *queue; /* I/O請求隊列 */
void *private_data; /* 指向驅動程序私有數據 */
sector_t capacity; /* 塊設備可包含的扇區數 */
…… /* 其他省略 */
};
與字符設備驅動程序一樣,塊設備驅動程序也包含一個在《linux/fs.h》中定義的block_device_operations結構,其定義如下所示。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- Linux設備驅動開發詳解 49次下載
- 嵌入式Linux設備驅動程序開發基礎知識總結免費下載 13次下載
- 《Linux設備驅動開發詳解》第5章、Linux文件系統與設備文件系統 0次下載
- 《Linux設備驅動開發詳解》第7章、Linux設備驅動中的并發控制 10次下載
- 《Linux設備驅動開發詳解》第8章、Linux設備驅動中的阻塞與非阻塞IO 9次下載
- 《Linux設備驅動開發詳解》第9章、Linux設備驅動中的異步通知與異步IO 0次下載
- 《Linux設備驅動開發詳解》第13章、Linux塊設備驅動 18次下載
- 《Linux設備驅動開發詳解》第14章、Linux終端設備驅動 8次下載
- 《Linux設備驅動開發詳解》第16章、Linux網絡設備驅動 5次下載
- 《Linux設備驅動開發詳解》第17章、Linux音頻設備驅動 17次下載
- 《Linux設備驅動開發詳解》第23章、Linux設備驅動的移植 9次下載
- Linux設備驅動開發之設備驅動簡述 0次下載
- Linux設備驅動開發入門
- Linux的設備驅動程序開發
- 嵌入式Linux設備驅動開發
- Linux 驅動開發與應用開發,你知道多少? 119次閱讀
- Linux內核驅動與單個PCI設備的綁定和解綁定 1299次閱讀
- 一文總結linux的platform驅動 783次閱讀
- 如何寫一個Linux設備驅動程序 4314次閱讀
- Linux設備驅動開發的基本知識 4260次閱讀
- Linux驅動到底能不能在應用層開發驅動 6029次閱讀
- 米爾科技Linux設備驅動研究淺談 1913次閱讀
- 米爾科技LINUX設備驅動程序教程 1965次閱讀
- 基于PXA255開發板外圍字符設備的嵌入式Linux字符設備驅動設計與應用 1138次閱讀
- 基于嵌入式Linux內核的系統設備驅動程序開發設計 1113次閱讀
- 基于Linux2.6.30開發DS18B20的驅動程序的類型和文件操作接口函數詳解 1377次閱讀
- 想要駕馭Linux驅動開發,必須深刻理解Linux總線設備驅動框架 1w次閱讀
- 嵌入式Linux驅動開發基礎總結(上篇) 8416次閱讀
- 基于FPGA嵌入式系統的設備驅動開發 2259次閱讀
- 關于Linux設備驅動中input子系統的介紹 2663次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 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數字電路基礎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次下載 | 免費
評論
查看更多