|
winCE5下 EBOOT 系列问题 ----------------4 HELP!!
[复制链接]
问题1:在:\WINCE500\PLATFORM\COMMON\SRC\ARM\INTEL\PXA27X\STARTUP\startup.s中执行bl OALXScaleSetFrequencies没有正常返回
发现在OALXScaleSetFrequencies函数中执行
ldr r1, =xlli_CLKREGS_PHYSICAL_BASE ; OSCC = OON | TOUT | CRI
mov r2, #(xlli_OSCC_OON :OR: xlli_OSCC_TOUT_EN :OR: xlli_OSCC_CRI)
str r2, [r1, #xlli_OSCC_offset]后死掉
我把OALXScaleSetFrequencies函数中除了
bl xlli_setClocks
bl xlli_freq_change之外所有语句去掉后,执行正常,可以正常返回,
请问OALXScaleSetFrequencies这个函数的作用是什么?是否可以象这样消掉?(我在WINCE42下并没有找到这个函数)
问题2:在bl OALXScaleSetFrequencies正常返回后,就顺利的从startup进入到OALStartUp中
我在开启MMU之前,即:
;Enable the MMU.
mcr p15, 0, r1, c1, c0, 0 ; MMU ON: All memory accesses are now virtual.
之前
通过点亮LED调试程序发现都可以正常执行,但是依然不能正常进入C语言的MAIN函数中打印出启动信息 !
所以现在不能确定是在开启MMU之后出现了问题,还是进入了C语言的MAIN函数,在MAIN中初始化串口失败了!!
请问我在开启MMU之后需要通过什么方式调试???
在开启MMU之前是直接访问GPIO的物理地址,开启之后我将所有点亮LED的程序中的物理地址都通过OEMAddressTable计算出对应的虚拟地址(应该是CACHED)直接替换掉原来的
物理地址,可以不能正确点亮LED,打印信息也只有在开启MMU之间的程序,开启MMU之后,在进入MAIN之前如何用汇编打印信息----不清楚!!
请问还有什么高招吗??各位!!
3:以下是点亮LED的程序:
Light_xillLEDs FUNCTION
ldr r2, =xlli_GPIOREGS_PHYSICAL_BASE 将此物理地址换成对应的虚拟地址
;Light D1, D2
ldr r3, [r2, #xlli_GPCR0_offset] 这个没换(偏移量都没换)
ldr r1, =0x0600
orr r3, r3, r1
str r3, [r2, #xlli_GPCR0_offset]
ldr r3, [r2, #xlli_GPCR0_offset]
ldr r2, =xlli_OSTREGS_PHYSICAL_BASE ; Load OS timer base address 将此物理地址换成对应的虚拟地址
ldr r3, [r2, #xlli_OSCR0_offset] ; Fetch starting value of OSCR0
ldr r1, =0xB4000
add r3, r3, r1 ; about 200ms, 0x384000 about 1000ms
delay ldr r1, [r2, #xlli_OSCR0_offset] ; Fetch current OSCR0 value
cmp r1, r3 ; Is the timer past the time out value?
bmi delay
;Black D1, D2
ldr r2, =xlli_GPIOREGS_PHYSICAL_BASE 将此物理地址换成对应的虚拟地址
ldr r3, [r2, #xlli_GPSR0_offset]
ldr r1, =0x0600
orr r3, r3, r1
str r3, [r2, #xlli_GPSR0_offset]
ldr r3, [r2, #xlli_GPSR0_offset]
ldr r2, =xlli_OSTREGS_PHYSICAL_BASE ; Load OS timer base address将此物理地址换成对应的虚拟地址
ldr r3, [r2, #xlli_OSCR0_offset] ; Fetch starting value of OSCR0
ldr r1, =0xB4000
add r3, r3, r1 ; about 200ms, 0x384000 about 1000ms
delay1 ldr r1, [r2, #xlli_OSCR0_offset] ; Fetch current OSCR0 value
cmp r1, r3 ; Is the timer past the time out value?
bmi delay1
mov pc, lr
ENDFUNC
谢谢各位!!!
|
|