/proc/devices/下的設備是驅動程序生成的,它可產生一個major供mknod作為參數。 /dev/下的設備是通過mknod加上去的,用戶通過此設備名來訪問驅動。 The following script, scull_load, is part of the scull distribution. The user of a driver that is distributed in the form of a module can invoke such a script from the system's rc.local file or call it manually whenever the module is needed. #!/bin/shmodule="scull" device="scull" mode="664" # invoke insmod with all arguments we got # and use a pathname, as newer modutils don't look in . by default /sbin/insmod ./$module.ko $* || exit 1 # remove stale nodes rm -f /dev/${device}[0-3] major=$(awk "\\$2= =\"$module\" {print \\$1}" /proc/devices) mknod /dev/${device}0 c $major 0 mknod /dev/${device}1 c $major 1 mknod /dev/${device}2 c $major 2 mknod /dev/${device}3 c $major 3 # give appropriate group/permissions, and change the group. # Not all distributions have staff, some have "wheel" instead. group="staff" grep -q '^staff:' /etc/group || group="wheel" chgrp $group /dev/${device}[0-3] chmod $mode /dev/${device}[0-3]
|
請 問:linux環境下,/dev/目錄下的內容與/proc/下文件devices中的內容有什么區別?我在目標板上做實驗時發現,當我向板子上加載驅動 模塊時,devices文件中有變化,而/dev下根本沒有變化,/dev/下不也應該是設備接點嗎,為什么為模塊建立設備接點時,/dev/下卻沒有變 化呢?
請各位幫幫忙,謝謝!!!
/proc/devices/中的設備是通過insmod加載到內核的,它可產生一個major供mknod作為參數。
/dev/*.* 是通過mknod加上去的,格式:mknod device1 c/b major minor 如:mknod dr1 c 254 0,用戶通過此設備名來訪問你的驅動。
請 問:linux環境下,/dev/目錄下的內容與/proc/下文件devices中的內容有什么區別?我在目 標板上做實驗時發現,當我向板子上加載驅動模塊時,devices文件中有變化,而/dev下根本沒有變化,/dev/下不也應該是設備接點嗎,為什么為 模塊建立設備接點時,/dev/下卻沒有變化呢?
請各位幫幫忙,謝謝!!!
/proc/devices/中的設備是通過insmod加載到內核的,它可產生一個major供mknod作為 參數。
/dev/*.* 是通過mknod加上去的,格式:mknod device1 c/b major minor 如:mknod dr1 c 254 0,用戶通過此設備名來訪問你的驅動。
對於每種硬件設備,系統內核有相應的設備驅動程序負責對它的處理。而在Unix 中,使用設備文件的方式來表示硬件設備, 每種設備驅動程序都被抽象 為設備文件的形式,這樣就給應用程序一個一致的文件界面,方便應用程序和操作系統之間的通信。
習慣上,所有的設備文件 都放置在 /dev 目錄下。
/proc/devices/中的設備是通過insmod加載到內核的,它可產生一個major供mknod作為 參數 。
/dev/*.* 是通過mknod加上去的,格式:mknod device1 c/b major minor 如:mknod dr1 c 254 0,用戶通過此設備名來訪問你的驅動。
mknod - make block or character special files
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
option 有用的就是 -m 了
name 自定義
type 有 b 和 c 還有 p
主設備號
次設備號
主 設備號是由/usr/src/linux/include/linux/major.h定義的,如下定義了一個DOC設備:
#define IGEL_FLASH_MAJOR 62
假如有一個命令mknod doc b 62 0 :
其中的doc為定義的名 字,b指塊設備,0指的是整個DOC。如果把0換為1,則1指的是DOC的第一個分區。2是第2個,依次類推。