2、现在程序貌似卡死在这段中:
; *Flip the MMU ON* mcr p15, 0, r1, c1, c0, 0 ; MMU ON: All mem accesses now ~Virtual~
IF Interworking :LOR: Thumbing
bx r2
ELSE
mov pc, r2
ENDIF
nop
; **********************************
; MMU & caches now enabled.
; (r9) = physcial=virtual (direct mapped) address of 1st level page table
ALIGN
VirtualStart
; Set up a SVC mode stack
;
ldr sp, =EBOOT_PARTITION_VIR_C_BASE ; cached, virtual ram. Set Stack Pointer
add sp, sp, #StackOffset ; Space reserved for stack in the BOOT.BIB file
; Now that we have set up the MMU descriptors, are executing virtually, and
; have set up a stack, it is time to launch EBOOT.
;
IF :DEF: ETHBOOT bl main ; **Jump to Main.c::main(), never to return.**
nop
HANG
b HANG
ENDIF ; // if :DEF: ETHBOOT
但是我还不能确定是在这段中的哪句出现的问题。因为在此之间打印信息是通过直接操作物理寄存器打印的
打印方法如下:
ALIGN
test DCB 0xA, 0xD, "test", 0xA, 0xD, 0
.......
add r2, pc, #test-(.+8)
ldr r1, =BTUART_BASE_PHYSICAL
PrintStr r1, r2, r3
但是这句开始是进入虚拟地址,以前的物理寄存器操作在这里就不能用了 所以我想请问这段是怎么才能打印出信息呢????
我现在是调用C环境下的OEMWriteDebugByte这个函数
调用的方法如下::
bl OEMInitDebugSerial(因为在main()中首先是用这个函数做一下串口打印的初始化工作)
mov r1, #50
bl OEMWriteDebugByte
可是不能打印出来,不知道是不是程序死在那里还是我的打印方法不对???
请高手给我点指点!谢谢啦!
2、现在程序貌似卡死在这段中:
; *Flip the MMU ON* mcr p15, 0, r1, c1, c0, 0 ; MMU ON: All mem accesses now ~Virtual~
IF Interworking :LOR: Thumbing
bx r2
ELSE
mov pc, r2
ENDIF
nop
; **********************************
; MMU & caches now enabled.
; (r9) = physcial=virtual (direct mapped) address of 1st level page table
ALIGN
VirtualStart
; Set up a SVC mode stack
;
ldr sp, =EBOOT_PARTITION_VIR_C_BASE ; cached, virtual ram. Set Stack Pointer
add sp, sp, #StackOffset ; Space reserved for stack in the BOOT.BIB file
; Now that we have set up the MMU descriptors, are executing virtually, and
; have set up a stack, it is time to launch EBOOT.
;
IF :DEF: ETHBOOT bl main ; **Jump to Main.c::main(), never to return.**
nop
HANG
b HANG
ENDIF ; // if :DEF: ETHBOOT
但是我还不能确定是在这段中的哪句出现的问题。因为在此之间打印信息是通过直接操作物理寄存器打印的
打印方法如下:
ALIGN
test DCB 0xA, 0xD, "test", 0xA, 0xD, 0
.......
add r2, pc, #test-(.+8)
ldr r1, =BTUART_BASE_PHYSICAL
PrintStr r1, r2, r3
但是这句开始是进入虚拟地址,以前的物理寄存器操作在这里就不能用了 所以我想请问这段是怎么才能打印出信息呢????
我现在是调用C环境下的OEMWriteDebugByte这个函数
调用的方法如下::
bl OEMInitDebugSerial(因为在main()中首先是用这个函数做一下串口打印的初始化工作)
mov r1, #50
bl OEMWriteDebugByte
可是不能打印出来,不知道是不是程序死在那里还是我的打印方法不对???
请高手给我点指点!谢谢啦!