Linux 设备驱动程序(三)

news2024/11/24 13:29:52

在这里插入图片描述

系列文章目录


Linux 内核设计与实现
深入理解 Linux 内核(一)
深入理解 Linux 内核(二)
Linux 设备驱动程序(一)
Linux 设备驱动程序(二)
Linux 设备驱动程序(三)
Linux设备驱动开发详解


文章目录

  • 系列文章目录
  • 第十五章 内存映射和DMA
    • 1、 Linux的内存管理
      • (1)地址类型
  • 二、补充配置
    • 1、空格
    • 2、文字颜色
    • 3、文字大小


第十五章 内存映射和DMA

1、 Linux的内存管理

(1)地址类型

  • 用户虚拟地址
    这是在用户空间程序所能看到的常规地址。用户地址或者是 32 位的,或者是 64 位的,这取决于硬件的体系架构。每个进程都有自己的虚拟地址空间。

  • 物理地址
    该地址在处理器和系统内存之间使用。物理地址也是 32 位或者 64 位长的,在某些情况下甚至 32 位系统也能使用 64 位的物理内存。

  • 总线地址
    该地址在外围总线和内存之间使用。通常它们与处理器使用的物理地址相同,但这么做并不是必需的。一些计算机体系架构提供了 I/O 内存管理单元(IOMMU),它实现总线和主内存之间的重新映射。IOMMU 可以用很多种方式让事情变得简单(比如使内存中的分散缓冲区对设备来说是连续的),但是当设置 DMA 操作时,编写 IOMMU 相关的代码是一个必需的额外步骤。当然总线地址是与体系架构密切相关的。

  • 内核逻辑地址
    内核逻辑地址组成了内核的常规地址空间。该地址映射了部分(或者全部)内存,并经常被视为物理地址。在大多数体系架构中,逻辑地址和与其相关联的物理地址的不同,仅仅是在它们之间存在一个固定的偏多量。逻辑地址使用硬件内建的指针大小,因此在安装了大量内存的 32 位系统中,它无法寻址全部的物理地址。逻辑地址通常保存在 unsigned long 或者 void * 这样类型的变量中。kmalloc 返回的内存就是内核逻辑地址。

  • 内核虚拟地址
    内核虚拟地址和逻辑地址的相同之处在于,它们都将内核空间的地址映射到物理地址上。内核虚拟地址与物理地址的映射不必是线性的和一对一的,而这是逻辑地址空间的特点。所有的逻辑地址都是内核虚拟地址,但是许多内核虚拟地址不是逻辑地址。举个例子,vmalloc 分配的内存具有一个虚拟地址(但并不存在直接的物理映射)。kmap 函数(在本章后面论述)也返回一个虚拟地址。虚拟地址通常保存在指针变量中。

在这里插入图片描述

二、补充配置

1、空格

  为“全角空格”
  为“全角空格”
  为“不换行空格”

2、文字颜色

浅红色文字:<font color="#dd0000">浅红色文字:</font><br /> 
深红色文字:<font color="#660000">深红色文字</font><br /> 
浅绿色文字:<font color="#00dd00">浅绿色文字</font><br /> 
深绿色文字:<font color="#006600">深绿色文字</font><br /> 
浅蓝色文字:<font color="#0000dd">浅蓝色文字</font><br /> 
深蓝色文字:<font color="#000066">深蓝色文字</font><br /> 
浅黄色文字:<font color="#dddd00">浅黄色文字</font><br /> 
深黄色文字:<font color="#666600">深黄色文字</font><br /> 
浅青色文字:<font color="#00dddd">浅青色文字</font><br /> 
深青色文字:<font color="#006666">深青色文字</font><br /> 
浅紫色文字:<font color="#dd00dd">浅紫色文字</font><br /> 
深紫色文字:<font color="#660066">深紫色文字</font><br /> 

3、文字大小

size为1:<font size="1">size为1</font><br /> 
size为2:<font size="2">size为2</font><br /> 
size为3:<font size="3">size为3</font><br /> 
size为4:<font size="4">size为4</font><br /> 
size为10:<font size="10">size为10</font><br /> 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/558930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WIN提权 令牌窃取进程注入

