第七十六天学习记录:计算机硬件技术基础:Intel系列微处理器

news2024/11/15 6:50:15

Intel系列微处理器概述

8086/8088微处理器

8086/8088微处理器是英特尔公司于1978年推出的16位处理器,在80年代是个非常流行的芯片,被广泛用于个人电脑和工作站。它是x86家族处理器的一员,被视为现代PC体系结构的基础。

8086/8088微处理器的主要特点如下:

  1. 16位架构:支持16位数据总线和地址总线,同时可以处理16位指令。

  2. 分段式内存管理:通过分段机制,可以寻址最大1MB的物理地址空间。

  3. x86指令集:8086/8088使用x86指令集,其指令集最初基于Intel 8008和8080处理器指令集,后来逐步演变为现代x86指令集。

  4. 工作频率:8086处理器是5MHz,而8088是4.77MHz。后来,一些版本的处理器能够在更高的频率下工作。

  5. 外部设备支持:支持外部设备的接口协议,例如串口、并口、键盘和鼠标。

  6. 可编程中断控制器:可编程中断控制器(PIC)是一个集成电路,用于协调计算机的中断请求。8086/8088处理器系统使用由Intel推出的8259 PIC。

今天,8086/8088处理器系统已经被现代x86处理器和其他处理器体系结构所取代,但它作为计算机历史上的一个重要里程碑,仍被视为计算机行业的经典之一。

80286微处理器

80286微处理器是英特尔公司于1982年推出的16位处理器。与8086/8088相比,80286处理器具有更高的工作频率,更优秀的性能,以及更好的内存管理能力。

80286微处理器的主要特点如下:

  1. 16位处理器:与8086/8088一样,80286也是16位微处理器。

  2. 更快的工作频率:80286处理器的工作频率是6或8 MHz,比8086/8088处理器快了1.2倍至1.6倍,因此处理能力更强。

  3. 更多的内存:80286处理器的物理寻址能力提高到了16MB,因此可以通过扩展内存,使得拥有更大的内存地址空间成为可能。

  4. 保护模式:80286处理器引入了保护模式,使得可以在不同的任务之间切换,从而实现多任务处理和更好的内存管理。

  5. 具备虚拟内存:80286处理器支持基于虚拟内存的内存管理机制,这大大提高了计算机系统的灵活性和稳定性。

  6. 支持指令集扩展:80286处理器支持指令集扩展,例如浮点运算指令扩展。

80286处理器由于其性能和扩展能力的提高,成为了当时IBM PC和Apple Macintosh等计算机系统的主流处理器,奠定了后来x86体系处理器的基础。

80386/80486微处理器

80386和80486微处理器是英特尔公司基于x86架构推出的高性能处理器。它们是8086/8088和80286微处理器的后继产品,以其更高的性能和更好的扩展性能提高了计算机系统的处理能力。

80386微处理器的主要特点如下:

  1. 32位处理器:80386是首款32位微处理器,它可以处理32位数据、地址和指令。

  2. 更快的工作频率:80386处理器的工作频率达到了16或33MHz左右,比80286处理器快了2倍左右,因此处理能力更强。

  3. 保护模式:与80286处理器类似,80386引入了保护模式,使得可以在不同的任务之间切换,从而实现多任务处理和更好的内存管理。

  4. 虚拟内存:80386处理器实现了页式内存管理机制,可以支持更大的内存容量。

  5. 指令集扩展:80386处理器增加了大量的新指令,并支持新的内存寻址模式。

而80486微处理器则在80386基础上进一步提高了性能和扩展能力。具体而言,其主要特点如下:

  1. 更高的工作频率:80486处理器的工作频率可达50、66、75甚至100MHz,比80386处理器快了好几倍,从而实现更强的计算处理能力。

  2. 高速缓存:80486处理器引入了高速缓存技术,并且运行在其内部的时钟速度上,使得程序执行速度更快。

  3. 更好的数字信号处理能力:80486处理器集成了数学协处理器,提升了数字信号处理的运算速度。

  4. 支持分段式虚拟内存:80486引入了一些新的特性,如支持分段式虚拟内存,从而大大提高了系统的灵活性和性能。

