以下是成功的打印信息,不过几乎要加载全部的镜像大小:
OpenPartition: Partition Exists=0x1 for part 0x21.
BP_SetDataPointer at 0x0
ReadData: Start = 0x0, Length = 0xd0000a.
Log2Phys: Logical 0x500 -> Physical 0xa00
Windows CE Kernel for ARM (Thumb Enabled) Built on Feb 8 2007 at 23:36:51
ProcessorType=0920 Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8c2013e0
Windows CE Firmware Init
INFO: Initializing system interrupts...
INFO: Initializing system clock(s)...
INFO: Initializing driver globals area...
SDMMC config set rGPGCON: 20504
pdwXIPLoc = 0x8c33f000
pdwCurXIP = 0x8c33f000
dwNumXIPs = 0x2
pChainEntry = 0x8c33f004
XIP (8c200000 -> 8c372ed4) span
XIP (8c200000 -> 8c372ed4) span
XIP (8c200000 -> 8c372ed4) span
XIP (8c200000 -> 8c372ed4) span
XIP (8c200000 -> 8c372ed4) span
XIP (8c200000 -> 8c372ed4) span
ppte->dwVA = 0x8c000000
XIP (8c200000 -> 8c372ed4) span
ppte->dwVA = 0x8c000000
XIP (8c380000 -> 8cbba778) span
OEMInit Done...
Sp=ffffc7cc
NandFlash FMD_Init
NandFlash FMD_Init Done
I2S_Ini---
Prescaler:2
384 clock
lpMapFIFOdata[0]1: dwContext = 0xBAK_Init: dwContext = 0x602ed64
BacklightInitialize
BL_PowerOn
!!!!!!!!!!!! BACKLIGHT ON !!!!
BAK: IOCTL_POWER_CAPABILITIES
USB:OhcdPdd_Init
++InitializeOHCI
USB:*pIrq=11, *pioPortBase=0x450000
OHCD: MapIrq2SysIntr(11): 27
OHCD: Memory Object
--InitializeOHCI
USB enable interrutp
在InitRomChain打印信息
void InitRomChain(void)
{
static ROMChain_t s_pNextRom[MAX_ROM] = {0};
DWORD dwRomCount = 0;
DWORD dwChainCount = 0;
DWORD *pdwCurXIP;
DWORD dwNumXIPs;
PPTE ppte;
DWORD dwEnd;
ROMChain_t *pList;
PXIPCHAIN_ENTRY pChainEntry = NULL;
ppte = (PPTE) OEMAddressTable;
if(pdwXIPLoc == NOT_FIXEDUP)
{
return; // no chain or not fixed up properly
}
// lpWriteDebugStringFunc(TEXT("pdwXIPLoc = %x \r\n"));
RETAILMSG(1,(TEXT("pdwXIPLoc = 0x%x \r\n"),pdwXIPLoc));
// set the top bit to mark it as a virtual address
pdwCurXIP = (DWORD*)(((DWORD)pdwXIPLoc) | 0x80000000);
RETAILMSG(1,(TEXT("pdwCurXIP = 0x%x \r\n"),pdwCurXIP));
// first DWORD is number of XIPs
dwNumXIPs = (*pdwCurXIP);
RETAILMSG(1,(TEXT("dwNumXIPs = 0x%x \r\n"),dwNumXIPs));
if(dwNumXIPs > MAX_ROM)
{
lpWriteDebugStringFunc(TEXT("ERROR: Number of XIPs exceeds MAX\n"));
return;
}
pChainEntry = (PXIPCHAIN_ENTRY)(pdwCurXIP + 1);
RETAILMSG(1,(TEXT("pChainEntry = 0x%x \r\n"),pChainEntry));
while(dwChainCount < dwNumXIPs)
{
if ((pChainEntry->usFlags & ROMXIP_OK_TO_LOAD) && // flags indicates valid XIP
*(LPDWORD)(((DWORD)(pChainEntry->pvAddr)) + ROM_SIGNATURE_OFFSET) == ROM_SIGNATURE)
{
s_pNextRom[dwRomCount].pTOC = *(ROMHDR **)(((DWORD)(pChainEntry->pvAddr)) + ROM_SIGNATURE_OFFSET + 4);
s_pNextRom[dwRomCount].pNext = NULL;
if (dwRomCount != 0)
{
s_pNextRom[dwRomCount-1].pNext = &s_pNextRom[dwRomCount];
}
else
{
OEMRomChain = s_pNextRom;
}
dwRomCount++;
}
else
{
lpWriteDebugStringFunc( _T("Invalid XIP found\n") );
}
++pChainEntry;
dwChainCount++;
}
pList = OEMRomChain;
for ( ; pList; pList = pList->pNext)
{
for (; ppte->dwSize; ppte ++)
{
dwEnd = ppte->dwVA + (ppte->dwSize << 20);
if (IsInRange (pList->pTOC->physfirst, ppte->dwVA, dwEnd))
{
if (IsInRange (pList->pTOC->physlast, ppte->dwVA, dwEnd))
{
// good XIP, break inner loop and go on to the next region
RETAILMSG(1,(TEXT("ppte->dwVA = 0x%x \r\n"),ppte->dwVA));
RETAILMSG(1,(L"XIP (%8.8lx -> %8.8lx) span\r\n",
pList->pTOC->physfirst, pList->pTOC->physlast));
break;
}
}
RETAILMSG(1,(L"XIP (%8.8lx -> %8.8lx) span\r\n",
pList->pTOC->physfirst, pList->pTOC->physlast));
}
if (!ppte->dwSize)
{
RETAILMSG(1,(TEXT("doesn't exist in OEMAddressTab\r\n")));
}//*/
}
}
ppte->dwVA = 0x8c000000
XIP (8c200000 -> 8c372ed4) span 这个是XIPKERNEL地址 8C200000
ppte->dwVA = 0x8c000000
XIP (8c380000 -> 8cbba778) span 这个是NK 地址 8C340000
只加载4M的时候第二个为0
ppte->dwVA = 0x8c000000
XIP (8c200000 -> 8c372ed4) span
XIP (00000000 -> 00000000) span
XIP (00000000 -> 00000000) span
OpenPartition: Partition Exists=0x0 for part 0x21.
CreatePartition: Enter CreatePartition for 0x21.
LastLogSector: Last log sector is: 0x1F61F,toal is: 0x1FB20.
CreatePartition: Start = 0x500, Num = 0x4BE0.
Log2Phys: Logical 0x500 -> Physical 0xA00
WriteMBR: MBR block = 0x28.
dwRegionStart: 0x8C200000, dwRegionLength: 0x97A77C, dwStoreOffset: 0x0
BP_SetDataPointer at 0x0
WriteData: Start = 0x0, Length = 0x97A77C.
Log2Phys: Logical 0x500 -> Physical 0xA00
Updateded TOC!
IsValidMBR: MBR sector = 0x500
OpenPartition: Partition Exists=0x0 for part 0xB.
CreatePartition: Enter CreatePartition for 0xB.
FindFreeSector: FreeSector is: 0x50E0 after processing part 0x21.
CreatePartition: Num sectors set to 0x1A400 to allow for compaction blocks.
CreatePartition: Start = 0x50E0, Num = 0x1A400.
WriteMBR: MBR block = 0x28.
-WriteRegionsToBootMedia
+TOC_Write
-TOC_Write
TOC {
dwSignature: 0x434F544E
BootCfg {
ConfigFlags: 0x3830
BootDelay: 0xF
ImageIndex: 1
IP: 0.0.0.0
MAC Address: 00:00:00:00:00:00
Port: 0.0.0.0
SubnetMask: 255.255.255.255
}
ID[0] {
dwVersion: 0x10002
dwSignature: 0x45424F54
String: 'eboot.nb0'
dwImageType: 0x2
dwTtlSectors: 0x100
dwLoadAddress: 0x8C038000
dwJumpAddress: 0x8C038000
dwStoreOffset: 0x0
sgList[0].dwSector: 0x240
sgList[0].dwLength: 0x100
}
ID[1] {
dwVersion: 0x1
dwSignature: 0x43465348
String: ''
dwImageType: 0x2
dwTtlSectors: 0x4BD4
dwLoadAddress: 0x8C200000
dwJumpAddress: 0x8C201000
dwStoreOffset: 0x0
sgList[0].dwSector: 0xA00
sgList[0].dwLength: 0x4BD4
}
chainInfo.dwLoadAddress: 0X00000000
chainInfo.dwFlashAddress: 0X00000000
chainInfo.dwLength: 0X00000000奇怪,这里都是零正常吗?
}
Jumping to image at virtual address 0x8C201000h
+ToPhysicalAddr:0x8C201000
-ToPhysicalAddr:0x30201000
::: Physical Launch Address: 0x30201000h
Windows CE Kernel for ARM (Thumb Enabled) Built on Feb 8 2007 at 23:36:51
ProcessorType=0920 Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8c2013e0
Windows CE Firmware Init
INFO: Initializing system interrupts...
INFO: Initializing system clock(s)...
INFO: Initializing driver globals area...
SDMMC config set rGPGCON: 20504
pdwXIPLoc = 0x8c33f000
pdwCurXIP = 0x8c33f000
dwNumXIPs = 0x2
pChainEntry = 0x8c33f004
XIP (8c200000 -> 8c3365a4) span
XIP (8c200000 -> 8c3365a4) span
XIP (8c200000 -> 8c3365a4) span
XIP (8c200000 -> 8c3365a4) span
XIP (8c200000 -> 8c3365a4) span
XIP (8c200000 -> 8c3365a4) span
ppte->dwVA = 0x8c000000
XIP (8c200000 -> 8c3365a4) span
ppte->dwVA = 0x8c000000
XIP (8c340000 -> 8cb7a77c) span
OEMInit Done...
Sp=ffffc7cc
NandFlash FMD_Init
NandFlash FMD_Init Done
I2S_Ini---
Prescaler:2
384 clock
lpMapFIFOdata[0]1: dwContext = 0xBAK_Init: dwContext = 0x602ed64
BacklightInitialize
BL_PowerOn
!!!!!!!!!!!! BACKLIGHT ON !!!!
各位高手帮看看啊~~~~~~~~~~~~艾
mark
主要看什么升级方式了。
我是用USB升级的。直接升级的是eboot.nb0和一个xip.nb0.
个人感觉是看引导程序怎么定的。
先mark下慢慢看。。。。