WinCE不能启动,卡在OEMCacheRangeFlush处

LouisScola 2011-10-20 09:37:05
CPU是FREESCALE的MX27

在eboot引导WinCE启动时,卡在OEMCacheRangeFlush处,一直在执行OEMCacheRangeFlush这个函数,这个函数的功能是刷新某个地址范围内的Cache和TLB。

我使用的是官方的BSP,官方BSP使用的RAM是128M,我们使用的是64M。我修改了config.bib和g_oalAddressTable,还有一些内存时序配置等。

请问哪里出了问题啊????

我的config.bib
*********************************************************************
; Name Address Size Type
ARGS 88000000 00001000 RESERVED
VPU 88001000 000FF000 RESERVED
FRAMEBUFFER 88100000 00100000 RESERVED
NK 88200000 02000000 RAMIMAGE
RAM 8A200000 01E00000 RAM

FSRAMPERCENT=0x10101010
AUTOSIZE=ON
ROMSIZE=02000000
ROMSTART=88200000
ROMWIDTH=32

IF IMGPROFILER
PROFILE=ON
ENDIF

; --------------------- Profiling-disabled kernel ----------------------
; PROFILE = OFF (does not include profiler structure and symbols)
; ----------------------------------------------------------------------
IF IMGPROFILER !
PROFILE=OFF
ENDIF

;
; ROMFLAGS is a bitmask of options for the kernel
; ROMFLAGS 0x0001 Disallow Paging
; ROMFLAGS 0x0002 Not all KMode
; ROMFLAGS 0x0010 Trust Module only
;
IF IMGTRUSTROMONLY
IF IMGNOTALLKMODE
ROMFLAGS=12
ENDIF
IF IMGNOTALLKMODE !
ROMFLAGS=10
ENDIF
ENDIF

IF IMGTRUSTROMONLY !
IF IMGNOTALLKMODE
ROMFLAGS=2
ENDIF
IF IMGNOTALLKMODE !
ROMFLAGS=0
ENDIF
ENDIF
*****************************************************************

我的g_oalAddressTable
DCD 0x88000000, CSP_BASE_MEM_PA_CSD0, 64 ; DDR RAM
DCD 0x80000000, CSP_BASE_MEM_PA_CS0, 32 ; NOR Flash
DCD 0x8C000000, CSP_BASE_MEM_PA_CS1, 64 ; CS1
DCD 0x90000000, CSP_BASE_MEM_PA_CS2, 32 ; CS2
DCD 0x92000000, CSP_BASE_MEM_PA_CS3, 32 ; CS3
DCD 0x94000000, CSP_BASE_MEM_PA_CS4, 32 ; CPLD
DCD 0x96000000, CSP_BASE_MEM_PA_CS5, 32 ; SRAM
DCD 0x98000000, CSP_BASE_MEM_PA_PCMCIA_CF, 64 ; PCMCIA/CF
DCD 0x9C000000, CSP_BASE_REG_PA_AIPI1, 1 ; Internal registers (AIPI1 + AIPI2 + AITC + ROM Patch)
DCD 0x9C100000, CSP_BASE_REG_PA_CSI, 1 ; CSI + ATA
DCD 0x9C200000, CSP_BASE_REG_PA_NANDFC, 1 ; EMI modules (NANDFC + ESDRAMC + WEIM + M3IF + PCMCIA)
DCD 0x9C300000, CSP_BASE_MEM_PA_VRAM, 1 ; VRAM (45K)
DCD 0x00000000, 0x00000000, 0 ; Terminate table