80386/80486微处理器的上市为计算机系统的性能提升带来了质的飞跃,成为80年代末和90年代初计算机领域的经典之一,对于计算机技术的发展产生了巨大的影响。

Pentium微处理器

Pentium是英特尔公司于1993年推出的微处理器,作为8086/8088、80286、80386和80486的继任者,是x86架构的第五代微处理器。Pentium微处理器的推出,引领了计算机芯片焕发新的生机和能力,而且在当时的市场上非常成功。

Pentium微处理器的主要特点如下:

  1. 首个支持超标量处理的微处理器:这意味着一个时钟周期内,可以同时执行多个指令,提高了处理能力。

  2. 内置浮点数处理器:Pentium处理器集成了浮点数处理器,从而可以更快、更精准地处理浮点数运算。

  3. 更快的运行速度:Pentium处理器的运行速度可以达到60-200MHz,比其前任80286、80386、80486处理器大大提升。

  4. 支持大内存:Pentium处理器支持最高达4GB的内存。

  5. 更多的指令并行:Pentium处理器配了两个独立的指令流水线,可以同时处理两个指令。

  6. 新增64位数据总线:这使得Pentium处理器在访问内存时更快,从而提高了计算机的运行速度。

总的来说,Pentium处理器的推出,是中央处理器速度倍增及多媒体计算机的奠定基础,其高性能、高速度、高精度等特点,也将计算机领域的应用向着一个更高层次引领。之后,Pentium系列的处理器被广泛应用并发展壮大,成为了当今个人电脑市场上处理器尤其是x86架构的无可争议的领导者。

80486微处理器的体系结构

80486微处理器的体系结构特点

  1. 32位处理器:与80286一样,80486也是一款32位处理器,可以处理32位数据、指令和地址。

  2. 高速缓存:80486处理器中包含了8K的一级缓存,可以降低访问内存的频率,从而提高了性能。

  3. 浮点运算单元集成:由于过去的80286和80386没有集成浮点运算功能,所以这是80486的一个重要变化。80486的硬件集成了浮点运算器,可以更快速和准确地执行浮点运算。

  4. 支持虚拟内存:在80386处理器中已经引入了分页式的内存管理机制,但是在80486处理器中,对于虚拟内存的支持做出了更为完善和优化。

  5. 指令流水线:80486处理器的指令流水线有五级,这意味着处理器内部可以同时处理五条指令,提高了处理器的性能和效率。

  6. 高速时钟:80486处理器内部集成了时钟倍频器,在基准时钟的基础上提升到了50MHz或更高的速率,从而增加了运算能力和速度。

80486微处理器的内部结构

80486微处理器主要由总线接口单元、指令预取单元、指令译码单元、指令执行单元、段管理单元、页管理单元、高速缓冲存储器单元和浮点运算单元等8个逻辑单元组成。
在这里插入图片描述
1、总线接口单元主要用于外部地址、数据和控制总线管理,完成预取指令、读/写数据等总线操作。
2、指令预取单元内含1个32个字节的指令预取队列。
在这里插入图片描述

内部寄存器

1、基本寄存器
基本寄存器包括通用寄存器、指令指针寄存器(EIP)、标志寄存器(EFLAGS)和段寄存器。

在这里插入图片描述
(1)通用寄存器
80486是一种x86微处理器,具有多个通用寄存器。它有8个32位的通用寄存器,每个寄存器可以存储32位的数据。这些寄存器被命名为EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP。

EAX寄存器通常用于存储函数返回值或算术运算的结果。

EBX寄存器通常用于存储内存地址或其他数据指针。

ECX寄存器通常用于计数,例如循环计数。

EDX寄存器通常用于存储除法或乘法的结果。

ESI和EDI寄存器通常用于存储源和目标指针,特别是在字符串或存储数据的数组中。

EBP寄存器通常用于指向堆栈中的帧指针,这对于函数调用和局部变量的管理非常有用。

