请教:wince 5.0 multi bin s3c2440的xip.bin卡住了,非multi bin的nk.bin可运行

韦东山
深圳百问网科技有限公司企业官方账号
2010-06-11 01:29:46
对于非multi bin的config.bib为:
MEMORY
NK 80200000 01E00000 RAMIMAGE
RAM 82000000 01E00000 RAM
FLASH 92000000 00100000 RESERVED

……
CONFIG
AUTOSIZE=ON
COMPRESSION=ON
DLLADDR_AUTOSIZE=ON
KERNELFIXUPS=ON
PROFILE=OFF
RAM_AUTOSIZE=OFF
ROMFLAGS=0
;ROMSIZE=01E00000
;ROMSTART=800B8000
;ROMWIDTH=32
ROM_AUTOSIZE=OFF
XIPSCHAIN=803FF000


对于multi bin的config.bib为:
MEMORY
pdwXIPLoc 00000000 803FF000 FIXUPVAR
XIPKERNEL 80200000 001FF000 RAMIMAGE
CHAIN 803FF000 00001000 RESERVED
NK 80400000 01E00000 NANDIMAGE
RAM 80400000 03C00000 RAM
FLASH 92000000 00100000 RESERVED
……
CONFIG
AUTOSIZE=ON
COMPRESSION=ON
DLLADDR_AUTOSIZE=ON
KERNELFIXUPS=ON
PROFILE=OFF
RAM_AUTOSIZE=OFF
ROMFLAGS=0
;ROMSIZE=01E00000
;ROMSTART=800B8000
;ROMWIDTH=32
ROM_AUTOSIZE=OFF
XIPSCHAIN=803FF000

我也修改了platform.reg,加入了对binfs分区的支持;
编译出来的非 multi bin 的nk.bin可正常启动;
但是编译出来的multi bin的xnk.bin无法启动,卡在如下位置:
+OEMInit
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size
Sp=ffffc7cc
OEMIoControl: Unsupported Code 0x10100b4 - device 0x0101 func 45
OEMIoControl: Unsupported Code 0x101008c - device 0x0101 func 35
FMD::FMD_Init
FMD::FMD_Init - pBSPArgs->nfsblk = 0x0
FMD::FMD_Init - READ_REGISTER_BYTE(pNFSBLK) = 0x0
FMD::FMD_Init IPL .....
FMD::FMD_Init Done
MID = 0xec, DID = 0xf1 4th Cycle : 0x0
dwPrimaryNandDevice : 8(0x8)
astNandSpec[dwPrimaryNandDevice].nSctsPerPg: 4(0x4)
wPRIMARY_REAL_NAND_BLOCKS : 1024(0x400)
NUMBLOCKS : 1024(0x400), SECTORSPERBLOCK = 256(0x100), BYTESPERSECTOR = 512(0x200)
FMD_OEMIoControl: unrecognized IOCTL (0x71c24).
OEMIoControl: Unsupported Code 0x1010104 - device 0x0101 func 65
OEMIoControl: Unsupported Code 0x10100c4 - device 0x0101 func 49




我现在还是把整个xip.bin复制进SDRAM里,按理应该能够像非multi bin一样执行啊
调试无从下手,谢谢各位。
...全文
269 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
韦东山 2010-06-13
  • 打赏
  • 举报
回复
谢谢各位,我在platform.reg里,
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\FATFS]注册项里,再加这行就可以了:
"MountAsRom"=dword:1
九个太阳2023 2010-06-13
  • 打赏
  • 举报
回复
顶~~我的multi-bin也没有调试出来~~~
fishly_0 2010-06-12
  • 打赏
  • 举报
回复
这个是我当时的配置,应该是最小配置了,供楼主参考:
注册表项:
[HKEY_LOCAL_MACHINE\init\BootVars]
"SystemHive"="Documents and Settings\\system.hv"
"ProfileDir"="Documents and Settings"
"Start DevMgr"=dword:1
"Flags"=dword:3
"RegistryFlags"=dword:1
"DefaultUser"="default"


[HKEY_LOCAL_MACHINE\System\StorageManager\PartitionTable]
"21"="BINFS"

