Hi all,

I'm having some problems with my BSP - I've got the OAL implemented
and mostly complete for my platform, but when booting up CE I get
a prefetch abort generated in filesystem.exe. I've checked and
rechecked the OAL code to see if I'm doing anything stupid and I
can't see anything. As its internal to filesystem.exe, I'm not sure
how to proceed to find the cause. Can anyone suggest a direction to
approach this from?

My OAL is based heavily on the CE5 SMDK2410 BSP - much of the code
is the same.

Googling showed up a previous issue someone had here due
to the Object Store not being cleaned - I've erased the Object
Store as described in the help by setting the three words at
pTOC->ulRAMFree to zero, and calling NKForceCleanBoot() in OEMInit().

Looking at the debug, I can see that when the exception is raised,
Lr resides within coredll.dll. I can also trace up nk.exe's call
stack and see that (one of its threads) is in RunApps() with the
stack looking like :

NK!SC_WaitForMultiple() line 4658
NK!SC_CreateProc(int 0x00000000, unsigned long 0x80000000,
void * 0x00000000, unsigned short * 0x00000000,
_STARTUPINFOW * 0x00000000, _PROCESS_INFORMATION * 0x00000000) line 6902
NK!RunApps() line 715 + 52 bytes
COREDLL!ThreadBaseFunc() line 568

So, I'm thinking that this is getting lost right at the start of
the filesys.exe process's birth. I'm slightly lost here as to where
to go. Any suggestions would be gratefully received!

Best Wishes,

Dave Peverley



----------------------------------------------------------------------

Debug Output :

The Kernel Debugger is waiting to connect with target.
0 PID:0 TID:0 -OALKitlInit(rc = 1)
0 PID:0 TID:0 -OALKitlStart(rc = 1)
0 PID:0 TID:0 -OEMInit
0 PID:0 TID:0 Sp=ffffc7cc
88 PID:1fdf002 TID:1fdf266 +OEMIoControl(0x1010004, 0xc201fd78, 4, 0x8155edb0, 520, 0x815607c0)
100 PID:1fdf002 TID:1fdf266 +OALIoCtlHalGetDeviceInfo(...)
101 PID:1fdf002 TID:1fdf266 -OALIoCtlHalGetDeviceInfo(rc = 1)
102 PID:1fdf002 TID:1fdf266 -OEMIoControl(rc = 1)
103 PID:1fdf002 TID:1fdf266 +OEMIoControl(0x1010004, 0xc201fd78, 4, 0x8155eba8, 520, 0x815607bc)
104 PID:1fdf002 TID:1fdf266 +OALIoCtlHalGetDeviceInfo(...)
104 PID:1fdf002 TID:1fdf266 -OALIoCtlHalGetDeviceInfo(rc = 1)
1960 PID:1fdf002 TID:1fdf266 -OEMIoControl(rc = 1)
1962 PID:1fdf002 TID:1fdf266 +OEMIoControl(0x1010004, 0xc201fd78, 4, 0x8155e9a8, 32, 0x815607b8)
1962 PID:1fdf002 TID:1fdf266 +OALIoCtlHalGetDeviceInfo(...)
1963 PID:1fdf002 TID:1fdf266 -OALIoCtlHalGetDeviceInfo(rc = 1)
1963 PID:1fdf002 TID:1fdf266 -OEMIoControl(rc = 1)
Kernel debugger connected.
The Kernel Debugger connection has been established (Target CPU is ARM).
Target name: CE Device
Probe name: KdStub
Binary Image should be loaded at 0x80100000 / Data relocated at 0x81506000
Loaded symbols for 'C:\WINCE500\RELEASE\NK.EXE'
Loaded symbols for 'C:\WINCE500\RELEASE\KD.DLL'
Loaded symbols for 'C:\WINCE500\RELEASE\OSAXST1.DLL'
Loaded symbols for 'C:\WINCE500\RELEASE\OSAXST0.DLL'
Loaded symbols for 'C:\WINCE500\RELEASE\HD.DLL'
Loaded symbols for 'C:\WINCE500\RELEASE\COREDLL.DLL'
1969 PID:1fdf002 TID:1fdf266 +OEMIoControl(0x10100b4, 0x0, 0, 0x0, 0, 0x0)
1970 PID:1fdf002 TID:1fdf266 -OEMIoControl(rc = 1)
Loaded symbols for 'C:\WINCE500\RELEASE\FILESYS.EXE'
1977 PID:61fcbbd6 TID:61fcbbb2 Prefetch Abort: Thread=81fcb970 Proc=8152f070 'filesys.exe'
1978 PID:61fcbbd6 TID:61fcbbb2 AKY=00000003 PC=00000000(???+0x00000000) RA=03fce628(coredll.dll+0x0000e628) BVA=00000000
FSR=00000035

----------------------------------------------------------------------

Modules :

Module : Image Range
coredll.dll 0x03FC0000 - 0x03FFCFFF
filesys.exe 0x04010000 - 0x04040FFF
hd.dll 0x80156000 - 0x80158FFF
kd.dll 0x80149000 - 0x80154FFF
nk.exe 0x80100000 - 0x80145FFF
osaxst0.dll 0x8015A000 - 0x80163FFF
osaxst1.dll 0x80165000 - 0x80168FFF


----------------------------------------------------------------------

Selected Regs :

Sp = 0x0405FE48
Lr = 0x03FCE628 (coredll above)
Pc = 0x00000000

----------------------------------------------------------------------

