Linux设备驱动开发 -- 基础知识【一】

实现一个嵌入式Linux设备驱动程序的大致流程如下:

  1. 查看原理图,理解相应设备的工作原理。
  2. 定义主设备号。主设备号唯一标识了设备类型,即驱动程序类型。
  3. 编写驱动程序初始化函数和退出函数,实现驱动的注册和卸载。驱动程序的初始化在init()中完成,包括对硬件初始化,中断函数,向内核注册驱动程序等等。在关闭设备时需要有清除函数,在exit()函数中通过调用unregister函数实现。
  4. 设计所要实现的函数。Linux操作系统将所有的设备都看成文件,以操作文件的方式访问设备。应用程序不能直接操作硬件,使用统一的接口函数调用硬件驱动程序,如open,close,read,write等函数。
  5. 设备的中断和轮询处理。对于不支持中断的设备,读写时需要轮询设备状态,以及是否需要继续进行数据传输。如果设备支持中断,在使用中断前要先请求一个中断通道(或者IRQ中断),并在使用后释放它。通过request_irq()函数来注册中断,free_irq()函数来释放。
  6. 调试驱动程序:方法一般有两种:1)编译该驱动程序到内核中;2)通过模块方式加载,也就是利用insmod 加载驱动模块。第一种方式需要的时间比较久,不利于多次调试,调试我们还是比较常用第二种方式,方便快捷。

系统调用时操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,他完成以下功能:

1)对设备初始化和释放

2)把数据从内核传送到硬件和从硬件读取数据

3)读取应用程序传送给设备文件的数据和回送应用程序请求的数据

4)检测和处理设备出现的错误

你可能感兴趣的:(Linux,Linux驱动开发)