• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式Linux設備驅動開發之:設備驅動概述

    嵌入式Linux設備驅動開發之:設備驅動概述

    作者: 時間:2013-09-13 來源:網絡 收藏

    本文引用地址:http://www.czjhyjcfj.com/article/257112.htm

    通過文件屬性可以查看它們是哪種設備文件(字符設備文件或塊設備文件)。

    $ls–l/dev

    crw-rw----1rootuucp4,6408-3022:58ttyS0/*串口設備,c表示字符設備*/

    brw-r-----1rootfloppy2,008-3022:58fd0/*軟盤設備,b表示塊設備*/

    n 網絡設備通常是指通過網絡能夠與其他主機進行數據通信的設備,如網卡等。

    內核和網絡程序之間的通信調用一套數據包處理函數,它們完全不同于內核和字符以及塊程序之間的通信(read()、write()等函數)。Linux網絡設備不是面向流的設備,因此不會將網絡設備的名字(例如eth0)映射到文件系統中去。

    對這3種設備文件編寫驅動程序時會有一定的區別,本書在后面會有相關內容的講解。

    11.1.3設備號

    設備號是一個數字,它是設備的標志。就如前面所述,一個設備文件(也就是設備節點)可以通過mknod命令來創建,其中指定了主設備號和次設備號。主設備號表明設備的類型(例如串口設備、SCSI硬盤),與一個確定的驅動程序對應;次設備號通常是用于標明不同的屬性,例如不同的使用方法、不同的位置、不同的操作等,它標志著某個具體的物理設備。高字節為主設備號,底字節為次設備號。

    例如,在系統中的塊設備IDE硬盤的主設備號是3,而多個IDE硬盤及其各個分區分別賦予次設備號1、2、3…

    $ls–l/dev

    crw-rw----1rootuucp4,6408-3022:58ttyS0/*主設備號4,此設備號64*/

    11.1.4驅動層次結構

    Linux下的程序是內核的一部分,運行在內核模式下,也就是說設備驅動程序為內核提供了一個I/O接口,用戶使用這個接口實現對設備的操作。圖11.1顯示了典型的Linux輸入/輸出系統中各層次結構和功能。

    圖11.1Linux輸入/輸出系統


    層次結構和功能

    Linux設備驅動程序包含中斷處理程序和設備服務子程序兩部分。

    設備服務子程序包含了所有與設備操作相關的處理代碼。它從面向用戶進程的設備文件系統中接受用戶命令,并對設備控制器執行操作。這樣,設備驅動程序屏蔽了設備的特殊性,使用戶可以像對待文件一樣操作設備。

    設備控制器獲得系統服務有兩種方式:查詢和中斷。因為Linux的設備驅動程序是內核的一部分,在設備查詢期間系統不能運行其他代碼,查詢方式的工作效率比較低,所以只有少數設備如軟盤驅動程序采取這種方式,大多設備以中斷方式向設備驅動程序發出輸入/輸出請求。

    linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

    linux相關文章:linux教程




    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 梁山县| 商洛市| 东乌珠穆沁旗| 改则县| 涡阳县| 汶川县| 杂多县| 稷山县| 兰溪市| 兰西县| 全椒县| 喀喇| 柳林县| 克拉玛依市| 吕梁市| 年辖:市辖区| 尼玛县| 遵义市| 麦盖提县| 吴江市| 浦江县| 海安县| 庐江县| 马鞍山市| 沂源县| 红桥区| 蓝山县| 金坛市| 武冈市| 奉新县| 富顺县| 吴江市| 安陆市| 桐柏县| 台江县| 江城| 青冈县| 周至县| 通道| 武乡县| 会昌县|