在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中建立新的...