高分请教:wince缩短启动时间——multi_bin的实现问题

onelove2009 2011-12-27 11:12:26
平台:QQ2440开发板 wince5.0(貌似这个bsp是从4.2改来的,但改的不彻底) PB5.0 evc
问题:
想缩短系统启动时间,于是参照以下两篇帖子:
http://blog.csdn.net/chNeed1/article/details/2119266
http://xiaojun123hello.blog.163.com/blog/static/36166656201111155433455/
之前已经实现了HIVE_BASED注册表,然后下载成功,再此基础上进行了如下操作:

1.我的config.BIB文件如下:

MEMORY
XIPKERNEL 8C200000 00400000 RAMIMAGE
CHAIN 8C600000 00001000 RESERVED
NK 8C601000 018FF000 NANDIMAGE
RAM 8DF00000 02100000 RAM

AUD_DMA 8c002000 00002000 RESERVED
DRV_GLB 8c010000 00010000 RESERVED
DBGSER_DMA 8c022000 00002000 RESERVED
SER_DMA 8c024000 00002000 RESERVED
; IR_DMA 8c026000 00002000 RESERVED
SD_DMA 8c028000 00008000 RESERVED
DISPLAY 8c100000 00100000 RESERVED

CONFIG
AUTOSIZE=ON
COMPRESSION=ON
DLLADDR_AUTOSIZE=ON
KERNELFIXUPS=ON
PROFILE=OFF
RAM_AUTOSIZE=OFF

IF IMGTINYFSRAM !
FSRAMPERCENT=0x20202020 ;dxj 2011.12.23
ENDIF

ROMFLAGS=0 ; DXJ 2011.12.26
ROM_AUTOSIZE=OFF
ROMSIZE=01D00000
ROMSTART=8C200000
ROMWIDTH=32
XIPSCHAIN=8C600000


2. 我的platform.bib如下:
;;;;;我并没有删除原来里面的文件,只是添加了如下内容,不晓得有问题没?

;MODULES
; Name Path Memory Type
; -------------- --------------------------------------------- -----------
nk.exe $(_FLATRELEASEDIR)\kern.exe XIPKERNEL SH
coredll.dll $(_FLATRELEASEDIR)\coredll.dll XIPKERNEL SH
filesys.exe $(_FLATRELEASEDIR)\filesys.exe XIPKERNEL SH
fatfsd.dll $(_FLATRELEASEDIR)\fatfsd.dll XIPKERNEL SH
diskcache.dll $(_FLATRELEASEDIR)\diskcache.dll XIPKERNEL SH
fatutil.dll $(_FLATRELEASEDIR)\fatutil.dll XIPKERNEL SH
binfs.dll $(_FLATRELEASEDIR)\binfs.dll XIPKERNEL SH
fsdmgr.dll $(_FLATRELEASEDIR)\fsdmgr.dll XIPKERNEL SH
mspart.dll $(_FLATRELEASEDIR)\mspart.dll XIPKERNEL SH
ceddk.dll $(_FLATRELEASEDIR)\ceddk.dll XIPKERNEL SH
device.exe $(_FLATRELEASEDIR)\device.exe XIPKERNEL SH
FLASHDRV.DLL $(_FLATRELEASEDIR)\FlashDrv.dll XIPKERNEL SH ;dxj 2011.12.26

FILES
; Name Path Memory Type
; -------------- ---------------------------------- -----------

boot.hv $(_FLATRELEASEDIR)\boot.hv XIPKERNEL SH
wince.nls $(_FLATRELEASEDIR)\wince.nls XIPKERNEL SHU



3. 我的platform.reg如下:
; HIVE BOOT SECTION
;
; Support BINFS Section
;
; Add BinFS to partition table
[HKEY_LOCAL_MACHINE\System\StorageManager\PartitionTable]
"21"="BINFS"

