研究过后觉得是堆栈空间的问题:能否有人帮忙解释一下是怎么分配的<br /><br />__user_initial_stackheap <br /> LDR r0,=bottom_of_heap <br />; LDR r1,=StackUsr <br /> LDR r2,=top_of_heap <br /> LDR r3,=bottom_of_Stacks <br /> MOV pc,lr <br /> <br />StackIrq DCD IrqStackSpace + (IRQ_STACK_LEGTH - 1)* 4<br />StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4<br />StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4<br />StackUnd DCD UndtStackSpace + (UND_STACK_LEGTH - 1)* 4<br /><br /><br /> IF :DEF: EN_CRP<br /> IF . >= 0x1fc<br /> INFO 1,"
The data at 0x000001fc must be 0x87654321.
Please delete some source before this line."<br /> ENDIF<br />CrpData<br /> WHILE . < 0x1fc<br /> NOP<br /> WEND<br />CrpData1<br /> DCD 0x87654321 ;/*When the Data is 为0x87654321,user code be protected. 当此数为0x87654321时,用户程序被保护 */<br /> ENDIF<br /><br />;/* 分配堆栈空间 */<br /> AREA MyStacks, DATA, NOINIT, ALIGN=2<br />IrqStackSpace SPACE IRQ_STACK_LEGTH * 4 ;Stack spaces for Interrupt ReQuest Mode 中断模式堆栈空间<br />FiqStackSpace SPACE FIQ_STACK_LEGTH * 4 ;Stack spaces for Fast Interrupt reQuest Mode 快速中断模式堆栈空间<br />AbtStackSpace SPACE ABT_STACK_LEGTH * 4 ;Stack spaces for Suspend Mode 中止义模式堆栈空间<br />UndtStackSpace SPACE UND_STACK_LEGTH * 4 ;Stack spaces for Undefined Mode 未定义模式堆栈<br /><br /> AREA Heap, DATA, NOINIT<br />bottom_of_heap SPACE 1<br /><br /> AREA StackBottom, DATA, NOINIT<br />bottom_of_Stacks SPACE 1<br /><br /> AREA HeapTop, DATA, NOINIT<br />top_of_heap<br /><br /> AREA Stacks, DATA, NOINIT<br />StackUsr<br /><br /> END
|