多语言展示
当前在线:176今日阅读:176今日分享:34

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

LINUX中,对设备的管理采用文件管理的形式,本经验介绍如何编写自己的驱动程序,并加载到系统中。
工具/原料

LINXU操作系统

方法/步骤
1

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

2

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

3

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

4

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

5

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

6

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

7

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

8

加载到内核中    运行#make后,就会编译生成了内核文件my_driver.ko,我们使用以下命令,将其加载到内核中 #sudo insmod my_driver.ko  //超级模式下加载驱动#lsmod | grep 'my_driver'  //检查是否加载成功#sudo rmmod my_driver.ko//卸载驱动

注意事项
1

Makefile中的空格,需要用“tab”键

2

LINXU中,需要区分大小写。

推荐信息