处理嵌入式系统中的重置

时间:2017-10-25 10:08:32

标签: assembly linker embedded interrupt interrupt-handling

我被要求处理嵌入式系统的bootloader程序。 bootloader的主要功能是执行应用程序。

通常,如果没有bootloader,应用程序的内存组织就相当简单了:

0x00 Reset
0x00000004 intrreupt vector
0x00000400 application.

现在,一旦bootloader apper,我必须移位内存区域,所以bootloader代码将从底部开始:

0x00 Reset
0x00000004 bootloader interrupt vector
0x00000200 bootloader code
0x00001000 application code.

现在让我们回答一下问题: 如果bootloader执行正确的跳转并且将执行应用程序,那么重置后会发生什么?应用程序是否需要拥有自己的重置处理程序,例如,它只会跳转到0x00地址?

我对这种重置处理感到困惑,处理它的正确方法是什么。

感谢, 学家

2 个答案:

答案 0 :(得分:0)

只有一个复位向量。完成所有重置后,将重新启动引导加载程序。如果应用程序想要重置并最终执行控制,则引导加载程序必须将控制转移到应用程序。

复位不是跳转到复位向量,而是核心寄存器由硬件重新初始化,程序计数器指向复位地址。

答案 1 :(得分:0)

架构可能在精确细节上有所不同,但即使您的应用程序和引导加载程序具有独立的向量表,复位的效果也包括将向量表地址重置为默认地址,因此只有一个复位向量。

有关具体细节的特定处理器或体系结构,请参阅参考手册。它将包括所有寄存器和外设的复位状态。

相关问题