LINUX驅動框架

2021-10-23 16:30:27 字數 2376 閱讀 4298

#include

#include

#include

#include

#include

#include

#include

#include

// #include

#define led_major 200

#define led_name "new_led"

/*暫存器實體地址*/

#define ccm_ccgr1_base (0x020c406c)

#define sw_mux_gpio1_io03_base (0x020e0068)

#define sw_pad_gpio1_io03_base (0x020e02f4)

#define gpio1_dr_base (0x0209c000)

#define gpio1_gdir_base (0x0209c004)

/*虛擬位址指標*/

static

void __iomem *ccm_ccgr1;

static

void __iomem *sw_mux_gpio1_io03;

static

void __iomem *sw_pad_gpio1_io03;

static

void __iomem *gpio1_dr;

static

void __iomem *gpio1_gdir;

#define led_on 0

#define led_off 1

/*裝置結構體*/

struct new_led_devnew_led;

void

led_switch

(u8 data)

else

if(data == led_off)

}static ssize_t new_led_write (

struct file *file,

const

char __user *buf, size_t count, loff_t *ppos)

led_switch

(data_buf[0]

);return0;

}static

int new_led_release (

struct inode *inode,

struct file *file)

static

const

struct file_operations new_led_fops =

;/*驅動入口*/

static

int __init new_led_init

(void

)else

if(tmp <0)

printk

("led dev major id : %d minor : %d\r\n"

,new_led.major,new_led.minor)

;/*3.註冊字元裝置*/

new_led.cdev.owner = this_module;

cdev_init

(&new_led.cdev,

&new_led_fops)

;//將字元裝置操作集傳遞給cdev結構體中的fops

cdev_add

(&new_led.cdev,new_led.devid,1)

;//新增裝置到linux核心中

/*4.自動建立裝置節點*/

new_led.class =

class_create

(this_module,led_name)

;//建立乙個類if(

is_err

(new_led.class)

) new_led.device =

device_create

(new_led.class,

null

,new_led.devid,

null

,led_name)

;//建立乙個裝置節點if(

is_err

(new_led.device)

)return0;

}static

void __exit new_led_exit

(void

)/*註冊模組*/

module_init

(new_led_init)

;module_exit

(new_led_exit)

;module_license

("gpl");

module_author

("nb666"

);

linux驅動(一) linux驅動框架

編寫linux驅動先看一下驅動框架是什麼樣子的。驅動編寫和應用層編寫有什麼區別呢?一 首先 入口函式的問題。應用層編寫我們的入口就是main函式,但在驅動編寫時不是這樣的,有兩種情況,1 預設情況下 int init init module void 載入模組時的初始化函式,也就是驅動模組的入口函式...

Linux驅動框架 hwmon

寫在前面的話 對於框架,我覺得就是在一定規範的形式下去實現你要的功能。這裡就涉及到乙個變與不變的地方。你所要實現的功能會是千差萬別的 這就是變的地方,而所謂既定的規範,包括建立目錄和屬性檔案這是linux系統已經為我們做好了的,我們只需要直接拿來引用就ok了。那麼今天,我們就來看看hwmon框架是怎...

Linux 裝置驅動框架

1 驅動框架 linux將所有外部裝置看成是一類特殊檔案,稱之為 裝置檔案 如果說系統呼叫是linux核心和應用程式之間的介面,那麼裝置驅動程式則可以看成是linux核心與外部裝置之間的介面。裝置驅動程式向應用程式遮蔽了硬體在實現上的細節,使得應用程式可以像操作普通檔案一樣來操作外部裝置。在應用程式...