令牌窃取&#xff08;鸡肋玩意 2008包括2008以下&#xff09; 令牌&#xff0c;又叫token&#xff0c;是系统临时产生的秘钥&#xff0c;相当于账号密码&#xff0c;用来决定是否允许此次请求和判断此次请求是属于哪一个用户。 win7一下的版本可以尝试 这里使用msf上自带的令…

CCF-CSP 202006-1 线性分类器

根据高中知识我们知道&#xff0c;通过将点带入直线方程得到大于0或等于0或小于0&#xff0c;其中大于0与小于0的情况即对应两个点在直线的两边 据此&#xff0c;我们取最后一个输入的A点作为标准、最后一个输入的B点作为标准&#xff0c;记录下他们的>0还是<0&#xff0…

市面上常见的语音芯片的IO口有哪些作用

语音芯片的IO口有哪些作用&#xff1f; 语音芯片的IO口一般有多种用途&#xff0c;包括以下几种&#xff1a; 1. 语音输入&#xff1a;可以通过外部麦克风接口&#xff0c;将外部声音信号输入到语音芯片中&#xff0c;进行语音信号处理。 2. 语音输出&#xff1a;语音芯片可…

UTP网络编程入门案例

说明&#xff1a;UTP是面向无连接的&#xff0c;不可靠的协议&#xff0c;即传输数据时不会确定对方是否在线&#xff0c;优点是效率高。 DatagramSocket & DatagramPacket DatagramSocket是使用UDP协议的Socket&#xff0c;它的作用是接收和发送数据包&#xff1b; Dat…

数字信号处理6

昨天简单的复习了一下离散时间信号是什么以及系统的概念、系统要做的工作和系统中几个简单的原件&#xff0c;今天跟着昨天的内容继续学习。 一、离散时间系统的分类&#xff1a; 为什么要对系统进行分类呢&#xff0c;这就像是我们对函数进行分类一样&#xff0c;有些函数有…

提供免费样机模板素材的好网站推荐

说到原型样机模板&#xff0c;设计师当然并不陌生&#xff0c;因为经常在设计师完成作品后&#xff0c;为了更好地展示作品&#xff0c;通常将设计作品应用于真正的原型样机模板&#xff0c;可以快速在现实场景中展示设计作品&#xff0c;选择好的原型样机模板&#xff0c;操作…

超低功耗SUB 1G无线收发芯片+32位 Soc芯片UM2080F32 无线集抄/测温/养老院人员定位

UM2080F32是一款超低功耗 32 位 IoTP&#xff1a;ARMCortex-M0&#xff0c;64KB Flash&#xff0c;16KB SRAM&#xff0c;Sub-1GHz 射频收发器。工作于200MHz~960MHz 范围内。 UM2080F32 内部还集成了 CAN、12 位 SAR ADC、UART、SPI、QSPI、I2C 等通用外围通讯接口&#xff0c…

网络管理。

简介 网络接口名称规则 ls /etc/sysconfig/network-scripts/ -a NetworkManager服务 网络管理器是一个动态网络的控制器与配置系统&#xff0c;它用于当网络设备可用时保持设备和连接开启并激活默认情况下&#xff0c;CentOs/RHEL 7已安装网络管理器&#xff0c;并处于启用状态…

【Java this关键字】如何使用以及注意点 访问成员变量,访问成员方法,构造方法内调用构造方法

欢迎收看本篇文章 介绍 Java this 关键字的使用以及某些注意点 欢迎oomsday点踩&#xff0c;欢迎其他人点赞 &#x1f60b; Java this关键字 ⭐ this 关键字的作用⭐ this 注意点⭐ this 用法访问成员变量访问成员方法在构造方法内调用构造方法 ⭐ this 关键字的作用 在 Java …

C10K-C10M进阶(高并发的真正理解)

1、一台计算机可以连接的TCP受什么限制&#xff1f; 能打开文件描述符的限制。默认是1024&#xff0c;可以修改。 端口号的限制&#xff0c;65535&#xff0c;因为TCP头部16位的端口号&#xff0c;其中1024以上可以用。如果是客户端&#xff0c;最多可以打开6万多的文件。如果是…

车载测试之车联网OTA安全实践