ESP寄存器通常用于指向堆栈指针,这对于跟踪函数调用和返回非常有用。

这些通用寄存器在编程中发挥着非常重要的作用,使得程序员可以方便地进行数据存储和操纵,从而实现复杂的计算和操作。
(2)指令指针寄存器
80486微处理器的指令指针寄存器是EIP(Extended Instruction Pointer)。EIP寄存器存储着下一个执行的指令的地址。当处理器执行指令时,它会从内存中读取指令的二进制代码,并将EIP寄存器设置为下一条指令的地址,以便在执行完成当前指令后转到下一条指令。在分支指令(如跳转和调用指令)执行时,EIP寄存器会被修改以跳转到另一个地址执行指令。

EIP寄存器的大小是32位,因此可以存储4字节的地址。在实模式下,这意味着它可以寻址1MB的内存空间;在保护模式下,它可以寻址4GB的内存空间。EIP寄存器是x86架构中非常重要的寄存器之一,因为它控制着程序的执行流程,并允许程序员实现复杂的控制结构和程序逻辑。
(3)标志寄存器
80486微处理器的标志寄存器是EFLAGS(Extended Flags Register)。EFLAGS寄存器存储着处理器的状态信息,其中包括算术运算和逻辑运算的结果、控制流程和中断处理等。EFLAGS寄存器的每一个比特都代表着一个不同的标志位(或者称为标志位标志),用于提供不同的状态信息。

下面是EFLAGS寄存器中各个标志位的含义:

  • CF (Carry Flag) 标志位:用于指示算数操作中是否出现了进位或借位情况。
  • PF (Parity Flag) 标志位:用于指示结果中二进制位中“1”的个数是否为偶数。如果“1”的个数是偶数,则PF标志位被设置为1,否则为0。
  • AF (Auxiliary Carry Flag) 标志位:用于指示算数操作中是否出现了半进位或半借位情况。
  • ZF (Zero Flag) 标志位:用于指示运算结果是否为0。如果结果为0,则ZF标志位被设置为1,否则为0。
  • SF (Sign Flag) 标志位:用于指示运算结果的符号。如果结果为正,则SF标志位为0,否则为1。
  • TF (Trap Flag) 标志位:用于指示调试器是否需要跟踪每一条指令。
  • IF (Interrupt Flag) 标志位:用于控制是否允许中断。
  • DF (Direction Flag) 标志位:用于指示字符串操作的方向。如果DF标志位被设置为1,则字符串操作从高地址到低地址执行;如果DF标志位为0,则字符串操作从低地址到高地址执行。
  • OF (Overflow Flag) 标志位:用于指示算数操作是否发生了溢出。

EFLAGS寄存器在编程中非常重要,因为它与处理器的状态信息相关,能够用于控制程序的执行流程和中断处理等。
在这里插入图片描述
(4)段寄存器
80486微处理器有6个段寄存器,它们是CS、DS、ES、FS、GS和SS。这些段寄存器用于管理内存中的段。在x86架构中,任何内存地址都由一个段地址和一个偏移地址组成。段寄存器存储着段地址,而通用寄存器(例如EAX、EBX等)存储着偏移地址,当组合后就可以得到特定的内存地址。

下面是每个段寄存器的简要说明:

  • CS (Code Segment) 寄存器:用于存储代码段的地址,通常用于存储正在执行的指令。
  • DS (Data Segment) 寄存器:用于存储数据段的地址,通常用于存储程序中的变量和数据。
  • ES (Extra Segment) 寄存器:用于存储其他数据段的地址,它可以与DS寄存器一起用于处理一些特殊的数据访问情况。
  • FS (F Segment) 寄存器:用于存储附加数据段的地址,通常用于存储线程局部存储的变量。
  • GS (G Segment) 寄存器:用于存储另一个附加数据段的地址,通常用于存储进程局部存储的变量。
  • SS (Stack Segment) 寄存器:用于存储堆栈段的地址,通常用于存储函数调用的返回地址和局部变量等数据。

