工具与软件:
您好!
在 C:\ti\mcu_plus_sdk_am64x_09_01_00_41\source\kernel_nortos\dpl\r5\boot_armv7r_asm.S 中、
我看到过在汇编代码中、它会初始化7种模式。 IRQ、FIQ、用户、系统中止等
_SET_TO_FIQ_MODE:
//*-------------------------------------------------------
//*设置为 FIQ 模式
//*
//*-------------------------------------------------------
r0女士、CPSR
bic r0、r0、#0x1F //清除模式
ORr r0 、r0、#0x11 //设置 FIQ 模式
MSR CPSR_CF、r0
_init_fiq_mode_stack
//*-------------------------------------------------------
//*初始化 FIQ 模式堆栈
//*-------------------------------------------------------
LDR sp、c_fiq_stack_end
//*-------------------------------------------------------
//*设置为 IRQ 模式
//*-------------------------------------------------------
r0女士、CPSR
bic r0、r0、#0x1F //清除模式
ORr r0 、r0、#0x12 //设置 IRQ 模式
MSR CPSR_CF、r0
//*-------------------------------------------------------
//*初始化 IRQ 模式堆栈
//*-------------------------------------------------------
LDR sp、c_irq_stack_end
//*-------------------------------------------------------
//*设置为 SVC 模式
//*-------------------------------------------------------
r0女士、CPSR
bic r0、r0、#0x1F //清除模式
ORr r0 、r0、#0x13 //设置 SVC 模式
MSR CPSR_CF、r0
//*-------------------------------------------------------
//*初始化 SVC 模式堆栈
//*-------------------------------------------------------
LDR sp、c_SVC_STACK_END
//*-------------------------------------------------------
//*设置为中止模式
//*-------------------------------------------------------
r0女士、CPSR
bic r0、r0、#0x1F //清除模式
ORr r0 、r0、#0x17 //设置中止模式
MSR CPSR_CF、r0
//*-------------------------------------------------------
//*初始化中止模式堆栈
//*-------------------------------------------------------
LDR sp、c_abort_stack_end
//*-------------------------------------------------------
//*设置为中止模式
//*-------------------------------------------------------
r0女士、CPSR
bic r0、r0、#0x1F //清除模式
ORr r0 、r0、#0x1B //设置中止模式
MSR CPSR_CF、r0
//*-------------------------------------------------------
//*初始化未定义的模式堆栈
//*-------------------------------------------------------
LDR sp、c_undefined_stack_end
//*-------------------------------------------------------
//*设置为系统模式
//*-------------------------------------------------------
r0女士、CPSR
bic r0、r0、#0x1F //清除模式
ORR r0 、r0、#0x1F //设置系统模式
MSR CPSR_CF、r0
我的问题、
1. 进入每种模式并初始化所有这些模式的目的是什么,如果我们在 SBL 中不使用该模式,那么这种冗余是什么?
2.在 SBL 中、实际上我们只需要系统模式。 跳转到应用程序后、应用程序汇编还会设置7种模式 是否正确?
3.我们可以删除其他6种模式,因为,它永远不会被使用,然后跳到 应用程序主。
谢谢。