LED驅動 misc裝置驅動例項

2021-05-23 23:21:20 字數 2157 閱讀 2657

作為misc裝置驅動的乙個例項,我選擇最簡單的led的驅動。下面簡要記錄下led驅動的編寫和實驗過程。

1、建立資料夾led

2、在led資料夾下編寫led驅動程式leds.c

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define device_name "wjbleds"

static unsigned long led_table = ;

static unsigned int led_cfg_table = ;

static int sbc2440_leds_ioctl(

struct inode *inode,

struct file *file,

unsigned int cmd,

unsigned long arg)

s3c2410_gpio_setpin(led_table[arg], !cmd);

return 0;

default:

return -einval;}}

static struct file_operations dev_fops = ;

static struct miscdevice misc = ;

static int __init dev_init(void)

ret = misc_register(&misc);

printk(device_name"/tinitialized/n");

return ret;

}static void __exit dev_exit(void)

module_init(dev_init);

module_exit(dev_exit);

module_license("gpl");

module_author("wjb");

3、makefile檔案

同樣在led資料夾下編寫makefile檔案如下:

ifneq ($(kernelrelease), )

obj-m := leds.o

else

kdir := /usr/src/linux-2.6.32.2

all:

make -c $(kdir) m=$(pwd) modules arch=arm cross_compile=arm-linux-

clean:

rm -f *.ko *.o *.mod.o *.mod.c *.symvers

endif

4、執行make

這時候,會在led資料夾下生成leds.ko檔案。

5、編寫應用程式

#include

#include

#include

#include

main(int argc, char **argv)

fd = open("/dev/wjbleds", 0);

if(fd < 0)

ioctl(fd, on, led_no);

close(fd);

return 0;

}6、編譯應用程式

7、在開發板測試

2)使用insmod leds.ko註冊我們的led驅動。這時候,會發現「wjbleds initialized」被列印出來了。在/dev/目錄下也會發現我們的裝置wjbleds已經存在了。這時候通過cat /proc/misc命令,我們發現wjbleds裝置已經作為misc裝置存在了。

3)禁掉系統本身的led服務。因為啟動起來後,系統本身會啟動乙個服務,使四個led不斷地迴圈閃爍,這個服務影響了我們對自己的led驅動的測試,所以測試led驅動前,需要將其關閉。關閉方法為:#/etc/rc.d/init.d/leds stop

字元裝置驅動之LED 混雜裝置驅動(misc)

misc led.c include include include include include include include include include include include static volatile unsigned long gpfcon volatile unsig...

misc雜項裝置驅動

linux裡面的misc雜項裝置是主裝置號為10的驅動裝置,它的註冊跟使用比較的簡單,所以比較適用於功能簡單的裝置。它有自己的裝置結構體 struct miscdevice 它在標頭檔案linux miscdevice.h裡面有定義,其中minor是misc裝置的副裝置號,misc裝置主要依賴min...

misc裝置驅動模型及例項解析

1 misc裝置驅動模型 本節我們來看一下misc裝置驅動模型的有關內容,首先是看看它的裝置結構體,定義在include linux miscdevice.h中 cpp view plain copy struct miscdevice 結構體中的部分成員我們是一目了然的,主要是來看看有疑惑的幾點 ...