这些段寄存器在内存管理和程序执行过程中都有非常重要的作用,能够帮助CPU管理不同的数据和代码段,并确保程序在正确的地址空间中执行。
在这里插入图片描述
在这里插入图片描述
2、系统级寄存器
包括4个控制寄存器和4个系统地址寄存器。
(1)控制寄存器
80486微处理器有多个控制寄存器,用于控制和管理处理器的各种行为和操作。下面是常用的一些控制寄存器:

  1. CR0 (Control Register 0):CR0寄存器包含了多个控制标志位,包括保护模式开关、分页机制开关、缓存控制等。程序员可以通过写入特定的值到CR0寄存器中来控制这些标志位。

  2. CR2 (Control Register 2):CR2寄存器用于记录最近的缺页异常地址,这个地址用于交给操作系统来进行异常处理。

  3. CR3 (Control Register 3):CR3寄存器包含了分页机制相关的信息,例如页目录表的地址等。程序员可以通过修改CR3寄存器来切换不同的地址空间。

  4. CR4 (Control Register 4):CR4寄存器包含了一些处理器扩展功能的控制标志位,例如在x86架构中支持物理地址扩展 (PAE) 机制、支持全局页面管理 (PGE) 等。

这些控制寄存器对于操作系统和底层软件的开发非常重要,它们提供了对处理器各种行为和功能的控制,使得程序员可以更好地管理和优化系统的性能、稳定性和安全性。

(2)系统地址寄存器:系统地址寄存器只在保护方式下使用。
80486微处理器有两个系统地址寄存器,分别是GDTR和IDTR。

  1. GDTR (Global Descriptor Table Register):GDTR寄存器存储了全局描述符表(GDT)的基地址和限长。GDT是分段机制中的一个数据结构,它定义了每个段的基地址、大小、访问权限等信息。GDTR寄存器的值被读入到处理器的硬件段寄存器中,用于查找和访问GDT中的描述符。

  2. IDTR (Interrupt Descriptor Table Register):IDTR寄存器存储了中断描述符表(IDT)的基地址和限长。IDT是中断处理机制中的一个数据结构,它定义了每个中断或异常向量的处理函数地址和特权级等信息。IDTR寄存器的值被读入到处理器的硬件中断向量表中,用于查找和执行特定中断或异常的处理程序。

这些系统地址寄存器在x86架构的系统开发中都扮演着非常重要的角色,它们用于管理和组织系统中的各种数据结构和信息,并确保处理器能够正确地访问和执行它们。
在这里插入图片描述
3、调试和测试寄存器
80486微处理器有两个调试和测试寄存器,分别是DR0和DR7。

  1. DR0 (Debug Register 0):DR0寄存器用于设置调试或断点条件,例如在某个内存地址或I/O端口上设置断点。当程序执行到指定的断点处时,处理器会发出异常中断信号,加载中断处理程序或调试器来进行后续的处理。

  2. DR7 (Debug Register 7):DR7寄存器用于控制DR0~DR3寄存器中断点的状态,包括断点长度、是否触发INT1、是否执行单步调试等。

这些调试和测试寄存器的主要作用是帮助程序员进行调试和性能优化。在程序执行过程中,可以通过设置断点或者执行单步调试等方法,查看程序的执行过程和结果,并进行问题排查和代码优化。同时,这些寄存器也被用于系统和软件的安全性测试,以便发现和修复存在的安全漏洞和问题。
在这里插入图片描述
4、浮点寄存器
80486微处理器同时支持两种浮点数数据类型:单精度 (32位) 和双精度 (64位)。为了支持这些浮点数数据类型,它有8个浮点寄存器,分别是ST0~ST7。

这些浮点寄存器是80位宽度的,可以存储不同类型的浮点数数据以及控制数据。这些寄存器还用于执行各种浮点运算,例如加、减、乘、除、取模等操作。处理器还提供指令来加载和存储浮点数据到和从内存中,同时还有指令来支持浮点比较和转换等操作。

在x86架构的系统开发中,浮点处理的性能经常是一个关键问题,因此该架构采用了浮点寄存器来高效处理这些浮点数数据。浮点寄存器能够处理高精度的数据,同时也能提高处理器的运算速度,帮助程序员编写更快和更准确的计算代码。
在这里插入图片描述

