分类: LINUX
2013-01-18 22:17:46
本次OK6410开发板按键驱动在Linux 3.6.7的移植基本上拷贝这篇文章:http://blog.sina.com.cn/s/articlelist_1667912967_6_1.html(基于platform的ok6410按键中断实验),所以照这篇文章做就可以了。
1.创建基于平台的按键设备模块:
在arch/arm/mach-s3c64xx/目录下新建plat_btn_device.c,修改Makefile,末尾加入obj-m +=plat_btn_device.o
2.创建基于平台的按键驱动模块:
在drivers/char/目录下新建plat_btn_driver.c,加入#include
3.创建基于平台的按键应用程序:
在/test/目录下新建app-button.c,加入修改Makefile,如下:
CROSS=arm-linux-
CFLAGS= -Wall -O2
all: buttons
buttons: buttons.c
$(CROSS)gcc $(CFLAGS) $< -o $@
clean:
@rm -rf buttons *.o
4.编译:
4.1编译生成按键设备和驱动模块
在linux 3.6.7主目录下执行make modules后就会在arch/arm/mach-s3c64xx/目录下生成plat_btn_device.ko模块,在drivers/char/目录下生成plat_btn_driver.ko模块
4.2编译生成按键应用程序
在linux 3.6.7/test/目录下执行make,生成buttons可执行文件
5.把plat_btn_device.ko和plat_btn_driver.ko拷贝到yaffs2根文件系统目录(我的叫做mdev)下lib/modules/目录下
把buttons可执行文件拷贝到mdev下usr/bin/目录下
在mdev/dev/目录下创建设备节点mknode buttons c 232 0
6.生成新的yaffs2根文件下载到开发板,开机进入系统后加载按键设备模块和按键驱动模块再运行buttons程序,就可以看到结果了。如下
[root@STANzxd /]# cd lib/modules/
[root@STANzxd modules]# ls
3.6.7 ok6410_buttons.ko
dev-ok6410-buttons.ko ok6410_leds.ko
[root@STANzxd modules]# insmod dev-ok6410-buttons.ko
[root@STANzxd modules]# insmod ok6410_buttons.ko
ok6410 Buttons Driver
probe:ok6410_buttons_probe
[root@STANzxd modules]# buttons
buttons_value: 1
buttons_value: 2
buttons_value: 2
buttons_value: 3
buttons_value: 4
buttons_value: 4
buttons_value: 4
buttons_value: 4
buttons_value: 5
buttons_value: 6