3

我想知道不同类型的复位和芯片中的定义。最好是冷、暖、系统、应用程序、开机复位。

也非常感谢他们每个人的一个简单示例。

谢谢。

4

1 回答 1

6

不确定您到底想了解什么。重置可以并且以多种不同的方式和位置使用。一般来说,没有规定可以在何时何地使用它们的规则。

相对于电流流过电路的速度,从电源“打开”到电压和电流稳定在可用且稳定的状态以使逻辑可以启动需要相当长的时间。一旦通电,驱动逻辑本身的时钟或振荡器将需要时间来稳定。使用某种时钟倍频器的芯片。例如,您的多千兆赫处理器通常会使用 100Mhz 振荡器,然后从芯片内部的振荡器中倍增。该电路需要一段时间才能锁定振荡器时钟,然后生成其倍频时钟。因此,您经常会看到全局复位,启动和运行芯片不需要的逻辑将希望保持在复位状态,直到事情足够稳定以便它们可以运行。这可以并且称为上电复位。某些电路用于在上电后将芯片的其余部分保持在复位状态一段时间。有很多不同的方法可以做到这一点。

通常,您的上电复位用于板上的所有逻辑,有时每个芯片都有自己独立的上电复位电路,当然有些系统是这两个极端的混合。您可以将与板上大部分逻辑相关的复位称为系统复位。导致整个系统不仅仅是它的一部分,被重置和/或释放。

有时你会看到允许软件选通全局复位的芯片,同样有很多不同的方法可以做到这一点。你必须避免明显的鸡和蛋问题。如果软件通过断言复位而对复位线进行开关控制,则会导致处理器以及软件本身进入复位状态,从而防止它导致复位被释放。因此,要么某些硬件未被相关重置重置,要么被给予命令以保持重置一段时间然后释放它。或者有时系统的工作方式软件可能会导致在第一个到达之前发送两个写入,一个断言重置另一个以释放它(这将是一个糟糕的硬件设计的软件破解)。由于电源已稳定,​​振荡器已稳定等,因此可以将其称为热复位,

系统设计可以为软件提供执行系统范围复位的能力,或者只提供系统的一部分,或者可能只提供运行软件的处理器或其芯片。例如,您可以想象系统已启动并运行,软件已对外围设备进行编程以执行某些操作,或者至少将其从上电复位状态更改,然后仅复位处理器,但外围设备没有。这可能对软件来说是可取的,也可能是不可取的,因为它必须从复位中恢复,并且可能必须确定外围设备是否也刚刚复位或处于未知状态。当软件启动时,软件设计可能无法假设外设处于已知的复位后状态。

这可以而且确实会被带到各种极端。时钟逻辑会消耗电力,如果您的 SOC 有您不使用的外围设备,那么它可能会明显浪费该系统不会使用的电源时钟逻辑。因此,一些系统设计为系统的各个部分,甚至每个单独的外围设备都具有复位和时钟,使软件能够精确控制功耗,并能够轻松地将芯片的部分复位到已知状态,从而使使用或重新使用这些外围设备更容易。通常用于以已知方式启动(嵌入式)系统。

冷与暖相反,冷复位可以是“电源循环”的另一种说法。关闭电源(意味着电路/系统变冷),然后打开电源,以便一切都可以从寒冷中恢复并再次稳定下来。热重置不会影响整个系统但只有部分系统会使用术语“暖”和“冷”的系统。热复位解决了一些崩溃,冷复位在理论上解决了更多问题,因为冷复位理论上会复位整个系统。但很自然,例如,如果您有一台扫描仪或打印机或其他一些有自己的电源的外围设备,不一定会从主计算机的冷重置中重置,您需要关闭所有设备并将其重新启动。

它真的没有什么魔力,设计人员认为需要重置的任何逻辑块都会有重置,重置是本地还是全局,是设计的一部分。可以认为芯片与由单独的函数调用和库调用组成的软件项目没有什么不同。用于创建现代逻辑的编程语言非常类似于具有软件函数和函数调用函数等的软件项目。主要区别在于逻辑确实并行运行,其次逻辑函数可以有时会有几十到几百个参数,其中软件代码段线性执行并且函数往往具有适度数量的调用。看起来像使用全局变量的项目一样可取或不可取,这些全局变量被编程语言假定为在程序启动时具有一定的状态。在 C 中,当 main() 发生时,有一些语言规则会告诉您所有全局变量的状态是什么,同样当输入一个函数时您的所有本地变量的状态也是如此。你可以想象在你的代码中个别全局变量被重置为已知状态的地方,x=0; y=7;等等。后来它们的使用是根据先前的状态 x++ 确定的;y-=z;当您希望将某物恢复到已知状态时,逻辑没有什么不同,您提供了一种机制来做到这一点。如果您的代码希望将大量变量恢复为已知状态,以便任务可以重新开始,例如图形程序完成了一个文件,而不退出该程序希望释放它为该文件分配的所有内存先前的图像,当没有打开的图像文件等时,灰色的菜单和按钮没有意义。您可能有一个函数调用其他导致重大清理发生的函数。这与热复位没有什么不同。退出程序并再次启动程序与冷复位没有什么不同。进入 main() 时的变量状态和/或调用函数时的局部变量状态是这些变量的上电复位状态。

于 2012-11-28T03:33:13.123 回答