80486的工作方式及转换

80486有3种工作方式:实地址方式,保护虚地址方式和虚拟8086方式。
在这里插入图片描述

80486的引脚功能

80486 微处理器是英特尔推出的一款经典的 x86 微处理器,它有168个引脚。以下是其中一些常用引脚及其功能:

地址和数据总线引脚:包括 A0 到 A31 引脚,用于传输地址和数据信息。

控制信号引脚:例如,RD(读取)、WR(写入)信号引脚用于控制内存读写操作;M/IO(内存/IO)信号引脚用于区分访问内存还是外部设备;BE0 到 BE3(字节使能)信号引脚用于指示数据总线上的有效字节。

时钟引脚:CLK(时钟)引脚提供微处理器的时钟信号,驱动其工作频率。

电源引脚:VCC 引脚为电源引脚,提供微处理器所需的电压供应。

标志引脚:包括标志引脚 PF0 到 PF3(中断前缀)和标志引脚 FLUSH(刷新),用于中断处理和相关操作。

外部总线接口引脚:如HOLD(挂起)和HLDA(挂起确认)引脚,用于与其他设备进行总线互连时的控制信号传输。

在这里插入图片描述

习题:

1、80486CPU由哪几个部件组成?各部件的功能是什么?
算术逻辑单元 (ALU):负责执行算术和逻辑运算,例如加法、减法、乘法和逻辑与、或、非等操作。
控制单元 (Control Unit):管理和协调CPU内部的各个部件,并决定程序的执行顺序。它从内存中读取指令,并发送控制信号给其他部件以执行相应的操作。
寄存器 (Registers):用于临时存储数据和指令。不同类型的寄存器包括指令寄存器、数据寄存器、地址寄存器等。
缓存 (Cache):作为高速缓存存储器,用于存储最常访问的数据和指令,提高CPU的访问速度。
总线接口单元 (Bus Interface Unit):与外部设备和系统总线进行通信,负责数据传输和地址管理。
浮点运算单元 (Floating-Point Unit):专门负责执行浮点运算操作,例如浮点加法、减法、乘法和除法。
内部时钟发生器 (Internal Clock Generator):产生CPU内部的时钟信号,控制指令和操作的执行速度。
这些部件共同协作,完成CPU的各种计算和控制任务。

2、8086中,存储器的物理地址是如何生成的?若已知逻辑地址为B100:A300,试求物理地址。
在8086处理器中,物理地址是通过逻辑地址经过段地址转换和偏移地址的组合来生成的。

具体步骤如下:

段地址转换:将段地址与16相乘,得到20位的段基址,即将逻辑地址中的B100左移4位,得到B1000。
偏移地址:将A300直接拼接到B1000后面,得到B10000A300。
物理地址:将B10000A300作为物理地址。
所以,根据已知的逻辑地址B100:A300,对应的物理地址为B10000A300。

3、假设用户程序装入内存后SS=095BH,SP=0040H,试问该用户程序的栈底物理地址是多少?

栈底物理地址的计算公式如下:
栈底物理地址 = SS x 16 + SP
将给定的数值代入公式中进行计算:
栈底物理地址 = 095Bh x 16 + 0040h
首先将十六进制转换为十进制:
SS = 095Bh(十六进制)= 2395(十进制)
SP = 0040h(十六进制)= 64(十进制)
然后进行计算:
栈底物理地址 = 2395 * 16 + 64
栈底物理地址 = 38240 + 64
栈底物理地址 = 38304
因此,该用户程序的栈底物理地址是38304。

