デバイスファイルを作成する方法
1231 ワード
独自の認識エラーを排除し、insmodコマンドはカーネルモジュールをロードするために使用され、mknodはデバイスファイルを作成するために使用されます.
デバイスファイルの作成
①手動作成---mknod
コマンドフォーマット:mknod filename type major minor
パラメータの意味:
filename:デバイスファイル名type:デバイスファイルタイプmajor:プライマリデバイス番号minor:セカンダリデバイス番号
インスタンス:mknod serial 0 c 100
個人的には、手動でデバイスファイルを作成するのは、一般的にテストのために使用されると思います.
②設備ファイルの自動作成
関数プロトタイプ:devfs_register (devfs_handle_t dir,const char *name,unsignedint flags,unsignedint major,unsignedint minor,umode_t mode,void *ops, void *info)
関数機能:指定したディレクトリにデバイスファイルを作成します.
パラメータの意味:
dir:ディレクトリ名、空の表示は/dev/ディレクトリの下で作成されます.
name:ファイル名;
flags:フラグの作成;
major:プライマリ・デバイス番号;
minor:サブデバイス番号;mode:作成モード;
ops:操作関数セット;
info:通常は空です
注意:Linux 2.6.13からdevfsは存在せず、udevはdevfsの代替となる.devfsに比べてudev(mdev)はアプリケーション層に存在する.udev(mdev)を用いてデバイスファイルの自動作成を実現するのは簡単で、駆動初期化のコードでclass_を呼び出すcreateはデバイスにclassを作成し、各デバイスにdevice_を呼び出します.createは対応するデバイスを作成します.
デバイスファイルを自動的に作成する例(udev):
ドライバがロードされるとudev(mdev)は自動的に/devでmy_を作成します.デバイスファイル.
デバイスファイルの作成
①手動作成---mknod
コマンドフォーマット:mknod filename type major minor
パラメータの意味:
filename:デバイスファイル名type:デバイスファイルタイプmajor:プライマリデバイス番号minor:セカンダリデバイス番号
インスタンス:mknod serial 0 c 100
個人的には、手動でデバイスファイルを作成するのは、一般的にテストのために使用されると思います.
②設備ファイルの自動作成
関数プロトタイプ:devfs_register (devfs_handle_t dir,const char *name,unsignedint flags,unsignedint major,unsignedint minor,umode_t mode,void *ops, void *info)
関数機能:指定したディレクトリにデバイスファイルを作成します.
パラメータの意味:
dir:ディレクトリ名、空の表示は/dev/ディレクトリの下で作成されます.
name:ファイル名;
flags:フラグの作成;
major:プライマリ・デバイス番号;
minor:サブデバイス番号;mode:作成モード;
ops:操作関数セット;
info:通常は空です
注意:Linux 2.6.13からdevfsは存在せず、udevはdevfsの代替となる.devfsに比べてudev(mdev)はアプリケーション層に存在する.udev(mdev)を用いてデバイスファイルの自動作成を実現するのは簡単で、駆動初期化のコードでclass_を呼び出すcreateはデバイスにclassを作成し、各デバイスにdevice_を呼び出します.createは対応するデバイスを作成します.
デバイスファイルを自動的に作成する例(udev):
struct class *myclass = class_create(THIS_MODULE, “my_device_driver”);
device_create(myclass, NULL, MKDEV(major_num, 0), NULL, “my_device”);
ドライバがロードされるとudev(mdev)は自動的に/devでmy_を作成します.デバイスファイル.