编写自己的LINUX驱动并加载到系统中

2025-06-02 07:33:57

1、Linux下的设备大体分为三类:(1)块设备: 一次I/O涠础险渥操作以固定大小的数据块为单位,块设备通过缓冲区读写,如硬盘。(2)字符设备:直接读取的,不必使用缓犟峄烟锭冲区,如串口。(3)网络设备:Linux使用套接口(socket)以文件I/O方式提供了对网络数据的访问。

2、虚拟文件系统 Linux使用虚拟文件系统VFS(Virtual File System)做为统一的操作接口来处理文件和设备。 每个设备文件与普通的目录和文件一样,可用一个file结构来表示。其属性包括:文件名、设备类型、主设备号、次设备号。

编写自己的LINUX驱动并加载到系统中

3、file_operations结构体 通过file_operations来调用驱动程序的设备服务子程序。如:write( ) 函数:向设备发送数据,read()函数:从设备中读取数据。

编写自己的LINUX驱动并加载到系统中

4、查看当前设备#cd /dev#ls -l

编写自己的LINUX驱动并加载到系统中

5、查看设备的相关命令# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lsusb -tv # 列出所有USB设备# env # 查看环境变量

编写自己的LINUX驱动并加载到系统中

6、编写源代码my_driver.c 在my_driver.c中编写源代码,它是一个非常简单的设备驱动程序代码框架,其任务是将内核模块中的init函数动态地注册到系统中并运行,由module_init()实现驱动的加载,由module_exit()实现驱动的卸载

编写自己的LINUX驱动并加载到系统中

7、Makefile及编译编写Makefile,将源代码编译,其粝简肯惧内容如下:-------------------------------------------------ob枣娣空郅j-m+=my_driver.oall: make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modulesclean: make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean---------------------------------------------其中my_driver.o就是目标文件,make工具会根据目标文件自动推导来编译my_driver.c文件。

编写自己的LINUX驱动并加载到系统中

8、加载到内核中 运行#make后,就会编译生成了内核文件my_dr坡纠课柩iver.ko,我们使用以下命令,将其加载到内核中垆杪屑丝#sudo insmod my_driver.ko //超级模式下加载驱动#lsmod | grep "my_driver" //检查是否加载成功#sudo rmmod my_driver.ko//卸载驱动

编写自己的LINUX驱动并加载到系统中
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