数据寄存器

操作系统启动顺序

自闭症网瘾萝莉.ら 提交于 2020-03-12 11:31:32
概述 在这里以x86的处理器为例 机器在启动的时候会执行 第一条指令 。这条指令会去执行 bios ,将控制权交给bios。 bios完成硬件的质检,然后将bootloader从硬盘读到内存中,执行 bootloader ,并将控制权交给bootloader bootloader负责使能保护模式、建立段机制以及加载操作系统,然后将控制权交给操作系统 第一条指令 执行机器的第一条指令是为了跳转到bios执行,那么需要知道bios在哪里?cpu是怎么寻址的? bios在哪里 bios是固化在内存EPROM中的,断电不会丢失(非易失性),这样 biod的地址是固定 的,因为 在cpu第一次加电了之后,寄存器就会有缺省的初始值 ,所以 bios地址=寻址寄存器的缺省值 就好啦。 寻址是由段寄存器以及指令指针共同完成,bios地址由CS:IP=16*CS+IP(代码段寄存器:指令指针)来表示。 CS的缺省值是FFFF0000H,IP的缺省值是0000FFF0H。 CS:IP=FFFFFFF0H 寻址机制 寻址是由段寄存器以及指令指针共同完成。因为内存很大,而且在一段时间内操作的内存具有空间局部性,所以可以将内存分为一段一段由段寄存器来定位,这一段的内存中再由指令指针来定位到具体的代码、数据 段寄存器: CS——code segment,代码段寄存器 DS——data segment

STM32F4关键寄存器总结

放肆的年华 提交于 2020-03-12 07:53:52
—— 整理自STM32F4中文参考手册(ST)、STM32F4开发指南-寄存器版本(正点原子)、cortex m3与m4权威指南(英文) 目录 NVIC GPIO EXIT USART TIM(2~5) 基本设置 PWM相关 NVIC 此章节与内核相关,未在参考手册中出现,需参考权威指南。 ISER1~8 (Interrupt Set-Enable Registers)中断使能寄存器组。CM4 内核支持 256 个中断,用 8 个 32 位寄存器来控制,每个位控制一个中断。由于STM32F4 的可屏蔽中断最多只有 82 个,所以仅ISER[0~2]有效,其中ISER[0]的 bit0~31 分别对应中断0~31;ISER[1]的 bit0~32 对应中断 32~63;ISER[2]的 bit0~17 对应中断 64~81。设置相应的 ISER 位为 1,使特定中断被使能。 具体每一位对应哪个中断,请参考 stm32f4xx.h 里面的第 188 行处。 ICER1~8 (Interrupt Clear-Enable Registers)中断除能寄存器组。用来清除某个中断的使能。其对应位所代表的中断和 ISER 相同。通过置位来清除中断位。 ISPR1~8 (Interrupt Set-Pending Registers)中断挂起控制寄存器组。其对应位所代表的中断和 ISER 相同

VC串口通信实验

孤者浪人 提交于 2020-03-10 10:26:39
实验一:VC串口通信实验 一、实验目的 通过实验让学生了解串口通信的工作原理。 二、实验器材 计算机两台 串口连接线一根 GND(pin5) GND(pin5) TXD(pin3) RXD(pin2) RXD(pin2) TXD(pin3) RTS(pin7) CTS(pin8) CTS(pin8) RTS(pin7) DSR(pin6) DTR(pin4) DTR(pin4) DSR(pin6) 三、实验要求 用VC++对计算机的串口进行编程,并作一个简单的串口查询通讯程序。用一条九针的DB-9串口通讯线将计算机的com1口和com2口相连,com1作为接受口,com2作为发送口。 四、实验步骤 1. 建立项目 打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点); 2. 在项目中插入MSComm控件 选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。 选择Microsoft Communications Control, version 6.0,单击Insert按钮将它插入到我们的Project中来

STM32的GPIO的寄存器配置学习1

