ARM Cortex-m4 启动顺序
ARM Cortex-m4 boot sequence
我对 ARM Cortex-m 处理器的启动顺序有点困惑。从许多不同的资源中,我读到在重置时,cortex-m 将内容从 0x0 复制到堆栈指针并将重置处理程序地址从 0x4 复制到 PC ...
我的问题是:
1) cortex-m 处理器如何将这两个值复制到适当的寄存器,我的意思是处理器需要 LDR/STR 指令来这样做,但这里的值是自动复制的???处理器如何知道这两个词需要被复制。
2) cortex-m 控制器是否包含初始执行的任何内置固件?
3) 通常处理器在复位后,从复位向量中的特定内存位置开始执行,其中跳转指令被放置在复位处理程序中……但在 cortex-m 中,处理器首先将前两个字复制到寄存器中然后程序计数器指向重置处理程序...没有跳转指令没有处理器在重置时跳转的特定内存位置。!!!怎么可能??
2) does cortex-m controller contains any builtin firmware that is executed initially?
很大程度上取决于型号和品牌。示例:NXP LPC 系列 Cortex-M 芯片(如 LPC17xx)具有一些在闪存中的程序之前执行的屏蔽 ROM 指令。其他人可能没有这样的内存。
1) how the cortex-m processor copies these two values to appropriate registers, I mean processor need LDR/STR instruction to do so
这在硬件中发生在任何代码执行之前,因此不需要 LDR 指令。
如果您知道状态机是什么以及如何使用 VHDL 或 Verilog 等硬件描述语言来实现状态机,它就简单得离谱。
我对 ARM Cortex-m 处理器的启动顺序有点困惑。从许多不同的资源中,我读到在重置时,cortex-m 将内容从 0x0 复制到堆栈指针并将重置处理程序地址从 0x4 复制到 PC ... 我的问题是:
1) cortex-m 处理器如何将这两个值复制到适当的寄存器,我的意思是处理器需要 LDR/STR 指令来这样做,但这里的值是自动复制的???处理器如何知道这两个词需要被复制。
2) cortex-m 控制器是否包含初始执行的任何内置固件?
3) 通常处理器在复位后,从复位向量中的特定内存位置开始执行,其中跳转指令被放置在复位处理程序中……但在 cortex-m 中,处理器首先将前两个字复制到寄存器中然后程序计数器指向重置处理程序...没有跳转指令没有处理器在重置时跳转的特定内存位置。!!!怎么可能??
2) does cortex-m controller contains any builtin firmware that is executed initially?
很大程度上取决于型号和品牌。示例:NXP LPC 系列 Cortex-M 芯片(如 LPC17xx)具有一些在闪存中的程序之前执行的屏蔽 ROM 指令。其他人可能没有这样的内存。
1) how the cortex-m processor copies these two values to appropriate registers, I mean processor need LDR/STR instruction to do so
这在硬件中发生在任何代码执行之前,因此不需要 LDR 指令。
如果您知道状态机是什么以及如何使用 VHDL 或 Verilog 等硬件描述语言来实现状态机,它就简单得离谱。