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