对着背影说爱祢 提交于 2020-03-09 16:24:06
本篇文章主要是学习以M3内核的STM32的GPIO的寄存器的配置,为什么要学习寄存器,而不利用库函数呢?我只能说为了让学的知识更加牢固吧!当然,你可以直接去利用库函数,但是如果你能认真读完本篇博客,你会对知识豁然开朗!加油吧! STM32 的每个 IO 端口都有 7 个寄存器( 如果还不懂寄存器是什么,请点击 )来控制。他们分别是: 配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH ; 2 个 32 位的数据寄存器 IDR 和 ODR ; 1 个 32 位的置位/复位寄存器BSRR ; 一个 16 位的复位寄存器 BRR ; 1 个 32 位的锁存寄存器 LCKR ;这里我们仅介绍常用的几个寄存器,我们常用的 IO 端口寄存器只有 4 个:CRL、CRH、IDR、ODR 。 可能罗列了这么多的寄存器,小白可能会一头蒙(心想,用的时候再找呗,我想说,那还不如直接记住,对吧,哈哈哈)接下来我会每一个介绍一下,然后会有一个程序说明,仔细看完文章吧! 一、CRL、CRH STM32的每个 IO 口都可以自由编程,但 IO 口寄存器必须要按 32 位字被编辑被访问(因为系统本身是32位),CRL 和 CRH 控制着每个 IO 口的 模式 及 输出速率, 只不过 CRL 是 控制 低8位的GPIO接口( GPIO0至GPIO7 ); CRH 是 控制 高8位的GPIO接口(

S5PV210串行通信接口详解-3

混江龙づ霸主 提交于 2020-03-08 22:02:25
1、串行通信与中断的关系 (1)、串口通信分为发送 / 接收2部分。发送方一般不需要(也可以使用)中断即可完成发送,接收方必须(一般来说必须,也可以轮询方式接收就是CPU一直盯着收)使用中断来接收。 (2)、发送方可以选择使用中断,也可以选择不使用中断。使用中断的工作情景是:发送方先设置好中断并绑定一个中断处理程序,然后发送方丢一帧数据给transmitter,transmitter发送耗费一段时间来发送这一帧数据,这段时间内我们的发送方CPU可以去做别的事情,等transmitter发送完成后会产生一个TXD中断,该中断会导致事先绑定的中断处理程序执行,在这个中断处理程序中CPU会切换回来继续给transmitter放一帧数据,然后CPU切换离开;不使用中断的工作情景是:发送方事先禁止TXD中断(当然也不需要给相应的中断处理程序了),发送方CPU给一帧数据到transmitter,然后transmitter耗费一段时间来发送这帧数据,这段时间CPU不能离开,在这等着(CPU没有切换去做作的事情),待发送方发送完后CPU再给它一帧数据继续发送直到所有数据发完。(使用中断CPU在transmitter发送耗费时间内是可以去干别的事,而不使用中断CPU只能一直盯着发送直到发送全部数据完成)。CPU是怎么知道transmitter已经发送完了?有中断时发完会给一个中断,而没有中断时

操作系统精髓与设计原理笔记(1)

£可爱£侵袭症+ 提交于 2020-03-07 00:01:37
计算机系统概述 1.1基本构成 计算机基本构成:处理器、存储器、输入/输出部件 处理器:逻辑处理单元,控制计算机的操作,执行数据处理功能,(CPU)。 内存:存储数据和程序。特点是易失性,关机后,存储器的内容就会丢失,通常被称为实存储器或主存储器。 输入/输出模块:在计算机和外部环境(外部设备(存储器设备:硬盘、通信设备和终端))之间移动数据。 系统总线:为处理器、内存和输入/输出模块间提供通信的设施。 寄存器简介: CPU使用的寄存器 存储器地址寄存器(MAR):确定下一次读写的存储器地址。 存储器缓冲寄存器(MBR)存放要写入存储器的数据或从存储器读取的数据。 输入/输出寄存器: 输入/输出地址寄存器(I/O AR)确定一个特定的输入/输出设备。 输入/输出缓冲寄存器(I/O BR)用于在输入/输出模块和处理器间交换数据。 1.2处理器寄存器 处理器包含一组寄存器,它们提供一定的存储能力,比内存访问速度快,但比内存的容量小。 用户可见寄存器:优先使用这些寄存器,可以减少使用机器语言或汇编语言的程序员对内存的访问次数。对高级语言而言,由优化编译器负责决定哪些变量应该分配给寄存器,哪些变量应该分配给内存。一些高级语言(如C语言)允许程序员建议编译器把哪些变量保存在寄存器中。 控制和状态寄存器:用以控制处理器的操作,且主要被具有特权的操作系统例程使用,以控制程序的执行。 1.2

又能扯皮了!没内存了还能看片?

拥有回忆 提交于 2020-03-06 15:35:58
虚拟内存 尽管基址寄存器和变址寄存器用来创建地址空间的抽象,但是这有一个其他的问题需要解决: 管理软件的膨胀(managing bloatware) 。虽然内存的大小增长迅速,但是软件的大小增长的要比内存还要快。在 1980 年的时候,许多大学用一台 4 MB 的 VAX 计算机运行分时操作系统,供十几个用户同时运行。现在微软公司推荐的 64 位 Windows 8 系统至少需要 2 GB 内存,而许多多媒体的潮流则进一步推动了对内存的需求。 这一发展的结果是,需要运行的程序往往大到内存无法容纳,而且必然需要系统能够支持多个程序同时运行,即使内存可以满足其中单独一个程序的需求,但是从总体上来看内存仍然满足不了日益增长的软件的需求(感觉和xxx和xxx 的矛盾很相似)。而交换技术并不是一个很有效的方案,在一些中小应用程序尚可使用交换,如果应用程序过大,难道还要每次交换几 GB 的内存?这显然是不合适的,一个典型的 SATA 磁盘的峰值传输速度高达几百兆/秒,这意味着需要好几秒才能换出或者换入一个 1 GB 的程序。 SATA(Serial ATA)硬盘,又称串口硬盘,是未来 PC 机硬盘的趋势,已基本取代了传统的 PATA 硬盘。 那么还有没有一种有效的方式来应对呢?有,那就是使用 虚拟内存(virtual memory) ,虚拟内存的基本思想是,每个程序都有自己的地址空间

单片机内部结构(干货)

假装没事ソ 提交于 2020-03-06 03:07:19
程序计数器PC(Program Counter): 存放着下一条将要从程序存储器中取出的指令的地址。 工作方式: ① 程序计数器PC自动加1。 ②程序计数器将被置入新的数值。 ③ 在执行子程序或响应中断时:将PC的当前值(可称为断点值)自动送入堆栈;将子程序的入口地址或中断向量地址送入PC,程序流向发生变化,执行子程序或中断服务程序。 51单片机存储器采用 哈佛(Harvard)结构 , 即将程序存储器和数据存储器截然分开,程序存储器和数据存储器各有自己的寻址方式、寻址空间和控制系统。 51单片机的4个物理存储空间相当于3个逻辑存储空间。 程序存储器ROM: (内外统一编址) 用来存放暂时性的数据、运算的中间结果或用作堆栈。 随时进行数据的写入和读出,关闭电源时,其所存储的信息将丢失。 特殊存储器单元: 0000H:复位后程序自动运行的首地址 0003H:外部中断0入口地址 000BH:定时器0溢出中断入口地址 0013H:外部中断1入口地址 001BH:定时器1溢出中断入口地址 0023H:串行口中断入口地址 程序一般应安排在0030H地址以后 数据存储器RAM: 用来存放MCU的固定系统程序、应用程序、数据或表格。如系统监控程序等。 写入信息后不易改写的存储器。断电后,其中的信息保留不变。 ①工作寄存器区(含寄存器组0 ~ 3): 寄存器组0:地址00H~07H 寄存器组1

SPI协议(2)

好久不见. 提交于 2020-03-05 23:28:53
转自: http://www.sohu.com/a/211324861_468626 1、 SPI简介 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。 是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 SPI是一种高速的,全双工,同步的通信总线 ,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 2、 SPI特点 2.1采用主-从模式(Master-Slave) 的控制方式 SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave)。 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行 片选 (Slave Select) 来控制多个 Slave 设备。 SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作。 2.2采用同步方式(Synchronous)传输数据

【汇编】SI DI 的用法

风格不统一 提交于 2020-03-04 22:50:28
一、汇编语言中,为什么SI和DI不能同时使用汇编 其实你可以想一下,这两个寄存器的意思,SI源变址寄存器,DI目地变址寄存器,既然是变址寄存器,那么他们肯定是在某个地址的基础上进行偏移变化,由此我们就得出了需要基址寄存器。 你要是把这两个寄存器同时使用,那你地址变化的基址都没有,你该怎么变化呢?你在谁的基础上变化(也就是地址偏移)? 对于这些汇编中的规定,其实有时并不需要书上详细的介绍,我们都应该可以从中推导出这些规则,书上的那些介绍个人认为只是用来验证我们的推测的。或是对我们所掌握的知识的进行检测,用来说明我们所掌握的是对的! 1:数据寄存器,一般称之为通用寄存器组 8086 有8个8位数据寄存器, 这些8位寄存器可分别组成16位寄存器: AH&AL=AX:累加寄存器,常用于运算; BH&BL=BX:基址寄存器,常用于地址索引; CH&CL=CX:计数寄存器,常用于计数; DH&DL=DX:数据寄存器,常用于数据传递。 2:地址寄存器/段地址寄存器 为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址: CS(Code Segment):代码段寄存器; DS(Data Segment):数据段寄存器; SS(Stack Segment):堆栈段寄存器; ES(Extra Segment):附加段寄存器。 3:特殊功能的寄存器 IP(Instruction