首页 > 编程语言 >设备驱动程序简介

设备驱动程序简介

时间:2024-05-07 22:36:14浏览次数:26  
标签:驱动程序 简介 文件系统 访问 内核 编写 设备

设备驱动程序简介

概述:

  • Linux驱动程序的核心:作为一个黑盒子,使某个特定硬件相应相应的内部编程接口,如posix。其需要隐藏体的工作细节。
  • Linux驱动程序编写为什么简单:其是使独立于内核的其他部分而建立的,其是模块化的。

驱动程序的作用

  • 驱动程序的妥协: 在编写驱动程序所需要的时间和驱动程序的灵活性之间实现折中
  • 驱动程序的核心思想: 驱动程序提供机制(需要提供什么功能),而不是提供策略(如何使用这些功能)。
    例子:软驱的驱动程序将磁盘表示为一个连续的数据块阵列,由高层提供访问策略。
  • 驱动程序的基本概念: 由此,引申出了驱动程序的基本概念:编写访问硬件的内核代码时,不要给用户添加任何特定策略(可以实现基本策略,如按字节读写)。因此,其本质是应用程序和实际设备中的一个软件层。
  • 驱动程序编写的核心原则: 提供给用户尽可能多的选项;编写驱动程序占用时间尽可能短;尽量保持程序的简单性。
  • 驱动程序的典型特征: 支持同步异步操作、能被多次打开、充分利用硬件特性、不带策略

内核功能划分

  • 进程管理: 创建/销毁进程;进程间通信;进程调度。本质:在CPU上实现多个进程的抽象;
  • 内存管理: 使用虚拟地址空间管理内存,同时保障进程/内核的隔离性;
  • 文件系统: Unix和核心-一切皆文件。本质是在没有结构的硬件上构造的结构化的文件系统,对不同的物理硬件进行高层抽象。(在物理介质上组织数据)
  • 设备控制: 内核对于设备(外设)控制的操作需要依赖于相应的代码,这部分即是驱动程序。
  • 网络功能: 由于网络功能和具体进程无关,因此操作系统需要在应用程序和网络接口之间对数据包进行传递(协议栈);

可装载模块

  • Linux特性: 在系统运行时,可以向内核添加相应功能,通过对相应模块类的加载(insmod)和移除(rmmod)

设备和模块的分类

  • 字符设备: 其本质是字节流访问设备,其类似于文件。大多数只能顺序访问,但是少数可以由数据区特性。其往往利用/dev目录下的文件系统节点访问。
  • 块设备: 与字符设备类似,其往往利用/dev目录下的文件系统节点访问。但是其传输过程中一次只能传出一个/多个完整的块(大小通常为512b或者更高)。其与字符设备的区别是内核管理数据方式不同,对于用户来说,其是一样的。
  • 网络接口: 由内核中的网络子系统驱动,其负责发送/接受数据包。由于其不是面向流的设备,因此其不在文件系统中,其和内核的通信是使用数据包传输相关的函数。
  • 子系统分类法: 使用支持某种给定类型的设备的附加层一起工作(USB、I2C等),通过高层抽象,简化了驱动程序的编写,避免了bug的可能性(抽象工厂模式)

安全问题

  • 安全问题核心: 如果内核存在安全漏洞,则整个系统就会存在安全漏洞;因此,之后超级用户才能使用特权代码
  • 原则1: 驱动程序应当尽量避免在代码中实现安全策略,但是当设备访问会影响整个系统时(设置中断/磁盘驱动)时,相关的安全检查必须由驱动程序本身完成。
  • 原则2: 避免由与自身原因引入安全方面的缺陷。
  • 其他原则: 用户输入必须经过内核验证才能使用;内存使用前一定要初始化;考虑设备操作可能造成的影响;小心使用第三方获得的软件。

版本编号

  • 版本问题文档: 内核原文件:Documentation/Changes
  • 内核编号: 偶数版本为稳定版本,奇数版本为快照;

许可证条款

  • linux使用的是GPL2

加入内核开发社团

书籍上的链接已经失效,使用http://vger.kernel.org/vger-lists.html 进行订阅

标签:驱动程序,简介,文件系统,访问,内核,编写,设备
From: https://www.cnblogs.com/David-Dong/p/18156828

