Osboy觀點:本帖子您應該學到的知識 點就是 ,什么是字符型設備,塊型設備,網絡 設備,和mtd設備驅動的特點。大家可以根據該帖子提出的觀點,baidu,google進行擴展閱讀。
Linux設備驅動程序在Linux的內核源代碼中占有很大的比例,源代碼的長度日益增加,主要是驅動程序的增加。在Linux內核的不斷升級過程中,驅動程序的結構還是相對穩定。Linux設備驅動架構的不斷發展中始終堅持的基本思想就是盡量抽取設備特性的共同點,把最復雜的設備驅動架構程序代碼交給Linux的內核和驅動子系統開發人員,而留給Linux的驅動編寫者更少的工作并使設備更趨于完美的工作。
Osboy覺得:說白了就是Linux開發人員盡量把一些設備驅動所涉及到的共性包裝起來,建立完善的設備驅動架構,而讓我們這種驅動開發者只需要寫很少的代碼就能完成設備驅動的編寫,而且我們的確是從Linux的這個思想上得到的益處。比如usb驅動,sd卡驅動,Linux已經根據sd卡,usb協議實現了所有代碼,而留給我們的只需要告訴usb,sd卡設備的寄存器的真實地址,和設置很少的clock等針對特定某款芯片所作的寄存器設置。
Linux系統的設備分為 字符設備(char device),塊設備(block device)和網絡設備(network device)三種。字符設備是指存取時沒有緩存的設備。塊設備的讀寫都有緩存來支持,并且塊設備必須能夠隨機存取(random access),字符設備則沒有這個要求。典型的字符設備包括鼠標,鍵盤,串行口等。塊設備主要包括硬盤軟盤設備,CD-ROM等。一個文件系統要安裝進入操作系統必須在塊設備上。
網絡設備在Linux里做專門的處理。Linux的網絡系統主要是基于BSD unix的socket機制。在系統和驅動程序之間定義有專門的數據結構(sk_buff)進行數據的傳遞。系統里支持對發送數據和接收數據的緩存,提供流量控制機制,提供對多協議的支持。
Osboy認為:這里有必要闡述下MTD設備驅動,mtd驅動是所有nand,norflash驅動的基礎,在linux設備驅動中算是比較出名而且比較容易編譯的一類驅動程序,該驅動的特性就是既有塊設備驅動的特性,也有字符型設備驅動的特點。比如說我們可以操作塊設備節點mtdblock0,也可以操作字符型設備驅動節點mtd0來對mtd類型的設備進行操作 更多資訊可加交流群QQ277686564 QQ2905283896
|