当前位置: 首页 > news >正文

字符设备驱动、块设备驱动和网络设备驱动

字符设备驱动、块设备驱动和网络设备驱动是操作系统中三种不同类型的设备驱动程序。它们主要根据所管理的硬件类型及其与系统交互的方式而有所不同。下面是这些驱动类型的主要差异:

①字符设备驱动(Character Device Drivers)

数据传输方式:通常以字节流的形式进行数据传输,没有固定大小的数据块。

操作方式:支持读写操作,但不支持随机访问或定位到特定位置的能力。

应用场景:串行端口、打印机、鼠标、键盘等。

API接口:通常使用文件系统的read()和write()等标准I/O函数进行交互。

probe函数的具体执行过程:

交叉编译过程:选择目标平台-》准备交叉编译链-》配置编译环境-》交叉编译-》链接-》运行

字符设备驱动动态申请设备号是:int alloc_chrdev_region 静态申请和注册设备号:int register_chrdev_region(事先定义主次设备号)

当修改设备树后烧录后,在sys目录下的bus下的i2c总线会看到我们创建的设备,当使用指令insmod加载驱动文件的时候,驱动使用i2c_add_driver()将自身注册到I2C总线上,当内核检测到与该驱动相匹配的I2C设备时,会调用此sht30_probe函数来进行设备的初始化和设置。

②块设备驱动(Block Device Drivers)

数据传输方式:以固定大小的数据块进行读取和写入操作。

操作方式:支持随机访问,即可以立即跳转到任何指定的块位置进行读写。

应用场景:硬盘、SSD、CD/DVD驱动器等存储介质。

API接口:除了基本的读写操作外,还可能提供一些高级功能,如格式化、分区管理等。

③网络设备驱动(Network Device Drivers)

数据传输方式:处理数据包(通常是IP数据包),这些数据包包含头部信息以及有效载荷。

操作方式:负责接收和发送数据包,并处理网络层协议栈中的数据传输。

应用场景:网卡、路由器、交换机等网络设备。

API接口:通过操作系统提供的网络堆栈接口进行交互,例如TCP/IP堆栈。

④总结

数据结构:字符设备通常以字节为单位;块设备则以固定大小的块为单位;网络设备以数据包为单位。

访问模式:字符设备支持顺序访问;块设备支持随机访问;网络设备通常支持基于连接或无连接的数据传输。

用途:字符设备用于简单的输入输出设备;块设备用于存储设备;网络设备用于通信。

http://www.dtcms.com/a/341567.html

相关文章:

  • Gitee仓库 日常操作详细步骤
  • Linux服务器性能优化总结
  • 【数据结构】快速排序算法精髓解析
  • shell脚本——搜索某个目录下带指定前缀的文件
  • 50.Seata-AT模式
  • Cyberduck (FTP和SFTP工具) v9.2.3.43590
  • 189.轮转数组
  • 设计模式的一些笔记
  • list集合可以一边遍历一遍修改元素吗?
  • Rust 入门 包 (二十一)
  • 计算机网络基础复习
  • 【数据分享】295个地级市互联网用户、邮电业务数据(2001-2022)
  • win10安装最新docker 4.44.2版图文教程(2025版)
  • 3.Shell脚本修炼手册之---Shell 变量基础知识
  • Android动画小补充
  • 【Obsidian插件】HiNote
  • 爬虫项目实践之淘宝商品详情数据采集​||电商API接口
  • 结构化 OCR 技术:破解各类检测报告信息提取难题
  • 5.Kotlin作用于函数let、run、with、apply、also
  • SpringCloud微服务架构入门指南
  • Day12--滑动窗口与双指针--2762. 不间断子数组,LCP 68. 美观的花束,2743. 计算没有重复字符的子字符串数量
  • day075-MySQL数据库服务安装部署与基础服务管理命令
  • Unity 开源分享一个轻量路点编辑器插件 常用于对象寻路
  • 在IDEA中DEBUG调试时查看MyBatis-Plus动态生成的SQL语句
  • 数据结构:AVL 树
  • RHCA05-文件系统调优
  • Spark学习
  • 游戏本不插电源适配器不卡设置教程
  • 技术半衰期悖论:AI时代“不可替代领域“的深耕地图
  • 30.Linux cobbler自动化部署