我开始在STM32L152 Cortex-M3上做一些简单的项目。
我读到M3仅为thumb2,因此,我们需要将异常处理程序地址的LSB保持为'1‘,以便保持在thumb模式。
.thumb
.section .startup, "ax"
exc_vectors:
.word top_of_stack
.word reset_handler
.word NMI_handler
.word hardfault_handler
.
.
reset_handler:
@some code here既然指令是16位或32位的,那么说'reset_handler‘符号的地址具有LSB = 0是正确的吗?
如果是这样,通常情况下,如何/何时/在何处将处理程序符号(reset_handler、NMI_handler等)的最低有效位设置为“1”?
非常感谢
发布于 2014-02-20 02:54:03
C编译器会自己做这件事,所以你可以放心了。
Cortex-M3内核是32位的。'reset_handler‘向量的地址为0x04。你是对的,所有的向量都会有LSB == 0,但是!如果重置向量从地址0x0B0C开始,如下所示:
ResetISR:
00000b0c: F7FFBEC4 B.W _c_int00
00000b10: 4770 BX 然后编译器将在向量表中将其写为0x0B0D,如下所示:
00000004: 00000B0D ANDEQ https://stackoverflow.com/questions/21874925
复制相似问题