g_oalAddressTable :

DCD 0x80000000, 0x10000000, 32 ; SDRAM
DCD 0x82000000, 0x08000000, 16 ; FPGA regs / Ether device
DCD 0x83000000, 0x0C000000, 16 ; Boot RAM / Boot Flash
DCD 0x84000000, 0x00000000, 32 ; Strata Flash
DCD 0x88000000, 0x20000000, 1 ; Internal SRAM.
DCD 0x8BF00000, 0xFFF00000, 1 ; On-Chip registers.
DCD 0x00000000, 0x00000000, 0 ; End of Table.

----------------------------------------------------------------------

config.bib :

MEMORY
NK 80100000 01400000 RAMIMAGE ; 20MB for OS code
RAM 81500000 00B00000 RAM ; 11MB for RAM
FLASH 84000000 01000000 RESERVED ; 16MB Flash
ARGS 80020800 00000800 RESERVED ; 4K ARGS area

CONFIG
COMPRESSION=ON
KERNELFIXUPS=ON
PROFILE=OFF
ROMFLAGS=02

Re: Prefetch abort in filesys.exe by Dean

Dean
Wed Mar 02 14:16:05 CST 2005

prefetch aborts in filesys bootup are pretty much always memory corruption
of some type. Could be
1 - Object store not properly initialized (you've covered that)
2 - memory timings too aggressive
3 - hardware problems/signal integrity

Filesys can also blow up if you've got the hive registry turned on and it's
not properly configured.

--
Dean Ramsier - eMVP


"Dave Peverley" <dpeverley@mpc-data.co.uk> wrote in message
news:d02gc4$c5k$1@burton.mpc-data.co.uk...
> Hi all,
>
> I'm having some problems with my BSP - I've got the OAL implemented
> and mostly complete for my platform, but when booting up CE I get
> a prefetch abort generated in filesystem.exe. I've checked and
> rechecked the OAL code to see if I'm doing anything stupid and I
> can't see anything. As its internal to filesystem.exe, I'm not sure
> how to proceed to find the cause. Can anyone suggest a direction to
> approach this from?
>
> My OAL is based heavily on the CE5 SMDK2410 BSP - much of the code
> is the same.
>
> Googling showed up a previous issue someone had here due
> to the Object Store not being cleaned - I've erased the Object
> Store as described in the help by setting the three words at
> pTOC->ulRAMFree to zero, and calling NKForceCleanBoot() in OEMInit().
>
> Looking at the debug, I can see that when the exception is raised,
> Lr resides within coredll.dll. I can also trace up nk.exe's call
> stack and see that (one of its threads) is in RunApps() with the
> stack looking like :
>
> NK!SC_WaitForMultiple() line 4658
> NK!SC_CreateProc(int 0x00000000, unsigned long 0x80000000,
> void * 0x00000000, unsigned short * 0x00000000,
> _STARTUPINFOW * 0x00000000, _PROCESS_INFORMATION * 0x00000000) line
6902
> NK!RunApps() line 715 + 52 bytes
> COREDLL!ThreadBaseFunc() line 568
>
> So, I'm thinking that this is getting lost right at the start of
> the filesys.exe process's birth. I'm slightly lost here as to where
> to go. Any suggestions would be gratefully received!
>
> Best Wishes,
>
> Dave Peverley
>
>
>
> ----------------------------------------------------------------------
>
> Debug Output :
>
> The Kernel Debugger is waiting to connect with target.
> 0 PID:0 TID:0 -OALKitlInit(rc = 1)
> 0 PID:0 TID:0 -OALKitlStart(rc = 1)
> 0 PID:0 TID:0 -OEMInit
> 0 PID:0 TID:0 Sp=ffffc7cc
> 88 PID:1fdf002 TID:1fdf266 +OEMIoControl(0x1010004, 0xc201fd78, 4,
0x8155edb0, 520, 0x815607c0)
> 100 PID:1fdf002 TID:1fdf266 +OALIoCtlHalGetDeviceInfo(...)
> 101 PID:1fdf002 TID:1fdf266 -OALIoCtlHalGetDeviceInfo(rc = 1)
> 102 PID:1fdf002 TID:1fdf266 -OEMIoControl(rc = 1)
> 103 PID:1fdf002 TID:1fdf266 +OEMIoControl(0x1010004, 0xc201fd78, 4,
0x8155eba8, 520, 0x815607bc)
> 104 PID:1fdf002 TID:1fdf266 +OALIoCtlHalGetDeviceInfo(...)
> 104 PID:1fdf002 TID:1fdf266 -OALIoCtlHalGetDeviceInfo(rc = 1)
> 1960 PID:1fdf002 TID:1fdf266 -OEMIoControl(rc = 1)
> 1962 PID:1fdf002 TID:1fdf266 +OEMIoControl(0x1010004, 0xc201fd78, 4,
0x8155e9a8, 32, 0x815607b8)
> 1962 PID:1fdf002 TID:1fdf266 +OALIoCtlHalGetDeviceInfo(...)
> 1963 PID:1fdf002 TID:1fdf266 -OALIoCtlHalGetDeviceInfo(rc = 1)
> 1963 PID:1fdf002 TID:1fdf266 -OEMIoControl(rc = 1)
> Kernel debugger connected.
> The Kernel Debugger connection has been established (Target CPU is ARM).
> Target name: CE Device
> Probe name: KdStub
> Binary Image should be loaded at 0x80100000 / Data re