全部博文(2005)
分类:
2007-05-17 17:10:07
wince2秒快速启动TOC分析(作者:gliethttp)
为什么
------------------------------------------------------------
硬件环境QT
NAND[K
Block0-加载Block2内容的loader程序
Block1-512字节的TOC结构体存储空间
Block2-加载umon或者结合TOC加载nk.nb0的loader程序
------------------------------------------------------------
typedef struct _TOC {
//和CSW中的认证域类似,只用来验证接下去内容的合法
DWORD dwSignature;
//包含image的索引(我的是1)、启动delay时间、ip地址、MAC地址和掩码等
BOOT_CFG BootCfg;
//用来描述3个之多的ce内核image数组,我用的是id[1]
IMAGE_DESCRIPTOR id[MAX_TOC_DESCRIPTORS];
CHAININFO chainInfo;
} TOC, *PTOC; // 512 字节
typedef struct _IMAGE_DESCRIPTOR {
DWORD dwVersion; //编译时的版本号
DWORD dwSignature; //“EBOOT”或“CFSH”等
UCHAR ucString[IMAGE_STRING_LEN]; //描述字符串:如"eboot.nb
DWORD dwImageType; //image的类型nk.nb0为0x04
DWORD dwTtlSectors; //image文件用到的NAND的扇区总数
DWORD dwLoadAddress; //image加载时的虚拟地址
DWORD dwJumpAddress; //image加载完成后的跳转地址
SG_SECTOR sgList[MAX_SG_SECTORS]; //image的段描述,包括起始扇区号和所需扇区数目
ULONG dwStoreOffset;
} IMAGE_DESCRIPTOR, *PIMAGE_DESCRIPTOR;
==========================
Loader的输出:
'U' for USBMON
******
Total Sectors:0x0000e800
Sector addr on NAND: 0x
TotalSector: 0x0000e800
Reading Kernel Image from NAND
dwSector: 0x
dwLength: 0x0000e800
dwRAM: 0x30200000
==========================
eboot.nb0的输出:
Microsoft Windows CE Ethernet Bootloader Common Library Version 1.0 Built Dec 20 2006 22:35:26
Copyright (c) 2000-2001 Microsoft Corporation
Microsoft Windows CE SMDK2440 Bootloader Version 1.2 Built Dec 20 2006 22:35:23
FMD::FMD_Init
FMD::FMD_Init Done
TOC_Read
TOC {
dwSignature: 0x
BootCfg {
ConfigFlags: 0x3820
BootDelay: 0xF
ImageIndex: 1
IP: 192.168.1.108
MAC Address: 00:00:00:00:00:00
Port:
SubnetMask: 255.255.255.0
}
ID[0] {
dwVersion: 0x10002
dwSignature: 0x
String: 'eboot.nb0'
dwImageType: 0x2
dwTtlSectors: 0x100
dwLoadAddress: 0x
dwJumpAddress: 0x
dwStoreOffset: 0x0
sgList[0].dwSector: 0x40
sgList[0].dwLength: 0x100
}
ID[1] {
dwVersion: 0x1
dwSignature: 0x43465349
String: ''
dwImageType: 0x6
dwTtlSectors: 0xE800
dwLoadAddress: 0x
dwJumpAddress: 0x
dwStoreOffset: 0x0
sgList[0].dwSector: 0x
sgList[0].dwLength: 0xE800
}
chainInfo.dwLoadAddress: 0X00000000
chainInfo.dwFlashAddress: 0X00000000
chainInfo.dwLength: 0X00000000
}
-TOC_Read
Press [ENTER] to download image now, or [SPACE] to enter boot monitor.
chinaunix网友2008-10-13 10:20:10
是校友啊,你好牛B啊!学习 我是一系08年毕业的,看你的技术范围,估计是二系,或者三系吧。哈哈 我的MSN是wogoyixikexie@live.cn。希望交流 俺在广州,你呢?现在我做wince驱动。哈哈,希望指点一下啊。
chinaunix网友2008-01-17 10:17:50
从你的TOC中完全看不出是怎么分段加载的,就是正常的eboot启动NK,而且似乎很多人做的multi bin是为了增加RAM空间,相对启动速度并没有得到提高.还有变慢的