WinCE不能启动打印信息如下:
Windows CE Kernel for ARM (Thumb Enabled) Built on Oct 20 2009 at 18:39:19
+++OEMInit
INFO:OALLogSetZones: dpCurSettings.ulZoneMask: 0xffff
Cache:
L1Flags: 0x00000000
L1ISetsPerWay: 0x00000080 (128)
L1INumWays: 0x00000004 (4)
L1ILineSize: 0x00000020 (32)
L1ISize: 0x00004000 (16384)
L1DSetsPerWay: 0x00000080 (128)
L1DNumWays: 0x00000004 (4)
L1DLineSize: 0x00000020 (32)
L1DSize: 0x00004000 (16384)
+OALPAtoVA(0x10002000, 0)
-OALPAtoVA(va = 0xbc002000)
Power on Reset - Clear RAM
+OALInterruptInit
+OEMInterruptMapInit
-OEMInterruptMapInit
+OALPAtoVA(0x10040000, 0)
-OALPAtoVA(va = 0xbc040000)
+OALPAtoVA(0x10015000, 0)
-OALPAtoVA(va = 0xbc015000)
+OALIntrStaticTranslate(18, 56)
-OALIntrStaticTranslate
-OALInterruptInit(rc = 1)
+OALDisplaySplashScreen
+OALPAtoVA(0xa0000000, 0)
-OALPAtoVA(va = 0xa8000000)
+OALPAtoVA(0x10021000, 0)
-OALPAtoVA(va = 0xbc021000)
+OALPAtoVA(0x10015000, 0)
-OALPAtoVA(va = 0xbc015000)
+OALPAtoVA(0xa0100000, 0)
-OALPAtoVA(va = 0xa8100000)
+OALPAtoVA(0x10015000, 0)
-OALPAtoVA(va = 0xbc015000)
-DisplaySplashScreen(1)
+OALTimerInit( 1, 3325, 400 )
+OALIntrRequestSysIntr(1, 0xffffc784, 0x00000004)
-OALIntrRequestSysIntr(sysIntr = 16)
+OALPAtoVA(0x10003000, 0)
-OALPAtoVA(va = 0xbc003000)
+OEMInterruptEnable(16, 0x0, 0)
+OALIntrEnableIrqs(5, 0x89bfc810)
+BSPIntrEnableIrq(26)
-BSPIntrEnableIrq(irq = 26)
+BSPIntrEnableIrq(-1)
-BSPIntrEnableIrq(irq = -1)
+BSPIntrEnableIrq(-1)
-BSPIntrEnableIrq(irq = -1)
+BSPIntrEnableIrq(-1)
-BSPIntrEnableIrq(irq = -1)
+BSPIntrEnableIrq(-1)
-BSPIntrEnableIrq(irq = -1)
-OALIntrEnableIrqs(rc = 1)
-OEMInterruptEnable(rc = 1)
TCMP(0xcfd) TPRER(0x9) TCTL(0x513) TCN(0x1b1fc)
-OALTimerInit(rc = 1)
+OALPAtoVA(0x10015000, 0)
-OALPAtoVA(va = 0xbc015000)
+OALPAtoVA(0x1000e000, 0)
-OALPAtoVA(va = 0xbc00e000)
SW1A voltages: 0xffffffff (normal = 63, DVS = 63, standby = 63)
SW1A configuration: 0xffffffff (mode = 3, standby mode = 3, DVS speed = 3, panic = 1, soft start = 1)
Initialize the PMIC interface Done
+OALPAtoVA(0x10027000, 0)
-OALPAtoVA(va = 0xbc027000)
OEMInit: raising PMIC voltage
OEMInit: Updating CSCR from 0x33230107 to 0x33238107 ...
OEMInit: Updated CSCR to 0x33238107
---OEMInit
OEMInit Done
-OEMInit
+OEMCacheRangeFlush(0x00000000, 0, 0x00000018)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x00000000, 0, 0x00000001)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x00000000, 0, 0x00000001)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x00000000, 0, 0x00000004)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x00000000, 0, 0x00000004)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x00000000, 0, 0x00000001)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x00000000, 0, 0x00000004)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x89e5a000, 8, 0x00000004)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x8bfff000, 8, 0x00000004)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x89e59000, 8, 0x00000004)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x89e59000, 4096, 0x00000041)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x89e58000, 8, 0x00000004)
-OEMCacheRangeFlush
+OEMCacheRangeFlush(0x89e58000, 4096, 0x00000041)
-OEMCacheRangeFlush
...全文
170 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LouisScola 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 nx427 的回复:]
遇到同样的问题了 还在找原因
求教下楼主 ?
[/Quote]问题只要是两个
一是:必须保证你的地址空间分配正确,仔细关注config.bib和g_oalAddressTable
二是:在WinCE初始化RTC的时候,我们的板子初始化外设RTC时出错,导致不能获得时间卡死。
nx427 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 louisscola 的回复:]

引用 6 楼 nx427 的回复:
遇到同样的问题了 还在找原因
求教下楼主 ?
问题只要是两个
一是:必须保证你的地址空间分配正确,仔细关注config.bib和g_oalAddressTable
二是:在WinCE初始化RTC的时候,我们的板子初始化外设RTC时出错,导致不能获得时间卡死。
[/Quote]

主要是我这里现象是有时候能起来有时候起不来系统。config.bib和g_oalAddressTable我都看过了
如果要是有问题的话 那就会一直都起不来的。
我的PRIVATE下没源码不好再网下追了,现在只知道运行到THRDInit (); 里面的线程filesys。dll也引导出来了,就是不能区分是起文件系统时候出错的还是MapfileInit时候出错的
头疼中。。。。。
nx427 2011-11-09
  • 打赏
  • 举报
回复
遇到同样的问题了 还在找原因
求教下楼主 ?
LouisScola 2011-10-24
  • 打赏
  • 举报
回复
搞定了
等我总结下,再把解决方法发出来
woshi_ziyu 2011-10-22
  • 打赏
  • 举报
回复
没遇见过 帮顶
LouisScola 2011-10-21
  • 打赏
  • 举报
回复
在执行完OEMInit后,系统就挂了,好像是在KernelFindMemory这个函数里出现问题
google了一下,也有人出现这种问题,但都没有答案

按道理应该是config.bib和g_oalAddressTable设置有问题,但一直没发现问题所在

求救!!!
paul_chao 2011-10-21
  • 打赏
  • 举报
回复
請問LZ的 nk.bin, size 多大??

NK 88200000 02000000 RAMIMAGE

RAM total size = 64M, NK stay in RAM

Paul, Chao @ Techware

LouisScola 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 paul_chao 的回复:]
請問LZ的 nk.bin, size 多大??

NK 88200000 02000000 RAMIMAGE

RAM total size = 64M, NK stay in RAM

Paul, Chao @ Techware
[/Quote]
nk.bin size大小是26M

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