Hi,
When doing a suspend resume cycle (waking up by rtc) I get exceptions
and the image stops working.
I get back from the suspend state and finish the OEMPowerOff call, and
then I get exceptions without specifying in which dll they occur. I
tried to build a thin client without using almost any of my drivers
(in case the problem is in one of the PowerUp function), but the
problem persists. When I ran a release image with KITL and
KernelDebugger I got a debugchk failure in the kcall.c file - line
1152 (this debugchk says that we are trying to wake a non sleeping
thread).
So my question is:
Can you advise me on ways to debug this problem. I have no idea how to
know what is the cause of the exceptions.
My Environment is:
PXA300
WinCE6.0 - including all QFE's - even the june one
BSP based on Zylonite PXA310
I compare the Suspend and resume routines to the ones implemented in
the Zylonite PXA300 WinCE5.0 BSP and they are the same. From my
understanding of the developer manual this is not a problem due to the
difference in the CPU's.
The exceptions I get are as follows:
Return from OEMPowerOff
Exception 'Data Abort'(4) Thread-Id=05b50002(pth=8288b1c8) PC=8003ab30
BVA=c3d0042a, dwInfo = 00000003
R0=60000093 R1=60000013 R2=6000001f R3=ffffc800
R4=80020fd4 R5=81572014 R6=81572728 R7=81574704
R8=000000f9 R9=00000064 R10=00000000 R11=c031e5c4
R12=8003ab30 SP=d3b4f170 Lr=8003ab30 Psr=6000001f
Exception 'Data Abort'(4) Thread-Id=05b50002(pth=ffffc634) PC=80037734
BVA=c3d0042a, dwInfo = 00000003
R0=ffffc800 R1=80032898 R2=87fdc938 R3=c3d0040e
R4=81572014 R5=00000000 R6=81574704 R7=00000000
R8=00000001 R9=00000000 R10=00000001 R11=00000001
R12=00000000 SP=ffffc784 Lr=80037704 Psr=a0000013
Exception 'Data Abort'(4) Thread-Id=05b50002(pth=8288b1c8) PC=8003ab30
BVA=e5823014, dwInfo = 00000005
R0=60000093 R1=60000013 R2=6000001f R3=ffffc800
R4=80020fd4 R5=81572014 R6=81572728 R7=81574704
R8=000000f9 R9=00000064 R10=00000000 R11=c031e5c4
R12=8003ab30 SP=d3b4f170 Lr=8003ab30 Psr=6000001f
Exception 'Data Abort'(4) Thread-Id=05b50002(pth=ffffc398) PC=8004004c
BVA=e5823014, dwInfo = 00000005
R0=87ffe09c R1=80037734 R2=80040048 R3=e5823000
R4=87ffe09c R5=81572410 R6=80037734 R7=80040048
R8=ffffc538 R9=00000000 R10=ffffc5b0 R11=80037734
R12=00000000 SP=ffffc4e8 Lr=80040130 Psr=a0000013
Exception 'Data Abort'(4) Thread-Id=05b50002(pth=8288b1c8) PC=8003ab30
BVA=e5823014, dwInfo = 00000005
R0=60000093 R1=60000013 R2=6000001f R3=ffffc800
R4=80020fd4 R5=81572014 R6=81572728 R7=81574704
R8=000000f9 R9=00000064 R10=00000000 R11=c031e5c4
R12=8003ab30 SP=d3b4f170 Lr=8003ab30 Psr=6000001f
Exception 'Data Abort'(4) Thread-Id=05b50002(pth=ffffc0fc) PC=8004004c
BVA=e5823014, dwInfo = 00000005
R0=87ffe09c R1=8004004c R2=80040048 R3=e5823000
R4=87ffe09c R5=81572410 R6=8004004c R7=80040048
R8=ffffc29c R9=00000000 R10=ffffc314 R11=8004004c
R12=00000000 SP=ffffc24c Lr=80040130 Psr=a0000013
Exception 'Data Abort'(4) Thread-Id=05b50002(pth=8288b1c8) PC=8003ab30
BVA=e5823014, dwInfo = 00000005
and on it goes.
Any suggestion on how to debug - or even a thought on the cause - will
be welcomed.
Thanks,
Shai
Michel Verhagen (eMVP) - 13 Jul 2008 22:04 GMT
Well, you can use the exception information to find out exactly in what
function in what module and on what line the exception happens. From
there you should be able to fix the problem.
See this excellent article by Bruce:
http://geekswithblogs.net/BruceEitman/archive/2008/06/02/platform-builder-find-t
he-source-of-a-data-abort-an.aspx
Good luck,
Michel Verhagen, eMVP
Check out my blog: http://GuruCE.com/blog
GuruCE Ltd.
Microsoft Embedded Partner
http://GuruCE.com
Consultancy, training and development services.
> Hi,
> When doing a suspend resume cycle (waking up by rtc) I get exceptions
[quoted text clipped - 69 lines]
> Thanks,
> Shai
paul_chao@techware.com.tw - 15 Jul 2008 12:06 GMT
> Well, you can use the exception information to find out exactly in what
> function in what module and on what line the exception happens. From
[quoted text clipped - 87 lines]
>
> - 顯示被引用文字 -
Does your SDRAM or DDRRAM has been enabled (return back from self-
refresh mode) resume from OEMPowerOff ?
Looks like the memory access has some problems.
-Paul @ TECHWARE
shai - 15 Jul 2008 12:44 GMT
Thanks for the feedback,
Michel - I took a look at Bruce's blog, but the exception's data seems
to be corrupted, and I could not correlate it to Bruce's post.
Paul - You are right, I am checking it now and I wanted to post back
when I found the root cause. I have two banks of DRAM and it seems
that the 2nd bank is not initialized properly when returning from
suspend. I pinned it to this after trying to jump back to the start of
the image when coming back from suspend, and since nothing should have
changed the image should have started as if we started after a cold
boot, BUT it crashed after trying to register the extended DRAM.
I'll post back when I find the exact problem.
Thanks,
Shai
On Jul 15, 2:06 pm, paul_c...@techware.com.tw wrote:
> > Well, you can use the exception information to find out exactly in what
> > function in what module and on what line the exception happens. From
[quoted text clipped - 93 lines]
>
> -Paul @ TECHWARE
shai - 29 Jul 2008 13:56 GMT
Well for anyone who finds this post useful in the future:
When going to sleep the DMC(Dynamic memory controller) control
register was reset to enable only bank number 1, so enabling DCSE1
when resuming resolved the problem.
Shai
> Thanks for the feedback,
>
[quoted text clipped - 112 lines]
>
> > -Paul @ TECHWARE