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

【Orange Pi 5 Linux 5.x 内核编程】-字符设备驱动程序主编号和次编号

字符设备驱动程序主编号和次编号

文章目录

  • 字符设备驱动程序主编号和次编号
    • 1、字符设备及驱动介绍
    • 2、字符设备驱动程序主编号和次编号
      • 2.1 主要设备号
      • 2.2 次要设备号
    • 3、主设备号和次设备分配
      • 3.1 静态分配
      • 3.2 动态分配
      • 3.3 静态分配和动态分配的区别
      • 3.4 注销主/次要编号
    • 4、程序代码实现
      • 4.1 静态分配主/次要编号实现
      • 4.2 动态分配主/次要编号实现

在前面的文章中,介绍了如何给内核驱动程序在加载时传递参数和参数变化时通知回调函数的使用。本文将详细介绍字符设备驱动程序主编号和次编号。

1、字符设备及驱动介绍

通常,操作系统旨在向用户应用程序隐藏底层硬件详细信息。 但是,应用程序确实需要能够访问硬件外围设备捕获的数据,以及能够通过输出驱动外围设备。 由于外设寄存器只能由 Linux 内核访问,因此只有内核能够收集这些外设捕获的数据流。

Linux 需要一种机制将数据从内核空间传输到用户空间。 这种数据传输是通过设备节点(也称为虚拟文件)处理的。 设备节点存在于根文件系统中,尽管它们不是真正的文件。 当用户从设备节点读取时,内核将底层驱动程序捕获的数据流复制到应用程序内存空间中。 当用户写入设备节点时,内核将应用程序提供的数据流复制到驱动程序的数据缓冲区中,最终通过底层硬件输出。 这些虚拟文件可以由用户应用程序使用标准系统调用“打开”、“读取”或“写入”。

每个设备都有一个独特的驱动程序,用于处理最终传递给核心的用户应用程序的请求。 Linux支持三种类型的设备:字符设备、块设备和网络设备。 虽然概念相同,但这些设备中的每一个的驱动程序的不同之处在于文件“打开”和“读取”或“写入”的方式。 字符设备是最常见的设备,无需缓冲,直接读写,如键盘、显示器、打印机、串口等。


http://www.kler.cn/news/358523.html

相关文章:

  • 流量分类实验
  • 超越微软的AI编程软件Cursor:编程学习的黄金时代
  • Nginx和MySQL下载
  • MATLAB边缘检测
  • Elasticsearch高级搜索技术-自定义评分规则
  • 图论day60|108.冗余连接(卡码网) 、109.冗余连接II(卡码网)【并查集 摧毁信心的一题,胆小的走开!】
  • 013_django基于大数据的高血压人群分析系统2024_dcb7986h_055
  • 大数据开发基于Hadoop+springboot平台的岗位推荐系统
  • 帝国cms取得内容和栏目链接地址的方法
  • 波浪理论(Elliott Wave Theory)
  • win10专业版电脑.net framework3.5sp1进度条不动如何开启
  • IO编程--两进程间的实时通信
  • 6-4.Android 对话框之进度对话框问题清单(UI 线程问题、外部取消、dismiss 方法与 hide 方法)
  • MySQL-21.多表设计-案例-关系分析-表结构
  • 数据结构与算法——Java实现 41.对称二叉树
  • 基于FPGA的信号发生器verilog实现,可以输出方波,脉冲波,m序列以及正弦波,可调整输出信号频率
  • 2024-10-15 问AI: [AI面试题] 人工智能中使用了哪些不同的搜索算法?
  • 《Windows PE》7.3 遍历资源表
  • PostgreSQL学习笔记:PostgreSQL vs MySQL
  • 汽车票在线预订:SpringBoot技术实践