linux设备驱动概述

本文介绍了Linux系统中设备的三大类别:字符设备、块设备和网络设备,及其特点。块设备可通过文件系统接口访问,如dd命令或建立文件系统。学习Linux设备驱动涉及硬件基础、C语言、内核接口和并发控制机制。重点包括理解设备工作原理、内核接口和同步机制。
摘要由CSDN通过智能技术生成

1. linux设备的分类及特点

计算机系统的硬件主要由CPU、存储器和外设组成。驱动程序针对的对象是存储器和外设,包括现在CPU内部集成的存储器和外设,并不针对CPU内核。linux将存储器和外设分为3大基础类:

  • 字符设备

必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。

  • 块设备

可以按任意顺序进行访问,以块为单位进行操作的设备。如磁盘、eMMC等。

  • 网络设备

面向数据包的接受和发送而设计,内核与网络设备的通信依赖于套接字接口。

2.linux设备驱动与整个软硬件系统的关系

除了网络设备以外,字符设备与块设备都被映射到linux文件系统的文件和目录,通过文件系统的系统调用接口访问。如open()、write()、read()、clsoe()等。所有字符设备和块设备都统一呈现给用户。块设备的访问方式上分两种:第一种方法是类似dd命令对应原始的块设备,如"/dev/sdb1"等;第二种方法是在块设备上建立FAT/EXT4/BTRFS等文件系统,然后以文件路径的形式进行访问。在linux中,针对NOR、NAND等提供了独立的内存技术设备子系统,如YAFFS2、JFFS2、UBIFS等具备负载均衡能力的文件系统。针对磁盘或Flash设备的FAT、EXT4、YAFFS2、JFFS2、UBIFS等文件系统,其系统定义了文件和目录在存储介质上的组织。而linux的虚拟文件系统则统一对它们进行了抽象。

3.linux设备驱动学习的重点与难点

linux设备驱动学习是一项浩瀚的工程,包括:

  • 编写linux设备驱动要求良好的硬件基础,需要学习SRAM、Flash、SDRAM、磁盘的读写方式,UART、IIC、USB等设备接口以及轮询、中断、DMA的原理。还有PCI总线的工作方式和CPU的MMU(内存管理单元)。
  • 扎实的C语言基础,灵活使用C语言的结构体、指针、函数指针以及动态内存分配等等。
  • 了解一定的linux内核基本知识,至少明白驱动与内核的接口。如块设备、网络设备、Flash设备、串口设备等。
  • 掌握UNIX高级环境编程中的多任务并发控制和同步机制,譬如自旋锁、互斥、信号量、等待队列等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值