以装载和卸载模块为例:
1、首先输入代码
#include <linux/init.h>
#include <linux/module.h>
2、然后输入下方的代码:
static int my_init(void)
{
return 0
}
static void my_exit(void)
3、然后在输入下方的代码:
{
return
}
module_init(my_init)
module_exit(my_exit)这样就完成了。
1、将驱动程序文件bcm5700src.rpm复制到一个临时目录中,并在此目录中运行以下命令;
2、运行以下命令切换到驱动目录中;
3、此目录中会生成一个名字为bcm5700.spec的文件,运行以下命令对驱动程序进行编译;
4、运行以下命令切换到RPM目录中;
5、运行以下命令安装驱动程序;
6、运行以下命令加载驱动模块;
7、运行kudzu命令,系统会自动搜索到硬件,进行配置即可。
linux是文件型系统,在linux中,一切皆文件,所有硬件都会在对应的目录(/dev)下面用相应的文件表示。 文件系统的linux下面,都有对于文件与这些设备关联的,访问这些文件就可以访问实际硬件。 通过访问文件去 *** 作硬件设备,一切都会简单很多,不需要再调用各种复杂的接口。 直接读文件,写文件就可以向设备发送、接收数据。 按照读写存储数据方式,我们可以把设备分为以下几种:字符设备(character device)、块设备(Block device)和网络设备( network interface)。
字符设备(character device):指应用程序采用字符流方式访问的设备。这些设备节点通常为传真、虚拟终端和串口调制解调器、键盘之类设备提供流通信服务, 它通常只支持顺序访问。字符设备在实现时,大多不使用缓存器。系统直接从设备读取/写入每一个字符。
块设备(Block device):通常支持随机存取和寻址,并使用缓存器,支持mount文件系统。典型的块设备有硬盘、SD卡、闪存等,但此类设备一般不需要自己开发,linux对此提过了大部分的驱动。
网络设备(network interface):是一种特殊设备,它并不存在于/dev下面,主要用于网络数据的收发。网络驱动同块驱动最大的不同在于网络驱动异步接受外界数据,而块驱动只对内核的请求作出响应。
上述设备中,字符设备驱动程序适合于大多数简单的硬件设备,算是各类驱动程序中最简单的一类,一般也是从这类驱动开始学习,然后再开始学习采用IIC、SPI等通讯接口的一些设备驱动。可以基于此类驱动调试LKT和LCS系列加密芯片。注意7位IIC地址是0x28。
对于Linux底层驱动的简单认知底层驱动是让设备工作的基本程序,它给用户提供了一个使用这个设备的接口。就拿树莓派来说,如果我们想要用它的那40Pin中的某个GPIO口,但是那个IO口没有相应的驱动程序给我们 *** 作,这时,无论如何我们都无法 *** 作IO口,wiringPi库到了最后也是要通过相应的驱动程序去 *** 作IO的。因为底层驱动会 *** 作CPU的与该设备相关的寄存器,实现驱动功能,这就是底层驱动。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)