Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arm 为什么对于Cortex-A重置处理程序位于0x0,而对于Cortex-M3重置处理程序不位于0x0_Arm_Microcontroller_Cortex M3_Cortex A - Fatal编程技术网

Arm 为什么对于Cortex-A重置处理程序位于0x0,而对于Cortex-M3重置处理程序不位于0x0

Arm 为什么对于Cortex-A重置处理程序位于0x0,而对于Cortex-M3重置处理程序不位于0x0,arm,microcontroller,cortex-m3,cortex-a,Arm,Microcontroller,Cortex M3,Cortex A,Cortex-M3的初始堆栈指针值位于0x0,重置处理程序位于0x4的原因是什么?这方面的设计理由是什么 为什么ARM人员不能像对Cortex-A那样将0x0留给重置处理程序,然后在重置处理程序中初始化SP?我认为这一个属于“这不是一个bug,这是一个功能”的横幅 ARM架构M(微控制器)配置文件具有与a和R配置文件完全不同的异常模型。A-profile(与R-profile一样)保留了与以前ARM处理器的向后兼容性。M-profile被允许偏离这一点,因此被设计为更容易完全从C/C++编程(没

Cortex-M3的初始堆栈指针值位于0x0,重置处理程序位于0x4的原因是什么?这方面的设计理由是什么


为什么ARM人员不能像对Cortex-A那样将0x0留给重置处理程序,然后在重置处理程序中初始化SP?

我认为这一个属于“这不是一个bug,这是一个功能”的横幅

ARM架构M(微控制器)配置文件具有与a和R配置文件完全不同的异常模型。A-profile(与R-profile一样)保留了与以前ARM处理器的向后兼容性。M-profile被允许偏离这一点,因此被设计为更容易完全从C/C++编程(没有asm)


因此,包含地址而不是指令的向量项,一旦这样做了,为什么不以相同的方式设置SP?它还可以在异常输入时自动保存状态。

unixsmurf所说的一切


传统的arm方法有点奇怪,典型的方法是地址列表,而不是指令表。所以这可能是一个因素。但是他们创建了大量的中断,不仅仅是一个(向量表是128/256深的,而不仅仅是少数),而且毫无疑问,在调用C之前,您不需要包装每个中断,因此向量表、模式的更改/缺少以及为您保留寄存器,将这些包放在一起。您可以将C处理程序的地址(包括重置向量)放在表中,以获得重置向量。在调用之前,您需要至少设置堆栈指针,因此您需要为用户指定一个点来指示堆栈指针的初始值。

感谢分享您的见解。