Linux 驱动开发 一:概述

一、Linux 驱动开发思维

Linux 驱动开发和裸机开发区别主要是思维差异

1、Linux 驱动开发直接操作寄存器不现实(一般比较复杂,自己研究寄存器会很困难)。

2、根据 Linux 下的各种驱动框架进行开发。核心:熟悉、掌握、使用 Linux 各种驱动框架。

3、驱动最终表现就是 /dev/xxx 文件(基本操作:打开、关闭、读写、……)。

4、新的内核支持设备树,这是一个 .dts 文件,此文件描述开发板的设备信息。

二、Linux 驱动分类

1、字符设备

只能一个字节一个字节的读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序进行。字符设备是面向的设备,常见的字符设备如鼠标、键盘、串口、控制台、LED等。

注:字符设备是最常见、最多的。

2、块设备

指可以从设备的任意位置读取一定长度的数据设备。块设备如硬盘、磁盘、U盘和SD卡等存储设备。

3、网络设备

网络设备比较特殊,不在是对文件进行操作,而是由专门的网络接口来实现。应用程序不能直接访问网络设备驱动程序。在/dev目录下也没有文件来表示网络设备。

三、应用程序和驱动的交互原理

1、驱动的本质

控制设备。包括从设备中获取数据、控制设备状态等。获取到数据会提交给应用程序,应用程序使用这些数据进行相应处理。

2、用户空间和内核空间

1、Linux 下用户态和内核态切换方式

  • 系统调用
  • 中断
  • 异常

2、操作系统主要功能

  • 进程管理
  • 内存管理
  • 设备管理(包括IO、网络)
  • 文件管理

3、应用程序调用

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值