影子寄存器实际上是什么?


Answers:


11

我猜您在PIC编程方面遇到了这个问题。PIC最初以非常直接的方式处理I / O端口-您可以在相同的地址上读取它们在外部具有的值,或写入输出的值。不利的一面是,您试图输出的值可能与引脚上的状态不匹配-可能是其他原因在更强地驱动它,或者可能还没有完成更改。这意味着,如果您只想更新端口的一部分,则需要一个单独的变量来跟踪您想要的状态,而不是获取状态。我记得那个单独的变量通常被称为影子寄存器,因为您总是使用它来存储(不可见的)输出寄存器的副本。最近的PIC通过添加“闩锁”地址来避免这种情况,可以读取输出寄存器的位置。这在其他微控制器中也是常见的,例如AVR上的端口与引脚地址。

在PC体系结构中,影子存储器有一个类似的术语。在这种情况下,通常意味着一部分RAM用于存储较慢ROM的副本,并映射到相同的地址。它再次存储其他一些存储的副本,该副本是隐藏的,因为该副本会在地址空间中替换它。

编辑:看到它是TMS320,影子寄存器提供了一个双缓冲区;此技术用于确保更新在适当的时间发生。比较图形中帧缓冲区交换的使用。该数据手册显示阴影的几个寄存器活动版本。例如考虑一个指示脉冲结束的寄存器。如果要将其更改为较短的脉冲,则在脉冲尚未完成时执行此操作可能会导致一个脉冲根本无法完成(因为它永远不等于该循环中的最终值)。但是,如果您写入影子寄存器,则硬件可以在已知安全的位置将其复制到活动寄存器中-例如,恰好在定时器结束时。《数据手册》中没有对此进行描述,该手册涵盖了给定芯片的特定参数。了解TI,很可能单独的手册描述每个模块的功能;此人在第2.2节中提到了阴影模式。


3
特别适用于寄存器的术语“影子”的另一种用法是将体系结构寄存器名称映射到不同的物理寄存器,以实现快速的全部或部分上下文切换。(有时将“存储寄存器”用作同义词。)这通常旨在加速中断。
保罗·克莱顿

1

影子寄存器和镜像寄存器都是指可以从多个地址访问的寄存器。例如,在硬件中,给定寄存器的一个实例位于F00h。但是,如果其别名为1F00h,则对F00h的读取或写入与对1F00h的读取或写入相同,反之亦然。


2
如果能解释这些影子寄存器的用途,那将是一个很好的补充。
2014年

0

简而言之,影子寄存器是微控制器内设计的用于保存某些数据以供以后使用的寄存器。“影子”这个名称意味着要重复一些值并再次使用它-这样它就不会丢失。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.