startup.s启动代码文件:
; Enter Supervisor Mode and set its Stack Pointer MSR CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit MOV SP, R0 SUB R0, R0, #SVC_Stack_Size ; Enter User Mode and set its Stack Pointer MSR CPSR_c, #Mode_USR
其中
1.
MSR CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit
:OR: 是内置的操作符 详见帮助文档 Operator precedence
这一句将 CPSR的I F位置位 关中断
2.
MSR CPSR_c, #Mode_USR
Mode_USR =0x10
进入用户中断模式前I F位清位 开中断
这就是为什么在 Realview中不用手动开中断的原因了