驱动学习之驱动体验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了驱动学习之驱动体验相关的知识,希望对你有一定的参考价值。

1:什么是linux驱动

    从本质上讲,驱动就是属于内核层面的程序代码,是直接和硬件打交道的。与裸机中直接操作寄存器去操作硬件的不同之处在于,裸机中操作的是物理内存,而我们在驱动中操作的是虚拟内存,驱动中还可以调用内核中提供的很多接口函数来简化我们操作硬件的过程。

2:linux设备驱动的分类

    根据设备本身的读写操作特征的差别,linux驱动主要分为三类

(1)字符设备驱动

    字符设备驱动的特点是软件在驱动设备是以字节为单位进行的,如LED、LCD、串口、蜂鸣器等

(2)块设备

    块设备是相对于字符设备类定义的,块设备的操作单位是块,每个块的字节大小是由硬件本身自己决定的,我们不能通过软件去修改,不同的块设备的块大小也可以不同。常见的块设备有硬盘、NandFlash、iNand、SD卡等

(3)网络设备

    网络设备是专门为网卡设计的驱动模型,linux中网络设备驱动的主要目的是为了支持API中socket相关的函数的工作。

3:怎么学习linux驱动

    (1)C语言是基础,驱动代码本身就是由C语言来编写的,所以C语言是学习驱动的基础

    (2)理解linux驱动框架,内核给我们驱动开发者提供了很多设备驱动的框架,而驱动开发者则在理解驱动框架的基础上去移植驱动,使之适合自己的产品。当然驱动框架只是一个驱动开发的一个标准,而非必须,驱动开发者也可以使用驱动框架去开发驱动


本文出自 “11664570” 博客,请务必保留此出处http://11674570.blog.51cto.com/11664570/1872401

以上是关于驱动学习之驱动体验的主要内容,如果未能解决你的问题,请参考以下文章

驱动学习之gpiolib的建立过程

驱动学习之LED驱动框架

驱动学习之驱动的设备文件

驱动学习之驱动和应用的接口

Linux驱动学习之驱动开发准备工作

SPISPI学习之SPI驱动相关