嵌入式裝置驅動 自動建立裝置節點

2021-09-24 01:44:12 字數 1787 閱讀 6271

//主要用到的四個方法在linux/device.h定義:

//建立類和釋放類的函式 建立成後將建立/sys/class/name資料夾

extern struct class *class_create(struct module *owner, const char *name);

extern void class_destroy(struct class *cls);

//在低版本的核心提供class_device_create來建立裝置節點 和 刪除裝置的方法

extern struct class_device *class_device_create(struct class *cls,

struct class_device *parent,

dev_t devt,

struct device *device,

const char *fmt, ...)

__attribute__((format(printf,5,6)));

extern void class_device_destroy(struct class *cls, dev_t devt);

//在高版本的核心提供device_create來建立裝置節點 和 刪除裝置的方法

extern struct device *device_create(struct class *cls,

struct device *parent,

dev_t devt, void *drvdata,

const char *fmt, ...)

__attribute__((format(printf, 5, 6)));

extern void device_destroy(struct class *cls, dev_t devt);

//如果你不知道你的到底哪個函式,可以直接到核心頭檔案目錄下找device.h,搜尋一下定義的是哪個函式

#include #include #include #include #include #include module_author("my name");

module_license("dual bsd/gpl");

static int major_i=66;

static int minor_i=0;

struct class* mclass;

static int node_init(void)

/*class_device_create 在/dev下建立 noddev0裝置*/

device_create(mclass,null,mkdev(major_i,minor_i),null,"noddev0");

/*這裡最後乙個引數可以用格式化引數 const char *fmt, ...*/

device_create(mclass,null,mkdev(major_i,minor_i+20),null,"noddev%d",minor_i+20);

printk(kern_alert "create node success:\n");

printk(kern_alert " ls -l /dev/noddev*\n");

printk(kern_alert " ls -l /sys/class/noddev\n");

return 0;}

static void node_exit(void)

module_init(node_init);

module_exit(node_exit);

linux字元裝置驅動中自動建立裝置節點

簡述 1 裝置號 驅動等概念性問題 2 裝置號的自動分配和手動指定 3 mknode手動建立節點。編碼實現 1 核心點 要使的驅動能夠在載入時自動完成裝置節點的註冊,主要流程如下 驅動載入時完成如下工作 分配裝置號 註冊字元裝置 動態建立裝置節點。驅動解除安裝時完成如下工作 刪除裝置節點 取消字元裝...

4412驅動 led驅動 自動建立裝置節點

驅動 include include include include file operations include include request mem region include include class create device create define devname ldm st...

關於驅動模組自動建立裝置節點

linux 2.6 引入了動態裝置管理,用udev作為裝置管理器 應用在x86 相比之前的靜態裝置管理,在使用上更加方便靈活。udev根據sysfs系統提供的裝置資訊實現對 dev目錄下裝置節點的動態管理,包括裝置節點的建立 刪除等 引入udev自動建立裝置節點後,比如在我們使用的insmod le...