嵌入式基础–重新启动和重置之间的区别

当使用基于Eclipse的IDE调试嵌入式系统时,毫无疑问,阅读器会在调试透视图中遇到“重置”和“重新启动”按钮。从高级的角度看,这两个选项可能看起来相同,但是在开发人员何时应该使用重启而不是重置上存在重要的区别。让’着眼于如何在标准应用程序中以及在使用引导加载程序时使用它们。

首先,我们来讨论基础知识和显而易见的内容。按下复位按钮可使程序在“上电复位”时复位到应用程序条目。当按下重置按钮时,开发人员将在处理器重置处理程序中发现自己。然后,开发人员可以逐步浏览所有代码,包括低级初始化。在应用程序进入主程序之前,通常会发生很多事情。

如果开发人员不关心在main之前发生什么,而只想重新启动应用程序并返回main,则可以按重新启动按钮。重新启动是组合操作。结果与开发人员按下“重设”,然后使用位于主行第一行的断点进行播放的结果相同。有时将重新启动定义为从入口点开始的应用程序。 (请注意,这与开机入口点不同)。

其次,对于使用内存中的单个应用程序的开发人员而言,重置和重新启动似乎几乎相同,但是如果开发人员具有引导加载程序和应用程序,那就很有趣了。在引导加载程序开发期间,开发人员可以使用调试器命令直接访问应用程序代码空间。这些命令可能类似于以下内容:

设置$ sp = * 0x280000
设置$ pc = * 0x280004
设置{int} 0xe000ed08 = 0x280000

这些命令告诉调试器在启动时将堆栈指针,程序计数器和中断向量表设置为内存中第一个位置以外的位置。当执行这些命令时,开发人员需要注意一些有趣且有用的事情。重置按钮仍然表现出预期的效果。按下它将返回到重置入口点,该入口点将成为引导加载程序重置向量。但是,如果开发人员按下重新启动按钮,则他们不会在运行后重置。相反,他们将在自己的应用程序代码的重置处理程序中找到自己!

在单个应用程序空间中工作的开发人员几乎不会注意到重置和重新启动之间的任何区别。实际上,他们将主要支持重启。在具有引导加载程序的环境中工作的开发人员仍然会喜欢重启以调试并使用其应用程序,但是重置还将为他们提供一种进入引导加载程序并调试组合的引导加载程序/应用程序的方法。

3 thoughts 上 “Embedded Basics –重新启动和重置之间的区别”

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.