Re: Migrating Windows CE.NET 4.2 to CE 5.0 on OMAP1510 platform

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance



Hi Paul,
Here is the debug output,
Sent BOOTME to 255.255.255.255

ARP request received, response sent...
Locked Down Link 1

Src IP 172.29.4.100 Port 0800 Dest IP 172.29.6.26 Port 0C50

EthDown: Received TFTPD_OPEN for boot.bin.
EthDown: BIN image start 0x40000, length 0x1A11900.
EthDown: Downloading to Flash...
FlashFifo: Found INTEL flash.
FlashFifo: FIFOBase = 0xA4040000, FIFOTop 0xA5FC2000.
EthDown: Record start 0x40000, length 0x4, checksum 0x1EB.
EthDown: End of record, wrote 0x4 bytes, checksum = 0x1EB.
EthDown: Record start 0x40040, length 0x8, checksum 0x360.
EthDown: End of record, wrote 0x8 bytes, checksum = 0x360.
EthDown: Record start 0x40048, length 0x4, checksum 0x1CC.
EthDown: End of record, wrote 0x4 bytes, checksum = 0x1CC.
EthDown: Record start 0x41000, length 0xAA78C, checksum 0x40DE363.
FlashWrite: Record start 0x40000, length 0x4, checksum 0x1EB.
FlashWrite: Writing record...
FlashWrite: End of record, wrote 0x4 bytes, checksum = 0x1EB.
FlashWrite: Record start 0x40040, length 0x8, checksum 0x360.
FlashWrite: Writing record...
....
....
.....

FlashWrite: End of record, wrote 0x1980 bytes, checksum = 0x9157C.
FlashWrite: Record start 0x0, length 0x80041000, checksum 0x0.
FlashWrite: End of image.
EBOOT: Flash programming complete. Total transfer average 49163 bytes/sec.
EBOOT: Jumping to image at 0x41000...
EBOOT: Leaving main().
OEMInitDebugSerial: KITL initialization failed.

OEMInitDebugSerial: KITL initialization failed.

Windows CE Kernel for ARM (Thumb Enabled) Built on May 30 2005 at 19:12:45

ProcessorType=0925 Revision=2

sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 80041038

RelocInit: Relocated SDRAM functions start=0x8005e6f8, end=0x8005e93c.

RelocInit: Size of relocated SDRAM functions=0x244.

RelocInit: Base of SDRAM relocate area=0x8404bc40.

RelocInit: Relocating 580 bytes of SDRAM functions.

g_pIdentifyFlash=0x8404bc44.

g_pInitIntelFlash=0x8404bd0c.

g_pInitIntelFlash=0x8404bde0.

RelocInit: Relocated SDRAM functions start=0x8005e940, end=0x8005e9f8.

RelocInit: Size of relocated SDRAM functions=0xb8.

RelocInit: Base of SDRAM relocate area=0xa802f000.

RelocInit: Relocating 184 bytes of ISRAM functions.

g_pSetEMIFFastRegs=0xa802f004.

Using SDF3 SDRAM timing configuration.

Flash clock frequency = 12000000 Hz.

Init: Found INTEL_STRATA_128 on CS0.

SetClock: Configuring for Full Synchronous mode...

OEMClockFreq = 12000000 Hz.
OEMClockFreqDSP = 12000000 Hz.
OEMClockFreqTC = 12000000 Hz.
OEMClockFreqDSPMMU = 12000000 Hz.
OEMClockFreqLCD = 3000000 Hz.
OEMClockFreqPerf = 3000000 Hz.
Using SDF0 SDRAM timing configuration.

Flash clock frequency = 84000000 Hz.

Init: Found INTEL_STRATA_128 on CS0.

SetClock: Configuring for Synchronous Scalable mode...

OEMClockFreq = 168000000 Hz.
OEMClockFreqDSP = 168000000 Hz.
OEMClockFreqTC = 84000000 Hz.
OEMClockFreqDSPMMU = 84000000 Hz.
OEMClockFreqLCD = 42000000 Hz.
OEMClockFreqPerf = 42000000 Hz.
Using SDF0 SDRAM timing configuration.