[HKEY_LOCAL_MACHINE\System\StorageManager\BINFS]
"Folder"="BINFS"
"FriendlyName"="Bin FileSystem"
"Dll"="binfs.dll"
; MountFlags:
; 0x10 specifies that this file system is to be mounted as an external
; ROM filesystem shadowing the \windows directory
; 0x1 specifies that the mountpoint \BINFS is to be hidden
;
"MountFlags"=dword:11 ; DXJ 2011.12.26
"BootPhase"=dword:0

;
; Entries to load the block driver that BINFS uses
; This is dependent on what device is used
;

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FlashDrv]
"DriverPath"="Drivers\\BlockDevice\\FlashDrv"
"LoadFlags"=dword:1
"MountFlags"=dword:11
"BootPhase"=dword:0 ;1->0 dxj 2011.12.23
"Flags"=dword:1000 ; 这个flag标签让你的驱动不会重复加载,下面类似

[HKEY_LOCAL_MACHINE\Drivers\BlockDevice\FlashDrv]
"Prefix"="DSK"
"Dll"="FLASHDRV.dll"
"Order"=dword:0
"Ioctl"=dword:4
"Profile"="FlashDrv"
"FriendlyName"="MS Flash Driver"
"MountFlags"=dword:11
"BootPhase"=dword:0 ; 1->0 dxj 2011.12.23
"Flags"=dword:1000

; Bind BINFS to the block driver
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDrv]
"DefaultFileSystem"="BINFS" ;binfs的路径为/BINFS
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoFormat"=dword:1
"AutoPart"=dword:1
"MountFlags"=dword:11
"Folder"="FriendlyARM"
"Name"="Microsoft Flash Disk"
"BootPhase"=dword:0
"Flags"=dword:1000
"MountHidden"=dword:0 ;有了这个你就可以在/BINFS目录下看到所有的NK.bin的东东了

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDrv\BINFS]
"MountFlags"=dword:11
"Flags"=dword:1000
"MountHidden"=dword:1 ;DXJ 2011.12.26
"MountAsROM"=dword:1

; Keep FATFS from trying to shadow \Windows
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDrv\FATFS]
"MountFlags"=dword:2

[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]
"MountFlags"=dword:0

IF TODO
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\Relfsd]
"Dll"="relfsd.dll"
"Paging"=dword:0
"LoadFlags"=dword:1
ENDIF TODO

; END HIVE BOOT SECTION
;---------------------------------------------------------------------



然后sysgen生成了NK.BIN,XIP.BIN等等文件,我通过EBOOT下载了XIP.BIN文件
最后,我的eboot打印出来的信息如下:
ID[1] {
dwVersion: 0x1
dwSignature: 0x43465349
String: ''
dwImageType: 0x6
dwTtlSectors: 0x0
dwLoadAddress: 0x0
dwJumpAddress: 0x0
dwStoreOffset: 0x0
}
chainInfo.dwLoadAddress: 0X00000000
chainInfo.dwFlashAddress: 0X00000000
chainInfo.dwLength: 0X00000000
}
g_pViviWinceInfo = 0x301D8000, g_pViviWinceInfo->dwViviWinceMagic = 0x12345678
Low-level format nand flash ...
Reserving Blocks [0x0 - 0x13] ...
...reserve complete.
Low-level format Blocks [0x14 - 0xFFF] ...
...erase complete.
Format nand flash for BinFS, please wait several minutes ...
System ready!
Preparing for download...
::OEMLaunch, ImageStart:0x0, ImageLength:0x0, LaunchAddr:0x0
OEMLaunch: (IMAGE_TYPE_RAMIMAGE|IMAGE_TYPE_BINFS)
+WriteRegionsToBootMedia: ImageStart: 0x0, ImageLength: 0x0, LaunchAddr:0x0
Writing single region/multi-region update, dwBINFSPartLength: 26170900
dwRegionStart: 0x8C200000, dwRegionLength: 0x18F5614, dwStoreOffset: 0x0
到这停了一会,然后就是滴的一声,然后显示
Jumping to image at virtual address 0x00000000h
+ToPhysicalAddr:0x0
-ToPhysicalAddr:0x0
然后系统就重启了。。。回到:
##### FriendlyARM BIOS for 2440 #####
[x] bon part 0 320k 2368k
[v] Download vivi
[k] Download linux kernel
[y] Download root_yaffs image
[c] Download root_cramfs image
[n] Download Nboot
[e] Download Eboot
[i] Download WinCE NK.nb0
[w] Download WinCE NK.bin
[d] Download & Run
[f] Format the nand flash
[p] Partition for Linux
[b] Boot the system
[s] Set the boot parameters
[t] Print the TOC struct of wince
[q] Goto shell of vivi
Enter your selection:
我实在不知道怎么做下去了,请教这是什么原因呢?是不是我哪一步做错了?
...全文
234 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
onelove2009 2012-02-15
  • 打赏
  • 举报
