点亮LED灯驱动编写过程

1. 实现led_open,led_ioctl(),led_read,led_write(),这些函数。
2. 定义一个file_operation结构体,这里的open指向led_open,read指向 led_read。
3. 入口函数s3c24xx_leds_init()中,用register_chrdev(主设备号,名字,file_operation)
把这个结构体放到内核的字符设备数组中。
4. 定义出口函数s3c24xx_leds_exit(),卸载驱动,unregister_chrdev();
5. 指定驱动程序的初始化函数和卸载函数。
module_init(s3c24xx_leds_init); //insmod加载驱动时就会执行这个。
module_exit(s3c24xx_leds_exit); //rmmod卸载驱动的时候会执行这个。
6. 将驱动程序放入到内核的 /drivers /char/ 的子目录下,在 /drivers /char/ 目录中的Makefile中添加一行:
obj-m += s3c24xx_leds.o
然后再内核的根目录下执行: make modules 然后生成模块 /drivers/char/ s3c24xx_leds.ko
把它放到单板文件系统中的/lib/modules/2.6.22.6/ 中,就可以使用insmod和rmmod了。
7..加载驱动程序insmod;就会掉用到s3c24xx_leds_init()。
8,在linux文件系统中创建设备节点,mknod /dev/leds ;mdev自动创建。(busybox)
9,编写应用程序测试
fd = open("/dev/leds" , 0); //打开设备,进行初始化操作。
ioctl(fd , cmd , args); // cmd为ON(0)或者OFF(1),args为哪个led。

你可能感兴趣的:(点亮LED灯驱动编写过程)