启动代码和重置处理程序有什么区别

问题描述 投票:0回答:3

您好 stackoverflow 社区,

有人可以帮我理解启动代码和重置处理程序之间的区别吗?当启动我们的微控制器时,哪个叫?当我们重置微控制器时,哪个被称为?

我知道启动代码可以在startup.s文件中找到,我们在哪里可以找到重置处理程序?

谢谢!

assembly arm microcontroller
3个回答
2
投票

启动代码和重置处理程序只是同一事物的两个名称。

Reset handler 就像一个中断,由 MCU 在启动时调用。 MCU 从中断向量表中加载复位处理程序地址。重置处理程序通常只是调用启动或由启动组成。

Startup 通常用汇编编写,但有时用 C 语言编写。要找到重置处理程序 - 查看中断向量表,对于 Cortex-M 内核,它是第二项,第一项是堆栈顶部初始值。


1
投票

某些微控制器允许您区分不同类型的复位(例如加电复位、软件复位、掉电复位以及可能的其他复位)。在这种情况下,您的重置处理程序可以检查重置原因,并仅在确实需要时执行启动代码来初始化硬件并启动主要任务。


0
投票

启动代码和重置处理程序几乎相同,例如 Cortex-M 内核。

reset Handler 只是一个大多数时候在汇编中实现的函数,但它可以用 C 实现,也可以用作跳转到主应用程序入口点 (main()) 之前要执行的第一个函数或例程。

启动代码主要由汇编代码组成(但也可以用 c 语言编写),这些代码将在跳转到主入口 (main()) 之前作为第一个例程执行。

尽管如此,启动代码位于向量表的重置处理程序例程旁边,其中中断/异常条目地址位于其中,并且在其之上,我们可以决定也定位每个中断/异常处理程序的默认例程,但一般来说,如果我们这样做所以我们需要确保这些默认处理程序被标记为弱属性,以允许用我们自己的正确实现覆盖这些默认例程。

© www.soinside.com 2019 - 2024. All rights reserved.