#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...