驱动学习之驱动体验

简介:

1:什么是linux驱动

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

2:linux设备驱动的分类

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

(1)字符设备驱动

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

(2)块设备

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

(3)网络设备

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

3:怎么学习linux驱动

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

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


本文转自 菜鸟养成记 51CTO博客,原文链接:http://blog.51cto.com/11674570/1872401


相关文章
到底什么是I/O的驱动能力?
到底什么是I/O的驱动能力?
|
2月前
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
本文介绍了如何在基于Amlogic T972的Android 9.0系统上使用Platform平台驱动框架和设备树(DTS),实现设备与驱动的分离,并通过静态枚举在设备树中描述设备,自动触发驱动程序的加载和设备创建。
33 0
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
|
5月前
驱动常用技巧
。。。未完,待续。。。
45 0
|
5月前
|
Unix Linux 编译器
Linux驱动设计(一):驱动是什么?
Linux驱动设计(一):驱动是什么?
53 0
|
测试技术 程序员
我的场景驱动设计
我的场景驱动设计
我的场景驱动设计
|
IDE 前端开发 数据可视化
ZenUML与服务驱动设计
ZenUML与服务驱动设计
ZenUML与服务驱动设计
|
敏捷开发 消息中间件 缓存
什么是领域驱动
领域驱动的概念
203 0