字元裝置驅動框架

2021-10-12 12:35:09 字數 1413 閱讀 4290

#include //file_operations宣告

#include //module_init module_exit宣告

#include //__init __exit 巨集定義宣告

#include //class devise宣告

#include //copy_from_user 的標頭檔案

#include //裝置號 dev_t 型別宣告

#include //ioremap iounmap的標頭檔案

#define device_cnt 0 //裝置號個數

struct led_device;

struct led_device led;

static int led_open(struct inode *inode, struct file *filp)

static ssize_t led_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt)

static ssize_t led_read(struct file *filp, char __user *buf, size_t cnt, loff_t *offt)

/* 裝置操作函式 */

static struct file_operations led_fo = ;

static int _init led_init()

else

printk("newcheled major=%d,minor=%d\r\n",newchrled.major, newchrled.minor);

/*2.初始化 cdev 結構體*/

led.led_dev.woner = this_module;

cdev_init(&led.led_dev,&led_fo); //將操作函式初始化到cdev結構體

/*3.應該是向鍊錶中添cdev*/

cdev_add(&led.led_dev,led.devid,device_cnt);

/*4.建立節點*/

led.class = class_create(this_module,led.name); //先建立乙個類

led.device = device_create(led.class,null,led.devid,null); //建立裝置

return 0; }

static void _exit led_exit()

/*註冊字元裝置入口與解除安裝入口*/

module_init(led_init);

module_exit(led_exit);

module_license("gpl v2");

module_author("zhoujianghong");

字元裝置驅動框架

字元裝置驅動框架 一 linux軟體系統的層次關係 乙個應用程式操作底層驅動程式的過程 1 應用程式使用庫提供的 open函式開啟某乙個裝置檔案。2.庫根據 open函式傳入的引數執行 swi 軟體中斷 指令,這會引起 cpu異常,進入核心。3 核心的異常處理函式根據這些引數找到相應的驅動程式,返回...

字元裝置驅動框架

標頭檔案 linux cdev.h linux fs.h 描述字元裝置共性資訊的結構體 struct cdev 操作方法集 struct file operations 裝置號,本質是32位無符號整型數 dev t dev 該裝置號由兩部分組成,1.主裝置號 2.次裝置號 major dev t d...

linux 字元裝置驅動框架

linux 字元裝置驅動是3種型別中最簡單的一種,其實就是實現 file operations 中的函式,基本實現框架如下 1,需要包含的標頭檔案 include include include include include 2.定義及實現 file operations 中的函式,file op...