驱动学习之驱动体验

简介:

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


相关文章
|
IDE 开发工具 开发者
Qt-Qt Creator的下载、安装与配置(Windows)
Qt-Qt Creator的下载、安装与配置(Windows)
7406 1
|
Linux 异构计算 Windows
如何设置一个清爽的仿真窗口(仿真工具使用技巧)【Modesim/Questasim】
如何设置一个清爽的仿真窗口(仿真工具使用技巧)【Modesim/Questasim】
如何设置一个清爽的仿真窗口(仿真工具使用技巧)【Modesim/Questasim】
|
缓存 网络协议 C#
C#开源、功能强大、免费的Windows系统优化工具 - Optimizer
C#开源、功能强大、免费的Windows系统优化工具 - Optimizer
286 0
|
SQL 存储 数据库
hive 删除某个分区中部分数据
hive 删除某个分区中部分数据
|
Python
python中Numpy库的ravel()函数解说及应用
python中Numpy库的ravel()函数解说及应用
1970 0
|
人工智能 Kubernetes 小程序
开发者社区精选直播合集(二十七)| HaaS物联网最佳实践
HaaS(Hardware as a Service)物联网设备云端一体开发框架,整合阿里云、达摩院、平头哥技术,基于数亿物联网设备接入经验,提供积木式硬件开发能力,实现低代码快速开发,帮助中小开发者聚焦业务,实现设备安全上云,加速设备创新迭代。
开发者社区精选直播合集(二十七)| HaaS物联网最佳实践
|
1天前
|
数据采集 人工智能 安全
|
10天前
|
云安全 监控 安全