回复
过完年回来了。。。继续期待高人指点。。。
EmbededWince 2011-12-30
  • 打赏
  • 举报
回复
看网上都说只要下载xip.BIN就可以了啊
woshi_ziyu 2011-12-29
  • 打赏
  • 举报
回复
Jumping to image at virtual address 0x8C201000h
+ToPhysicalAddr:0x8C201000
-ToPhysicalAddr:0x30201000

查找一下这语句在那里出现
onelove2009 2011-12-29
  • 打赏
  • 举报
回复
C:\WINCE500\PLATFORM\smdk2440\eboot目录下
main.c文件中,OEMLaunch函数,应该是用来下载镜像的吧
我是直接用eboot下载了xip.bin文件,不知道NK.bin XIPKERNEL.bin 文件还需要下载吗?

[Quote=引用 15 楼 woshi_ziyu 的回复:]

Jumping to image at virtual address 0x8C201000h
+ToPhysicalAddr:0x8C201000
-ToPhysicalAddr:0x30201000

查找一下这语句在那里出现
[/Quote]
onelove2009 2011-12-28
  • 打赏
  • 举报
回复
没有解决。。。期待大牛。。。

http://blog.csdn.net/chNeed1/article/details/2119266
step5:
使用preromimage.bat和processbib.exe程序,把它们拷贝到你的PLATFORM/SMDK2440/FILES/目录下.
这个帖子中这一步是做什么呢?我没有这两个程序啊。。。
目前进展:
烧写XIP.bin,但是一直停留在启动画面上,不知为什么。
启动信息:
Low-level format nand flash ...
Reserving Blocks [0x0 - 0x13] ...
...reserve complete.
Low-level format Blocks [0x14 - 0xFFF] ...
...erase complete.
Format nand flash for BinFS, please wait several minutes ...
System ready!
Preparing for download...
Found pTOC signature.
ROMHDR at Address 8C200044h
RomHdr.ulRAMStart=8DF00000h RomHdr.physfirst=8C200000h.
::OEMLaunch, ImageStart:0x8C200000, ImageLength:0x179DF4C, LaunchAddr:0x8C201000

OEMLaunch: (IMAGE_TYPE_RAMIMAGE|IMAGE_TYPE_BINFS)
+WriteRegionsToBootMedia: ImageStart: 0x8C200000, ImageLength: 0x179DF4C, Launch
Addr:0x8C201000
INFO: OEMLaunch: Found chain extenstion: '' @ 0x8C200000
INFO: OEMLaunch: Found chain extenstion: 'chain information' @ 0x8C200000
INFO: OEMLaunch: Found 'chain information' (pChainInfo=0x8C336A68 Extensions=0x
3).
Writing single region/multi-region update, dwBINFSPartLength: 24764236
dwRegionStart: 0x8C200000, dwRegionLength: 0x179DF4C, dwStoreOffset: 0x0
。。。
ID[1] {
dwVersion: 0x1
dwSignature: 0x43465349
String: ''
dwImageType: 0x6
dwTtlSectors: 0xBCF0
dwLoadAddress: 0x8C200000
dwJumpAddress: 0x8C201000
dwStoreOffset: 0x0
sgList[0].dwSector: 0x520
sgList[0].dwLength: 0xBCF0
}
chainInfo.dwLoadAddress: 0X00000000
chainInfo.dwFlashAddress: 0X00000000
chainInfo.dwLength: 0X00000000
}