4、8086系统中,设CS=0914H,代码段长度为244个字节,该代码段末地址的逻辑地址(段地址,偏移地址)和物理地址各是多少?
根据提供的信息,假设在8086系统中,CS寄存器值为0914H。代码段长度为244个字节。
对于逻辑地址(段地址,偏移地址)和物理地址的计算,我们需要考虑到8086实模式下的内存分段机制。
首先,将CS寄存器值左移4位并且加上偏移地址,从而得到逻辑地址的偏移部分。然后,逻辑地址的段部分为CS寄存器的值。
逻辑地址(段地址,偏移地址)的计算如下:
段地址 = CS
偏移地址 = 0
将给定的数值代入公式中进行计算:
段地址 = 0914H(十六进制)= 2324(十进制)
偏移地址 = 0
因此,逻辑地址(段地址,偏移地址)为(2324, 0)。
接下来,将逻辑地址转换为物理地址。
物理地址的计算公式如下:
物理地址 = 段地址 * 16 + 偏移地址
将逻辑地址的段地址和偏移地址代入公式中进行计算:
物理地址 = 2324 x 16 + 0
物理地址 = 37184
因此,该代码段末地址的逻辑地址为(2324, 0),物理地址为37184。

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

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

相关文章

对耳朵伤害最小的耳机类型,列举几款不入耳的骨传导耳机

骨传导耳机是最近几年火爆起来的耳机,它是将声音转化为不同频率的机械振动,通过人的颅骨、骨迷路、内耳淋巴液、螺旋器、听神经、听觉中枢来传递声波。与普通耳机相比最大的区别是声音不经过外耳道,避免了耳道长时间堵塞导致的中耳炎疾病发生…