Flash clock frequency = 84000000 Hz.

Init: Found INTEL_STRATA_128 on CS0.

SetClock: Configuring for Synchronous Scalable mode...

OEMClockFreq = 168000000 Hz.
OEMClockFreqDSP = 168000000 Hz.
OEMClockFreqTC = 84000000 Hz.
OEMClockFreqDSPMMU = 84000000 Hz.
OEMClockFreqLCD = 42000000 Hz.
OEMClockFreqPerf = 42000000 Hz.
Splash+

LCDSetupInit+

LCDSetupRegs: LCD registers initial values.
LCD Control = 0xfe000cec.
LCD Timing0 = 0x27030cef.
LCD Timing1 = 0x802093f.
LCD Timing2 = 0xfc000002.
MCU_CKCTL = 0x250a.
LCDSetupRegs: Setting LCD registers for 240x320, 16BPP @ 60+/-3Hz.
LCDSetupRegs: LCD controller maximum frequency = 168000000.
LCDSetupRegs: Total PCLKs per HSYNC = 288.
LCDSetupRegs: Total HSYNCs per VSYNC = 333.
LCDSetupRegs: PCLKs per VSYNC = 95904.
LCDSetupRegs: PCLK (MIN, MID, MAX) 5466528, 5754240, 6041952 (Hz).
LCDSetupRegs: Frame buffer in ISRAM.
LCDSetupRegs: At LCDDIV = 8, LCDClockFreq = 21000000Hz,
PCD = 4, Total Divisor = 32.
PixFreq = 5250000Hz, FrameRate = 55Hz.
LCDSetupRegs: At LCDDIV = 4, LCDClockFreq = 42000000Hz,
PCD = 7, Total Divisor = 28.
PixFreq = 6000000Hz, FrameRate = 63Hz.
LCDSetupRegs: Using LCDDIV = 4, PCD = 7.
LCDSetupRegs: LCD registers final values.
LCD Control = 0xfe000cec.
LCD Timing0 = 0x27030cef.
LCD Timing1 = 0x802093f.
LCD Timing2 = 0xfc000007.
MCU_CKCTL = 0x250a.
LCDSetupDMA: DMA registers initial values.
DMA LCD Control = 0x0.
DMA LCD TopF1 = 0x11fc2000.
DMA LCD BotF1 = 0x11fe781e.
LCDSetupDMA: Frame buffer in ISRAM.
LCDSetupDMA: Palette entry 0 (0x88000000) = 0x4000.
LCDSetupDMA: DMA registers final values.
DMA LCD Control = 0x40.
DMA LCD TopF1 = 0x20000000.
DMA LCD BotF1 = 0x2002581e.
OEMInit is done!!! by Vadivel

OEMInit: is done! by Vadivel.

Booting Windows CE version 5.00 for (ARM)

&pTOC = 80049a74, pTOC = 81a4ff2c, pTOC->ulRamFree = 84087000, MemForPT =
00000000



Old or invalid version stamp in kernel structures - starting clean!

Configuring: Primary pages: 7542, Secondary pages: 0, Filesystem pages = 3771



Booting kernel with clean memory configuration:

Memory Sections:

[0] : start: 84088000, extension: 00002000, length: 01d76000

Sp=ffffc7cc

ARMInit done.

Windows CE KernelInit

Heap Init done

Init memory Pool done

Proc Init done

Updated eptr->e32_vsize to = 000ac000

Scheduler: Do Virtual alloc is done

Scheduler: MDCreateThread starts...


Thanks,
Vadivel



"Paul G. Tobey [eMVP]" wrote:

> *Don't cut pieces out of the debug output*! We need to see it to figure out
> what might be happening...
>
> Paul T.
>
> "Migrating CE.NET 4.2 to CE 5.0"
> <MigratingCENET42toCE50@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
> news:F9A5E1B9-C558-4C9D-8A73-DC9BDBE6E910@xxxxxxxxxxxxxxxx
> > Thanks Mr.Paul G. Tobey,
> >
> > I checked it and its works fine. please see the debug list bellow,
> >
> > Ethernet Boot-Loader for the
> > Texas Instruments OMAP EVM.
> >
> > Build date: Nov 14 2002 at 12:23:53
> > Copyright (c) 2000 - 2002, Texas Instruments, Inc.
> > Portions copyright (c) 1995-2000 Microsoft Corporation.
> >
> > EBOOT: Moving exception handlers from 0x84014DFC to 0x8802D000.
> > EBOOT: Calling OEMInit.
> > EBOOT: Initializing LAN9000 hardware.
> > +SMCInit
> >
> > SMC card not detected, I/O base 0xA2000300, BSR: 0x0000FF9E
> > EBOOT: Could not find LAN9000 hardware.
> > EBOOT: Jumping directly to 0x40000
> > EBOOT: Jumping to image at 0x40000...
> > EBOOT: Leaving main().
> > Windows CE Kernel for ARM (Thumb Enabled) Built on May 18 2004 at 18:20:50
> >
> > ProcessorType=0925 Revision=2
> >
> > sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable =
> > 80041038
> >
> > RelocInit: Relocating 580 bytes of SDRAM functions.
> >
> > RelocInit: Relocating 184 bytes of ISRAM functions.
> >
> > g_pSetEMIFFastRegs=0xa802f004.
> >
> > OEMInit is done!!! by Vadivel
> >
> > Sp=ffffc7cc
> >
> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >
> > Timer: !fIntrTime @ SYSINTR_RESCHED
> >
> > Timer: SysTimerInterruptHandler done..
> >
> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >
> > Timer: !fIntrTime @ SYSINTR_RESCHED
> >
> > Timer: SysTimerInterruptHandler done..
> >
> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >
> > Timer: !fIntrTime @ SYSINTR_RESCHED
> >
> > Timer: SysTimerInterruptHandler done..
> > ...
> > ...
> > ...
> >
> > pl any one can suggest me, how to go about it.
> >
> > Thanks,
> >
> > Vadivel
> >
> >
> >
> >
> > "Paul G. Tobey [eMVP]" wrote:
> >
> >> It's your hardware; you're the only one who would know that. You might
> >> make
> >> sure that SYSINTR_RESCHED, I think it is, is being returned when the
> >> timer
> >> interrupt ticks (the 1ms interrupt used for scheduling). If it seems to
> >> be
> >> fine, you need to build a debug image and just capture the serial debug
> >> output and post it. Someone may be able to spot something from that.
> >>
> >> Paul T.
> >>
> >> "Migrating CE.NET 4.2 to CE 5.0"
> >> <MigratingCENET42toCE50@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
> >> news:D5C2C89C-5870-4D74-A13A-67EBFEDA2D7A@xxxxxxxxxxxxxxxx
> >> > Thank you for your support.
> >> >
> >> > How do I check whether the timer/scheduling tick interrupt enabled or
> >> > working? I put the debug/retail message in <driver
> >> > name>:\WINCE500\PLATFORM\OMAP\Src\Kernel\HAL\
> >> >
> >> > INTC.C //Interrupt module file
> >> >
> >> > extern "C" int OEMInterruptHandler(unsigned int ra)
> >> > {
> >> > ...
> >> > ...
> >> > ...
> >> > // Look up interrupt handler or return code.
> >> > switch( nCurrIRQBVal )
> >> > {
> >> > // System tick.
> >> > case INTC_IRQ_TIMER1:
> >> > RETAILMSG( 1, ( TEXT( "Intc: OEMInterruptHandler():
> >> > ~~...INTC_IRQ_TIMER1...~~ = \r\n" )) );
> >> > nReturnCode = SysTimerInterruptHandler();
> >> > break;
> >> > ..
> >> > ..
> >> > ..
> >> > }
> >> > }
> >> >
> >> > Timer.c file
> >> >
> >> > int SysTimerInterruptHandler( void )
> >> > {
> >> > ...
> >> > ...
> >> >
> >> > // Check if we're doing interrupt timing.
> >> > if ( fIntrTime )
> >> > {
> >> > //has to comment, msg by vadivel
> >> > RETAILMSG( 1, ( TEXT( "Timer: fIntrTime \r\n" ) ) );
> >> > //end
> >> >
> >> > // We're doing interrupt timing. Every other tick is a RESCHED.
> >> > dwIntrTimeCountdown--;
> >> > if (dwIntrTimeCountdown == 0)
> >> > {
> >> > dwIntrTimeCountdown = dwIntrTimeCountdownRef;
> >> > dwIntrTimeNumInts = 0;
> >> >
> >> > // Adjust this since timer interrupt has not been cleared.
> >> > dwIntrTimeIsr2 = PerfCountSinceTick() -
> >> > READ_INTREG_ULONG( ( TIMER1_BASE + TIMER_LOAD_OFFS ) );
> >> >
> >> > //has to comment, msg by vadivel
> >> > RETAILMSG( 1, ( TEXT( "Timer: (dwIntrTimeCountdown == 0)
> >> > \r\n" ) )
> >> > );
> >> > //end
> >> > nRetVal = SYSINTR_TIMING;
> >> > }
> >> > else
> >> > {
> >> > //has to comment, msg by vadivel
> >> > RETAILMSG( 1, ( TEXT( "Timer: !(dwIntrTimeCountdown != 0)\r\n" ) ) );
> >> > //end
> >> >
> >> > if ((int) (CurMSec - dwReschedTime) >= 0)
> >> > {
> >> > nRetVal = SYSINTR_RESCHED;
> >> > }
> >> > }
> >> > }
> >> > else
> >> > {
> >> > ///has to comment, msg by vadivel
> >> > RETAILMSG( 1, ( TEXT( "Timer: !fIntrTime \r\n" ) ) );
> >> > //end
> >> > if ((int) (CurMSec - dwReschedTime) >= 0)
> >> > {
> >> > nRetVal = SYSINTR_RESCHED;
> >> > }
> >> > }
> >> >
> >> > it is executing and I am getting the debug/retail message.
> >> >
> >> > OEMInit is done!!! by Vadivel0 bytes, checksum = 0x4
> >> >
> >> > Booting Windows CE version
> >> >
> >> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >> > RETAILMSG( 1, ( TEXT( "Timer: !fIntrTime \r\n" ) ) );
> >> >
> >> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >> > RETAILMSG( 1, ( TEXT( "Timer: !fIntrTime \r\n" ) ) );
> >> >
> >> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >> > RETAILMSG( 1, ( TEXT( "Timer: !fIntrTime \r\n" ) ) );
> >> >
> >> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >> > RETAILMSG( 1, ( TEXT( "Timer: !fIntrTime \r\n" ) ) );
> >> >
> >> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >> > RETAILMSG( 1, ( TEXT( "Timer: !fIntrTime \r\n" ) ) );
> >> >
> >> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >> > RETAILMSG( 1, ( TEXT( "Timer: !fIntrTime \r\n" ) ) );
> >> >
> >> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >> > RETAILMSG( 1, ( TEXT( "Timer: !fIntrTime \r\n" ) ) );
> >> >
> >> > Intc: OEMInterruptHandler(): ~~...INTC_IRQ_TIMER1...~~ =
> >> > RETAILMSG( 1, ( TEXT( "Timer: !fIntrTime \r\n" ) ) );
> >> >
> >> > ...
> >> > ...
> >> > ...
> >> >
> >> > Vadivel
> >> >
> >> >
> >> > "Paul G. Tobey [eMVP]" wrote:
> >> >
> >> >> Sounds like you don't have your timer/scheduling tick interrupt
> >> >> enabled
> >> >> or
> >> >> working.
> >> >>
> >> >> Paul T.
> >> >>
> >> >> "Migrating CE.NET 4.2 to CE 5.0"
> >> >> <MigratingCENET42toCE50@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
> >> >> news:62069DE7-3CC7-4CCA-90AD-D4B1CBD2EB8D@xxxxxxxxxxxxxxxx
> >> >> > Hi Paul G.Tobey,
> >> >> >
> >> >> > Thank you for your quick response.
> >> >> >
> >> >> > Yes, we followed microsoft guidance after that we are able to build
> >> >> > a
> >> >> > bin
> >> >> > file. After downloading the image into target, it is not comes up.
> >> >> > Then
> >> >> > we
> >> >> > build the <drive name>:\Wince500\private directory with
> >> >> > debug/retail
> >> >> > message. We found that private\winceos\kernelos\nk\kernel\kwin32.c
> >> >> > file
> >> >> > kernelInit function will do the following operation,
> >> >> >
> >> >> > void KernelInit(void)
> >> >> > {
> >> >> > ...
> >> >> > ...
> >> >> > ...
> >> >> > HeapInit();
> >> >> > lpWriteDebugStringFunc(TEXT("HeapInit done...\r\n"));
> >> >> > InitMemoryPool();
> >> >> > lpWriteDebugStringFunc(TEXT("InitMemPool..Done...\r\n"));
> >> >> > ProcInit();
> >> >> > lpWriteDebugStringFunc(TEXT("SchdInit....Starts...\r\n"));
> >> >> > SchedInit();
> >> >> > lpWriteDebugStringFunc(TEXT("Sched init done\r\n"));
> >> >> > }
> >> >> >
> >> >> > we are getting all the debug message except "Sched init done", so
> >> >> > again
> >> >> > we
> >> >> > put the debug message in schedinit() function,
> >> >> > private\winceos\kernelos\nk\kernel\schedule.c
> >> >> >
> >> >> > void SchedInit(void)
> >> >> > {
> >> >> > ...
> >> >> > ...
> >> >> > ...
> >> >> >
> >> >> > if (OpenExecutable (L"nk.exe", &pCurProc->oe, 0, 0)) {
> >> >> >
> >> >> > DWORD dwReturnValue =
> >> >> > LoadE32(&pCurProc->oe,&pCurProc->e32,0,0,0);
> >> >> >
> >> >> > if( (dwReturnValue == ERROR_BAD_EXE_FORMAT) || (dwReturnValue
> >> >> > ==
> >> >> > ERROR_OLD_WIN_VERSION) )
> >> >> > {
> >> >> > RETAILMSG(1,(TEXT("Scheduler: BAD exe format\r\n")));
> >> >> > }
> >> >> > else if(!dwReturnValue)
> >> >> > RETAILMSG(1,(TEXT("Scheduler: openexecutable 'nk.exe'
> >> >> > sucess\r\n"))); //Vadivel -removable
> >> >> >
> >> >> > pCurProc->BasePtr = (LPVOID)pCurProc->e32.e32_vbase;
> >> >> > UpdateKmodVSize (&pCurProc->oe, &pCurProc->e32);
> >> >> >
> >> >> > }
> >> >> >
> >> >> > pStack =
> >> >> > VirtualAlloc((LPVOID)pCurProc->dwVMBase,pCurProc->e32.e32_stackmax,MEM_RESERVE|MEM_AUTO_COMMIT,PAGE_NOACCESS);
> >> >> > // need to call DoVirtualAlloc directly to bypass stack check
> >> >> >
> >> >> > DoVirtualAlloc(pStack+pCurProc->e32.e32_stackmax-PAGE_SIZE,PAGE_SIZE,MEM_COMMIT,PAGE_READWRITE,
> >> >> > MEM_NOSTKCHK, 0);
> >> >> >
> >> >> > RETAILMSG(1,(L"Scheduler: dovirtualAlloc is done\r\n"));
> >> >> > //Vadivel
> >> >> > -removable
> >> >> >
> >> >> > RETAILMSG(1,(L"Sched: pStak:%8.8lx, pCurProc->e32.e32_stackmax
> >> >> > :%8.8lx
.