Jumping to image at virtual address 0x8C201000h
+ToPhysicalAddr:0x8C201000
-ToPhysicalAddr:0x30201000

::: Physical Launch Address: 0x30201000h
onelove2009 2011-12-28
  • 打赏
  • 举报
回复
没有解决。。。期待大牛。。。

http://blog.csdn.net/chNeed1/article/details/2119266
step5:
使用preromimage.bat和processbib.exe程序,把它们拷贝到你的PLATFORM/SMDK2440/FILES/目录下.
这个帖子中这一步是做什么呢?我没有这两个程序啊。。。
目前进展:
烧写XIP.bin,但是一直停留在启动画面上,不知为什么。
启动信息:
Low-level format nand flash ...
Reserving Blocks [0x0 - 0x13] ...
...reserve complete.
Low-level format Blocks [0x14 - 0xFFF] ...
...erase complete.
Format nand flash for BinFS, please wait several minutes ...
System ready!
Preparing for download...
Found pTOC signature.
ROMHDR at Address 8C200044h
RomHdr.ulRAMStart=8DF00000h RomHdr.physfirst=8C200000h.
::OEMLaunch, ImageStart:0x8C200000, ImageLength:0x179DF4C, LaunchAddr:0x8C201000

OEMLaunch: (IMAGE_TYPE_RAMIMAGE|IMAGE_TYPE_BINFS)
+WriteRegionsToBootMedia: ImageStart: 0x8C200000, ImageLength: 0x179DF4C, Launch
Addr:0x8C201000
INFO: OEMLaunch: Found chain extenstion: '' @ 0x8C200000
INFO: OEMLaunch: Found chain extenstion: 'chain information' @ 0x8C200000
INFO: OEMLaunch: Found 'chain information' (pChainInfo=0x8C336A68 Extensions=0x
3).
Writing single region/multi-region update, dwBINFSPartLength: 24764236
dwRegionStart: 0x8C200000, dwRegionLength: 0x179DF4C, dwStoreOffset: 0x0
。。。
ID[1] {
dwVersion: 0x1
dwSignature: 0x43465349
String: ''
dwImageType: 0x6
dwTtlSectors: 0xBCF0
dwLoadAddress: 0x8C200000
dwJumpAddress: 0x8C201000
dwStoreOffset: 0x0
sgList[0].dwSector: 0x520
sgList[0].dwLength: 0xBCF0
}
chainInfo.dwLoadAddress: 0X00000000
chainInfo.dwFlashAddress: 0X00000000
chainInfo.dwLength: 0X00000000
}

Jumping to image at virtual address 0x8C201000h
+ToPhysicalAddr:0x8C201000
-ToPhysicalAddr:0x30201000

::: Physical Launch Address: 0x30201000h
onelove2009 2011-12-28
  • 打赏
  • 举报
回复
没有解决。。。期待大牛。。。

http://blog.csdn.net/chNeed1/article/details/2119266
step5:
使用preromimage.bat和processbib.exe程序,把它们拷贝到你的PLATFORM/SMDK2440/FILES/目录下.
这个帖子中这一步是做什么呢?我没有这两个程序啊。。。
目前进展:
烧写XIP.bin,但是一直停留在启动画面上,不知为什么。
启动信息:
Low-level format nand flash ...
Reserving Blocks [0x0 - 0x13] ...
...reserve complete.
Low-level format Blocks [0x14 - 0xFFF] ...
...erase complete.
Format nand flash for BinFS, please wait several minutes ...
System ready!
Preparing for download...
Found pTOC signature.
ROMHDR at Address 8C200044h
RomHdr.ulRAMStart=8DF00000h RomHdr.physfirst=8C200000h.
::OEMLaunch, ImageStart:0x8C200000, ImageLength:0x179DF4C, LaunchAddr:0x8C201000