[HKEY_LOCAL_MACHINE\System\StorageManager\BINFS]
"Folder"="BINFS11"
"FriendlyName"="Bin FileSystem"
"Dll"="binfs.dll"
"Paging"=dword:1
; 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:10
"BootPhase"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\MSFlash]
"DriverPath"="Drivers\\BuiltIn\\MSFlash"
; LoadFlags 0x01 == load synchronously
"LoadFlags"=dword:1
"Order"=dword:0
; "MountFlags"=dword:10
"BootPhase"=dword:0
"Flags"=dword:1000

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSFlash]
"Prefix"="DSK"
"Order"=dword:0
"Dll"="smflash.dll"
"Profile"="MSFlash"
; "MountFlags"=dword:10
"FriendlyName"="MSFLASH Driver"
"BootPhase"=dword:0
"Flags"=dword:1000

; Bind BINFS to the block driver
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
"DefaultFileSystem"="BINFS"
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
"Folder"="NandFlash11"
"Name"="Microsoft Flash Disk"
"BootPhase"=dword:0
"Flags"=dword:1000
"MountAsHidden"=dword:1
"MountAsRom"=dword:1
"MountFlags"=dword:11
"MountHidden"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\FATFS]
"FriendlyName"="FAT FileSystem"
"Dll"="fatfsd.dll"
"Flags"=dword:00280014
"Paging"=dword:1
"CacheSize"=dword:0
"EnableCacheWarm"=dword:0
"EnableCache"=dword:1
"MountAsBootable"=dword:1
"MountAsRom"=dword:1
; "MountAsRoot"=dword:1



File文件

nk.exe D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\kern.exe XIPKERNEL SH
coredll.dll D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\coredll.dll XIPKERNEL SH
filesys.exe D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\filesys.exe XIPKERNEL SH
fatfsd.dll D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\fatfsd.dll XIPKERNEL SH
diskcache.dll D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\diskcache.dll XIPKERNEL SH
fatutil.dll D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\fatutil.dll XIPKERNEL SH
binfs.dll D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\binfs.dll XIPKERNEL SH
fsdmgr.dll D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\fsdmgr.dll XIPKERNEL SH
mspart.dll D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\mspart.dll XIPKERNEL SH
ceddk.dll D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\ceddk.dll XIPKERNEL SH
smflash.dll D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\smflash.dll XIPKERNEL SH

FILES
boot.hv D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\boot.hv XIPKERNEL SH
default.hv D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\default.hv XIPKERNEL SH ;这个文件可以放到nk.exe里
user.hv D:\WINCE500\PBWorkspaces\MultiBin\RelDir\smdk2442_ARMV4I_Release\user.hv XIPKERNEL SH ;这个文件可以放到nk.exe里

fishly_0 2010-06-12
  • 打赏
  • 举报
回复
nandflash驱动以及文件系统。 另外我记得中,multi-bin是需要实现hive注册表的吧。
博说医械研发 2010-06-12
  • 打赏
  • 举报
回复
XIPKERNEL里边你都加什么东西了?
要在bib文件中把必要的文件加入到XIPKERNEL 中去,比如
; @CESYSGEN IF CE_MODULES_NK

nk.exe $(_FLATRELEASEDIR)\kern.exe XIPKERNEL SH

; @CESYSGEN ENDIF

; @CESYSGEN IF CE_MODULES_COREDLL
coredll.dll $(_FLATRELEASEDIR)\coredll.dll XIPKERNEL SH
; @CESYSGEN ENDIF

; @CESYSGEN IF CE_MODULES_FILESYS
filesys.exe $(_FLATRELEASEDIR)\filesys.exe XIPKERNEL SHM
; @CESYSGEN ENDIF

; @CESYSGEN IF CE_MODULES_BINFS
binfs.dll $(_FLATRELEASEDIR)\binfs.dll XIPKERNEL SH
; @CESYSGEN ENDIF

; @CESYSGEN IF CE_MODULES_FSDMGR
fsdmgr.dll $(_FLATRELEASEDIR)\fsdmgr.dll XIPKERNEL SH
; @CESYSGEN ENDIF
; @CESYSGEN IF CE_MODULES_MSPART
mspart.dll $(_FLATRELEASEDIR)\mspart.dll XIPKERNEL SH
; @CESYSGEN ENDIF

; @CESYSGEN IF CE_MODULES_CEDDK
ceddk.dll $(_FLATRELEASEDIR)\ceddk.dll XIPKERNEL SH
; @CESYSGEN ENDIF
wangyingying606 2010-06-11
  • 打赏
  • 举报
回复
检查一下PLATFORM.REG里的配置。
韦东山 2010-06-11
  • 打赏
  • 举报
回复
我的eboot已经支持binfs了,
内核里也配置了binfs

19,520

社区成员

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

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