在SDV的大趋势下&#xff0c;汽车零部件智能化水平不断提高&#xff0c;车辆内部搭载的软件也越来越多。毫无疑问&#xff0c;车辆复杂度的提高必将带来维护上的困难&#xff0c;车企要如何面对更新迭代速度越来越快的软件、固件系统&#xff1f;OTA&#xff08;over the air&a…

论文笔记: Trajectory Clustering: A Partition-and-Group Framework

07 Sigmoid 使用类DBSCAN的思路对轨迹聚类 1 intro 1.1 轨迹聚类 现有的轨迹聚类算法是将相似的轨迹作为一个整体进行聚类&#xff0c;从而发现共同的轨迹。 但是这样容易错过一些共同的子轨迹&#xff08;sub-trajectories&#xff09;。而在实际中&#xff0c;当我们对特…

运行 100 万个并发任务需要多少内存?

在这篇博文中&#xff0c;我深入研究了 Rust、Go、Java、C#、Python、Node.js 和 Elixir 等流行语言在异步和多线程编程之间的内存消耗比较。 前段时间&#xff0c;我不得不比较一些旨在处理大量网络连接的计算机程序的性能。我看到这些程序的内存消耗存在巨大差异&#xff0c…

【Atlas200】华为AIPP配置文件使用

目录 AIPP介绍图像处理顺序例子&#xff1a;YUV420SP_U8转BGR格式归一化配置对应公式crop及padding功能配置生效AIPP转换模板 AIPP介绍 华为的AIPP&#xff08;AI Preprocessing&#xff09;是一种面向AI应用的图像预处理技术&#xff0c;旨在提高AI应用的效率和精度。AIPP支持…

C语言深度解析--数组

目录 一维数组的创建与初始化 一维数组的创建&#xff1a; 一维数组的初始化&#xff1a; 一维数组的使用&#xff1a; 一维数组在内存中的存储&#xff1a; 二维数组的创建与初始化 二维数组的创建&#xff1a; 二维数组的初始化&#xff1a; 二维数组的使用&#xf…

是面试官放水,还是公司太缺人了?华为原来这么容易就进了...

华为是大企业&#xff0c;是不是很难进去啊&#xff1f;” “在华为做软件测试&#xff0c;能得到很好的发展吗&#xff1f; 一进去就有9.5K&#xff0c;其实也没有想的那么难” 直到现在&#xff0c;心情都还是无比激动&#xff01; 本人211非科班&#xff0c;之前在字节和腾…

以“智”提质丨信创呼叫

随着人工智能、大数据、云计算等新兴技术飞速发展&#xff0c;呼叫中心、全媒体智能客服等现已被广泛应用于多个行业领域。其中&#xff0c;呼叫中心作为政企对外服务的重要窗口&#xff0c;已从“传统电话营销”发展到“智能呼叫中心”阶段&#xff0c;以客户服务为核心&#…

Windows下Elasticsearch下载安装

Windows下Elasticsearch下载安装 最近搭一个语义搜索web需要用到es。 1.下载 下载地址&#xff1a;官网下载地址 下载zip格式解压就行&#xff0c;这里我下载的是8.7.1 1.1解压启动 解压之后&#xff0c;进入elasticsearch的bin目录&#xff0c;通过点击elasticsearch.ba…

0基础学习VR全景平台篇第28章:场景管理—遮罩功能

本期为大家带来蛙色VR平台&#xff0c;场景管理模块-遮罩功能&#xff01; 功能位置示意 一、本功能将用在哪里&#xff1f; 遮罩分为两种&#xff0c;分别是地面遮罩和天空遮罩。 地面遮罩位于全景图底部的正中间&#xff0c;天空遮罩位于全景图顶部的正中间。 遮罩一方面可…

已解决python使用pymysql向mysql数据库插入数据报错pymysql.err.DataError: (1366, ‘‘)

已解决&#xff0c;在python代码是使用pymysql向mysql数据库插入数据时报错pymysql.err.DataError: (1366, ) 问题描述 我从某个网页上抓取并解析了一段html代码&#xff0c;然后将html代码转为utf-8格式&#xff0c;之后将html代码作为数据表的一个属性存入mysql数据库中&…