Linux驱动编写的方法学习


/* GPRS驱动的操作函数集 */struct file_operations gprs_fops = {.owner= THIS_MODULE,.read= gprs_read,.write= gprs_write,.open= gprs_open,.release= gprs_release,};

这个结构的每一个成员的名字都对应着一个系统调用。用户进程利用系统调用在对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数,这是linux的设备驱动程序工作的基本原理。编写设备驱动程序的主要工作就是编写子函数,并填充file_operations的各个域。

注意:在用户进程调用驱动程序是,系统进入核心态,这是不再是抢先式调度。也就是说,系统必须在驱动程序的子函数返回后才能进行其他的工作。如果此时驱动程序陷入死循环,不幸的是只能重新启动机器了。

编译:$gcc -O2 -DMODULE -D__KERNEL__ -c test.c 得到文件test.o就是一个设备驱动程序。如果设备驱动程序有多个文件,把每个文件编译后,$ld -r file1.0 file2.0 -o modulename将驱动程序安装到系统:insmod -f test.o如果安装成功,会在/proc/devices文件中就可以看到设备test,并可以看到他的主设备号。 cat /proc/devices卸载:rmmod test创建设备文件:mknod /dev/test c major minor

最好的感觉就是你什么都跟我说。

Linux驱动编写的方法学习

相关文章:

你感兴趣的文章:

标签云: