在学习LDD过程中,发现自己要写一个驱动程序很麻烦,老是要做重复的工作。于是在scull驱程的基础上写了一个shell脚本,用以生成新驱程的Makefile, load脚本, unload脚本及主要的.c文件。
在ModuleScripts下有5个文件:
- genmod.sh
- module_load
- module_make
- module_src
- module_unload
进入ModuleScripts目录,运行./genmod.sh NEW_MODULE_NAME,会生成包含驱动程序各种文件的新目录,如下:
jackz@jackz-laptop:~/ModuleScipts$
./genmod.sh chardevjackz@jackz-laptop:~/ModuleScipts$
lschardev genmod.sh module_load module_make module_src module_unload
可以看到生成了新目录chardev.进入chardev目录,运行make:
jackz@jackz-laptop:~/ModuleScipts/chardev$
lschardev.c chardev_load.sh chardev_unload.sh Makefile jackz@jackz-laptop:~/ModuleScipts/chardev$
make看看生成的.ko文件:
jackz@jackz-laptop:~/ModuleScipts/chardev$
ls chardev.c chardev_load.sh chardev.mod.o chardev_unload.sh Module.symvers
chardev.ko chardev.mod.c chardev.o Makefile
好,现在把新模块加入内核:
jackz@jackz-laptop:~/ModuleScipts/chardev$
sudo ./chardev_load.sh jackz@jackz-laptop:~/ModuleScipts/chardev$
lsmod | grep chardevchardev 3976 0
jackz@jackz-laptop:~/ModuleScipts/chardev$
cat /proc/devices | grep chardev252 chardev
jackz@jackz-laptop:~/ModuleScipts/chardev$
ls -l /dev/chardev crw-rw-r-- 1 root staff 252, 0 2009-12-10 11:08 /dev/chardev
从上面输出可以看出,chardev_load脚本把chardev加载入内核,并建立了设备文件/dev/chardev。
把新模块从内核中删除:
jackz@jackz-laptop:~/ModuleScipts/chardev$
sudo ./chardev_unload.sh 在所生成的chardev.c中,已经写好了一个字符设备驱动的框架,默认情况下这个设备什么也不做,只是提供了init, exit函数,及file_operations的接口open, release, read, write,可以根据需要往这个文件添加代码。
这个脚本在Ubuntu 8.04 (linux-2.6.24)上测试通过。
|
文件: | ModuleScipts.tar.gz |
大小: | 2KB |
下载: | 下载 |
|
阅读(993) | 评论(0) | 转发(0) |