6410之字元裝置驅動的框架

2021-06-16 13:39:43 字數 1560 閱讀 2624

寫乙個驅動的框架的步驟:

file_operations,用上面的裝置操作函式來填充它

2.通過

register_chrdev將這個file_operations結構體告訴核心。

3.在驅動的入口函式中呼叫register_chrdev,比如first_drv_init

4.用module_init()來修飾入口函式。最終就會將file_operation結構體告訴核心。

舉個例子:

/dev/***是/dev下面的乙個裝置節點:

crw--w---- 1 root root 4, 0 2013-03-23 19:13 /dev/tty0  

左邊的就是該節點的屬性:

c 表示裝置型別為字元裝置

4:主裝置號

下面就是字元裝置驅動的簡單示例:

#include #include #include #include #include #include #include #include static int first_drv_open(struct inode *inode, struct file *file) //裝置節點的相關操作函式

static int first_drv_read(struct file *filp, char __user *buff,

size_t count, loff_t *offp)

static struct file_operations first_drv_fops = ;

static int __init first_drv_init(void)//入口函式

static void __exit first_drv_exit(void)

module_init(first_drv_init);//入口修飾函式

module_exit(first_drv_exit);

module_license("gpl"); //證書

makefile:

obj-m := first_drv.o

kernel_dir ?= /home/shanl/embeded/kernel/linux

all:

make -c $(kernel_dir) m=`pwd` modules //編譯成模組

cp first_drv.ko /home/shanl/embeded/rootfs/box/ko

clean:

make -c $(kernel_dir) m=`pwd` modules clean

rm -rf modules.order

載入模組

cat /proc/devices 從下面可以看到裝置驅動已經載入到核心中

89 i2c

90 mtd

108 ppp

116 alsa

123 first_drv

128 ptm

136 pts

166 ttyacm

180 usb

188 ttyusb

189 usb_device

字元裝置驅動框架

字元裝置驅動框架 一 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...

字元裝置驅動框架

include file operations宣告 include module init module exit宣告 include init exit 巨集定義宣告 include class devise宣告 include copy from user 的標頭檔案 include 裝置號 d...