基于机器学习算法:朴素贝叶斯和SVM 分类-垃圾邮件识别分类系统(含Python工程全源码)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境安装pytesseract注册百度云账号 模块实现1. 数据模块2. 模型构建3. 附加功能 系统测试1. 文字邮件测试准确率2. 网页测试结果 工程源代码下载其它资料下载 前言 本项目采用朴素贝叶斯和支持向量机(S…

石化园区宽带自组网应急通信方案

痛点需求 传统的通信手段在可靠性、即时性、安全性、可视化等方面的能力相对较弱,无法从根本上满足石化园区的应急通信需求。结合某大型石化园区实际需求,现亟需建设一套高可靠、高安全、广覆盖、机动灵活且支持多媒体通信的应急通信系统,以…

阿里云建站主机之虚拟主机、轻量或云服务器ECS

阿里云搭建网站主机可以选择云服务器ECS、云虚拟主机或轻量应用服务器,轻量应用服务器2核2G3M带宽一年108元,2核4G4M带宽轻量服务器一年297.98元12个月,云服务器ECS可以选择通用算力型u1,云虚拟主机共享型119元一年起,…

大数据Doris(四十三):kafka 简单json格式数据导入到Doris

文章目录 kafka 简单json格式数据导入到Doris 一、创建 Doris 表 二、创建 Kafka topic 三、创建 Ro

AI实战营:生成模型+底层视觉+AIGC多模态 算法库MMagic

目录 环境安装 黑白照片上色 文生图-Stable Diffusion 文生图-Dreambooth 图生图-ControlNet-Canny 图生图-ControlNet-Pose 图生图-ControlNet Animation 训练自己的ControlNet 环境安装 mim install mmagicpip install opencv-python pillow matplotlib seaborn tqdm …

阿里二面:使用 Nacos 做注册中心怎么做优雅发布?

大家好,我是君哥。 今天来聊一聊使用 Nacos 做注册中心怎么做优雅发布。 跟其他的注册中心一样,Nacos 作为注册中心的使用如下图: Service Provider 启动后注册到 Nacos Server,Service Consumer 则从 Nacos Server 拉取服务列表…

Unsafe类的使用

目录 一、Unsafe是什么?二、Unsafe对象的获取三、CAS1、相关方法2、demo 四、数组操作五、内存分配六、线程调度 参考于:https://blog.csdn.net/Wisimer/article/details/115220750 一、Unsafe是什么? Unsafe是jdk提供的一个直接访问操作系…

k8s 集群部署尝试

K8S 部署方式有很多,有的方式不太友好,需要注意很多关键点,有的方式对小白比较友好,部署简单方便且高效 二进制源码包的部署方式 使用 二进制源码包的方式部署会比较麻烦,大概分为如下几步: 获取源码包部…

基于abaqus的Huang晶体塑性UMAT改VUMAT

黄永刚院士编写的单晶晶体塑性UMAT,主要用于在Abaqus有限元仿真中进行单晶及多晶晶体塑性变形的计算,是许多科研工作者学习晶体塑性模拟的教学资源。可以在其基础上对硬化模型进行修改,甚至引入损伤。 UMAT主要应用于隐式分析,而…

力扣动态规划专题(二)01背包 416. 分割等和子集 1049.最后一块石头的重量II 494. 目标和 474. 一和零 步骤及C++实现

文章目录 01背包二维dp数组一维dp数组 滚动数组 416. 分割等和子集1049.最后一块石头的重量II494. 目标和474. 一和零 01背包 完全背包的物品数量是无限的,01背包的物品数量只有一个。 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xf…

基于ArcGIS的nc(NETCDF)转tif格式

软件版本:ArcMap10.4.1 nc(NETCDF)是一组独立于机器的软件库支持创建、访问和共享面向阵列的数据格式科学数据,它也是共享科学数据的社区标准。(摘自Unidata官网),被广泛应用于大气、海洋、水文等领域,是我…

stm32读取BH1750光照传感器

stm32读取BH1750光照传感器 一.序言二.BH1750指令三.IIC协议四.代码实例4.1 bh1750.c源文件4.2 bh1750.h头文件 一.序言 BH1750是用IIC协议进行数据传输的。有SCL,SDA,VCC,GND四根线。下图是原理图 二.BH1750指令 我们先看芯片手册的操作指令(下图&a…

直播 RTM 推流在抖音的应用与优化

动手点关注 干货不迷路 背景 随着互联网技术以及网络基建的快速发展和普及,视频直播已经成为了一种越来越普遍的娱乐和社交方式。无论是个人还是企业,都可以通过视频直播平台进行直播活动,向观众展示自己的生活、工作或者产品。同时&#xff…

有什么办法恢复格式后的u盘数据?5个方法,赶紧收藏起来

随着科技的不断进步,U盘已经成为了我们重要的移动存储设备之一,但是在使用过程中,很多人都可能会不小心将U盘格式化导致数据丢失。那么有什么办法恢复格式后的U盘数据?本文将会为您介绍恢复U盘格式化后数据的5种方法,如…

MT6761/MT6762/MT6765核心板模块 demo串口调试

串口调试 如果正在进行lk(little kernel ) 或内核开发,USB 串口适配器( USB 转串口 TTL 适配器的简称)对于检查系统启动日志非常有用,特别是在没有图形桌面显示的情况下。 1. 选购适配器 常用的许多 USB 转串口的适配器&#x…

SpringCloud:分布式事务Seata实践优化

1.极致性能优化 1.1. 同库模式 通常,一个TM会产生一笔主事务日志,一个RM会产生一条分支事务日志,每个分布式事务由一个TM和若干 RM组成,一个分布式事务总共会有1N条事务日志(N为RM个数)。 在默认情况下&…

万物的算法日记|第五天

笔者自述: 一直有一个声音也一直能听到身边的大佬经常说,要把算法学习搞好,一定要重视平时的算法学习,虽然每天也在学算法,但是感觉自己一直在假装努力表面功夫骗了自己,没有规划好自己的算法学习和总结&am…

CTFshow-pwn入门-前置基础pwn5 - pwn12

pwn5-pwn12的题目全是关于汇编语言的知识,pwn5-pwn12的汇编文件的代码都是一样的。 我们将可执行文件和汇编文件托到ctfshow-pwn专用虚拟机里,给可执行文件加上执行权限并查看其信息。 32位的,直接扔到ida中去。 在虚拟机中使用cat命令读取下…

SpringBoot的配置文件

SpringBoot的配置文件 🔎配置文件的作用🔎配置文件的格式🔎properties配置文件properties的基本语法读取配置文件 🔎yml配置文件yml的基本语法读取配置文件Tips关于 \n🍭配置对象🍭配置集合🍭 &…