linux裝置模型中的class

2021-06-07 09:19:23 字數 2573 閱讀 3724

在linux下使用class的功能

硬/軟體環境:s3c2440/linux-2.6.36/busybox-1.18.4/arm-linux-gcc 4.4.3

下面是模組的c**:

#

include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

<

asm/io.h>

module_license(

"gpl");

module_author(

"zhanglong");

//----------------------------

struct

class

*zl_class;

struct class_device *test_cla_dev;

struct zl_device

;struct zl_device zl_dev =

;int test_init(

void

)void test_exit(

void

)module_init(test_init)

;module_exit(test_exit)

;

下面是makefile檔案內容:

#kernel    = /home/zl/my2440-2.6.13

kernel    = /media/study/linux/kernel/my2440-2.6.36

#kernel    = /lib/modules/$(shell uname -r)

/build

default:

make -c $(kernel) m=

$(shell pwd) modules

clean:

make -c $(kernel) m=

$(shell pwd) modules clean

modules_install:

make -c $(kernel) m=

$(shell pwd) modules_install install_mod_path=

/home/zl/s3c2440_nfs

depmod -a -b /home/zl/s3c2440_nfs 2.6.36-my2440

obj-m    +

= driver.o

執行make命令後,「insmod driver.ko」插入模組後

在/sys/class目錄下有相應名稱的資料夾zl_class生成(執行class_create函式後)

在/sys/class/zl_class目錄下有zldev_name資料夾生成(執行device_create函式後)

由於已經啟用了mdev, /dev目錄下會有名為zldev_name的裝置檔案生成,其裝置號是device_create函式中傳入的裝置號。

/sys/devices/virtual #

/sys/devices/virtual # ls -l zl_class/zldev_name/

total 0

-r--r--r--    1 root     root          4096 may 16 14:12 dev

drwxr-xr-x    2 root     root             0 may 16 14:13 power

lrwxrwxrwx    1 root     root             0 may 16 14:13 subsystem -> ../../../../class/zl_class

-rw-r--r--    1 root     root          4096 may 16 14:13 uevent

/sys/devices/virtual #

/sys/class #

/sys/class # ls -l zl_class/zldev_name/

total 0

-r--r--r--    1 root     root          4096 may 16 14:12 dev

drwxr-xr-x    2 root     root             0 may 16 14:13 power

lrwxrwxrwx    1 root     root             0 may 16 14:13 subsystem -> ../../../../class/zl_class

-rw-r--r--    1 root     root          4096 may 16 14:13 uevent

/sys/class #

/dev #

/dev # ls -l zldev_name

crw-rw----    1 root     root       52,   0 may 16 14:12 zldev_name

/dev #

Linux裝置模型

linux裝置驅動模型 我們在寫最簡單的裝置驅動程式的時候,我們將所有的硬體資訊都儲存在了驅動 中,這樣有乙個非常明顯的不足 會導致驅動程式的通用性極差,一旦硬體平台或硬體連線有鎖改變,就一定要修改驅動 為了解決這個問題,linux在2.6版本之後,新增了 匯流排 裝置 驅動 的linux裝置模型,...

linux裝置模型

linux核心的整體架構 linux裝置模型 linux裝置模型 1 基本概念 linux裝置模型 2 kobject linux裝置模型 3 uevent linux裝置模型 4 sysfs linux裝置模型 5 device和device driver linux裝置模型 6 bus linu...

linux裝置模型中ktype的用法

在上篇 利用udev sys動態建立裝置結點 的記錄中,裝置驅動中主要依靠下面兩個功能完成的 1 在 sys class下建立farsight class類 my class class create this module,farsight class 2 在farsight class中建立新的...