2. 当然在编写2.6内核驱动程序之前应该已经自己建立好一个2.6的内核源码树(我这里是基于s3c2410移植的源码树,本处该源码是放在宿主机的 /home/src/linux-2.6.16目录下的),如果没有的话,那么需要自己去建立好这个源码树.自己编写的模块化驱动程序可以不放在内核源码之内,但是此外还需要一个自己编写一个Makefile文件(该文件和上面的button.c文件应放在同一个目录下),其内容如下示:
3.在宿主机的终端下,进入驱动程序目录内,敲入命令:
#make
就会在该目录下生成button.ko文件,这就是2.6内核下生成的驱动加载模块,注意是.ko文件,不同于2.4内核下的.o文件.
把该button.ko文件拷贝到目标板上,在minicom终端下进入该文件目录,敲入:
#insmod button.ko
如果终端显示有buttoninitialized则表示加载成功.
这时可以用命令lsmod查看动态加载模块:
#lsmod
当然,可以用如下命令查看devfs文件系统信息:
#cat /proc/devices
如果用卸载该模块,敲入命令:
#rmmod button
4.加载驱动程序后,可以自己再编写一个简单的测试程序,如下:
命名为test.c,并交叉编译该文件:
#arm-linux-gcc test.c -o test
将二进制文件同样拷贝到目标板上,运行:
#./test &
即可看到实验效果.
本文来自: (www.91linux.com) 详细出处参考:http://www.91linux.com/html/article/kernel/20071207/8914_2.html