ARM Cortex-m4引导序列

ARM Cortex-m4引导序列,arm,cortex-m,Arm,Cortex M,我对ARM Cortex-m处理器的引导顺序有点困惑。从许多不同的资源中,我读到重置后,cortex-m将内容从0x0复制到堆栈指针,并将重置处理程序地址从0x4复制到PC。。。 我的问题是: 1) cortex-m处理器是如何将这两个值复制到适当的寄存器的,我的意思是处理器需要LDR/STR指令才能这样做,但这里的值是自动复制的???处理器如何知道这两个字需要复制 2) cortex-m控制器是否包含最初执行的任何内置固件 3) 通常情况下,处理器复位后,从复位向量中的特定内存位置开始执行,跳

我对ARM Cortex-m处理器的引导顺序有点困惑。从许多不同的资源中,我读到重置后,cortex-m将内容从0x0复制到堆栈指针,并将重置处理程序地址从0x4复制到PC。。。 我的问题是:

1) cortex-m处理器是如何将这两个值复制到适当的寄存器的,我的意思是处理器需要LDR/STR指令才能这样做,但这里的值是自动复制的???处理器如何知道这两个字需要复制

2) cortex-m控制器是否包含最初执行的任何内置固件

3) 通常情况下,处理器复位后,从复位向量中的特定内存位置开始执行,跳转指令放置在该位置以复位处理程序。。。但在cortex-m中,处理器首先将前两个字复制到寄存器中,然后编程计数器点以重置处理器。。。没有跳转指令没有处理器复位跳转的特定内存位置。!!!这怎么可能

2) cortex-m控制器是否包含最初执行的任何内置固件

高度依赖于型号和品牌。示例:NXP LPC系列Cortex-M芯片(如LPC17xx)具有一些在闪存中的程序之前执行的屏蔽ROM指令。其他人可能没有这样的内存内置

1) cortex-m处理器如何将这两个值复制到适当的寄存器,我的意思是,处理器需要LDR/STR指令来完成这一操作

这发生在任何代码执行之前的硬件中,因此不需要LDR指令


如果你知道什么是状态机,以及如何用硬件描述语言(如VHDL或Verilog)实现状态机,那么它就简单得可笑了。

没有理由使用固件,固件对您的问题毫无帮助。有些处理器从一个地址开始执行,而另一些处理器则从一个已知位置的值的地址开始执行。我没有一个完整的分数,但后者(cortex-m所属)是我认为更常见的解决方案。在任何指令处理状态开始之前,可以有任意多个状态。指令实际上不再执行内存操作,就像printf()实际在屏幕上放置像素或字符一样。我可以在屏幕上放置像素/字符,而不必使用printf。您可能会想象,管道级的重置状态可以绑定到适当的指令,而不是使用额外的逻辑来执行该功能。。。