OEMLaunch: (IMAGE_TYPE_RAMIMAGE|IMAGE_TYPE_BINFS)
+WriteRegionsToBootMedia: ImageStart: 0x8C200000, ImageLength: 0x179DF4C, Launch
Addr:0x8C201000
INFO: OEMLaunch: Found chain extenstion: '' @ 0x8C200000
INFO: OEMLaunch: Found chain extenstion: 'chain information' @ 0x8C200000
INFO: OEMLaunch: Found 'chain information' (pChainInfo=0x8C336A68 Extensions=0x
3).
Writing single region/multi-region update, dwBINFSPartLength: 24764236
dwRegionStart: 0x8C200000, dwRegionLength: 0x179DF4C, dwStoreOffset: 0x0
。。。
ID[1] {
dwVersion: 0x1
dwSignature: 0x43465349
String: ''
dwImageType: 0x6
dwTtlSectors: 0xBCF0
dwLoadAddress: 0x8C200000
dwJumpAddress: 0x8C201000
dwStoreOffset: 0x0
sgList[0].dwSector: 0x520
sgList[0].dwLength: 0xBCF0
}
chainInfo.dwLoadAddress: 0X00000000
chainInfo.dwFlashAddress: 0X00000000
chainInfo.dwLength: 0X00000000
}

Jumping to image at virtual address 0x8C201000h
+ToPhysicalAddr:0x8C201000
-ToPhysicalAddr:0x30201000

::: Physical Launch Address: 0x30201000h
EmbededWince 2011-12-28
  • 打赏
  • 举报
回复
也在做multi_bin,也没有成功,请问楼主解决了吗?
EmbededWince 2011-12-28
  • 打赏
  • 举报
回复
也在做multi_bin,也没有成功,请问楼主解决了吗?
EmbededWince 2011-12-28
  • 打赏
  • 举报
回复
也在做multi_bin,也没有成功,请问楼主解决了吗?
onelove2009 2011-12-28
  • 打赏
  • 举报
回复
哎,都差不多。。。等了一天也没什么回复。。。毫无进展。。。毫无头绪。。。
EmbededWince 2011-12-28
  • 打赏
  • 举报
回复
我修改了config.bin platform.reg 文件,然后sysgen成功,生成了xip.bin nk.bin 文件,然后用DNW通过EBOOT下载了XIP.BIN文件,就停在启动画面那了,不知道问题出在哪
我的配置跟你的差不多,是不是下载的方法有问题啊
onelove2009 2011-12-28
  • 打赏
  • 举报
回复
恩,今天网络好像有问题,这会好了。。。
楼上进展到那一步了?
[Quote=引用 11 楼 embededwince 的回复:]

今天的系统真奇怪,显示10人回复,为什么只有四个啊。。。
到年底了,大家都在忙啊。。。木有人回贴啊。。。
坐等高人出现。。。
[/Quote]
EmbededWince 2011-12-28
  • 打赏
  • 举报
回复
今天的系统真奇怪,显示10人回复,为什么只有四个啊。。。
到年底了,大家都在忙啊。。。木有人回贴啊。。。
坐等高人出现。。。
onelove2009 2011-12-27
  • 打赏
  • 举报
回复
是啊,应该从哪里找问题呢?
[Quote=引用 1 楼 woshi_ziyu 的回复:]

OEMLaunch, ImageStart:0x0, ImageLength:0x0, LaunchAddr:0x0

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

系统没进入呢
[/Quote]
woshi_ziyu 2011-12-27
  • 打赏
  • 举报
回复
OEMLaunch, ImageStart:0x0, ImageLength:0x0, LaunchAddr:0x0

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

系统没进入呢
onelove2009 2011-12-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/chNeed1/article/details/2119266
step5:
使用preromimage.bat和processbib.exe程序,把它们拷贝到你的PLATFORM/SMDK2440/FILES/目录下.
这个帖子中这一步是做什么呢?我没有这两个程序啊。。。
onelove2009 2011-12-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/chNeed1/article/details/2119266
step5:
使用preromimage.bat和processbib.exe程序,把它们拷贝到你的PLATFORM/SMDK2440/FILES/目录下.
这个帖子中这一步是做什么呢?我没有这两个程序啊。。。

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