相关文章

  • 接入大量设备后,视频汇聚系统EasyCVR安防监控视频融合平台是如何实现负载均衡的?
    一、负载均衡随着技术的不断进步和监控需求的日益增长,企业视频监控系统的规模也在不断扩大,接入大量监控设备已成为一项常态化的挑战。为确保企业能够有效应对这一挑战,视频汇聚系统EasyCVR视频融合平台凭借其卓越的高并发处理能力,为企业视频监控管理系统提供了持续可靠的负载均衡......
  • 鸿蒙OS NEXT的推出,目标是更广阔的智能设备市场
    华为官方公布6月份的版本为beta版,依然属于开发者测试版,但可以向普通用户开放了。这点和苹果iOS系统测试形式略微相似:6月份开放首个测试版,随后过渡到公测版,最后再和年度新机一起发布正式版系统。 如果按照这个进度推演,Mate70新机+鸿蒙OSNEXT正式版发布,貌似在Q4是板上钉钉的......
  • linux使用blkid未显示所有设备的UUID
    如题:使用lsblk命令可以看到,服务器存在设备vdb但使用blkid命令,系统未返回所有硬盘的UUID同时,使用lsblk-f命令,可以看到系统返回的设备挂载情况,也没有返回vdb的信息解决方案:查询资料,看到有一个解决方法使用sudoblkid进行查询,发现可以查询到/dev/vdb设备的UUID信息,并且在这......
  • openGauss CopyManager类简介
    CopyManager类简介CopyManager是openGaussJDBC驱动中提供的一个API接口类,用于批量向openGauss中导入数据。CopyManager的继承关系CopyManager类位于org.postgresql.copyPackage中,继承自java.lang.Object类,该类的声明如下:publicclassCopyManagerextendsObject构造方法......
  • 472-便携式HD-SDI模拟源测试设备
    便携式HD-SDI模拟源测试设备一、平台简介   便携式手提CameraLink模拟源测试设备,以PCIe的HD-SDI播出卡和X86主板为基础,构建便携式的手提设备。   平台默认操作系统为win764位系统;具备丰富的外设接口,如VGA、HDMI、千兆网口、USB2.0/3.0以及方便的JTAG调试口;平台存储......
  • 模拟源测试设备设计方案-471-便携式手提Camera Link 模拟源测试设备
    一、平台简介   便携式手提CameraLink模拟源测试设备,以PCIe的Cameralink播出卡和X86主板为基础,构建便携式的手提设备。   平台默认操作系统为win764位系统;具备丰富的外设接口,如VGA、HDMI、千兆网口、USB2.0/3.0以及方便的JTAG调试口;平台存储为8G内存、256G固态硬......
  • 【HEVC简介】High Level Syntax
    NAL      NAL:NetworkAbstractLayer,网络抽象层,编码后的bitstream就是由一个个NAL组成。NAL由一个2Bytes的NALheader和NALpayloaddata两部分组成。NAL分为VCL(videocodinglayer)NAL和non-VCLNAL两类,其中VCLNAL包含一个picture的数据,而non-VCLNAL包含与多个pic......
  • 【HEVC简介】CTU、CU、PU、TU结构
     参考文献:见《HighEfficiencyVideoCoding(HEVC)》BlockStructuresandParallelism FeaturesinHEVC章节 CTU:codingtreeunit,编码树单元,LCU    对于YUV=420格式的彩色视频:一个CTU由一个CTBofthelumasamples、2个CTBsofthechromasamples和相关的语法......
  • 视频压缩技术简介
    H264压缩技术H264的基本原理其实非常简单,我们就简单的描述一下H264压缩数据的过程。通过摄像头采集到的视频帧(按每秒30帧算),被送到H264编码器的缓冲区中。编码器先要为每一幅图片划分宏块。H264采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成I帧的算法,帧间压缩是生成B帧......
  • JavaScript-DOM简介
    JavaScript-DOM简介之前我们说过JavaScript有三部分组成ECMAscript,BOM,DOM,之前我们都在了解JavaScript的语法即ECMAScript,今天我们开始了解DOM(文档对象模型(DocumentobjectModel),操作网页上的元素的API)什么是DOMDOM:DocumentObjectModel,文档对象模型。DOM为文档提供了结......