字元裝置實現控制led的驅動

2021-06-07 09:19:23 字數 2099 閱讀 2039

乙個led驅動,做個記號

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

下面是模組c**:

#include

#include

#include

#include

#include

#include

module_license("gpl");

module_author("zhanglong");

/** 板子上的led1,2,4,8分別對應連在gpf4,5,6,7上

**gpfcon ==> 0x56000050

*gpfdat ==> 0x56000054

*gpfup ==> 0x56000058**/

#define io_phys 0x56000000

#define gpfcon_offset   0x50

#define gpfdat_offset   0x54

#define gpfup_offset   0x58

struct led_device_s ;

struct led_device_s  my_led[4];

ssize_t my_write(struct file *fp, const char __user *buf, size_t count, loff_t *off)

else

return  4;

}ssize_t my_read(struct file *fp, char __user *buf, size_t count, loff_t *off)

int my_open(struct inode *no, struct file *fp)

int my_release(struct inode *no, struct file *fp)

struct file_operations my_ops = ;

int test_init(void)

ret = register_chrdev_region(my_led[0].no, 4, "my dev");

if (ret)

for (i = 0; i < 4; i ++)

return ret;

}void test_exit(void)

unregister_chrdev_region(my_led[0].no, 4);   

}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

obj-m    +

=test

.o

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

echo 1 > led0_node

echo 0 > led0_node

echo 1 > led1_node

echo 0 > led1_node

echo 1 > led2_node

echo 0 > led2_node

echo 1 > led3_node

echo 0 > led3_node

即可使led滅或亮

其中led0_node,led1_node,led2_node,led3_node必須是字元裝置檔案,主,次裝置號分別為(52,0)(52,1)(52,2)(52,3)

led0_node,led1_node,led2_node,led3_node對應的gpf4,5,6,7控制的led

LED字元裝置驅動

一 實驗環境 開發機環境 作業系統 ubuntu 10.10 交叉編譯環境 arm linux gcc 4.4.1,安裝位置 usr local arm 4.4.1 6410板子核心原始碼路徑 work linux 2.6.36.2 v1.05 目標板環境 ok6410 a linux2.6.36 ...

字元裝置驅動 Led

驅動檔案 使用linux3.2.81核心 include include include include include include include include include include include static struct class ledsdrv class 類結構體 st...

字元裝置驅動 LED型

字元驅動程式 對於led型別的字元裝置驅動函式編寫 1 建立乙個file operation結構體,裡面會有點燈操作的各個硬體操作函式 2 編寫乙個drv init 函式 3 要對drv init函式進行修飾為入口函式,告訴核心,載入驅動時進行掛接 4 有init函式,那麼也會有出口函式exit m...