阅读:3824回复:19
请教关于MUTLI-BIN的问题,请大师们指点
各位大师:
您们好! 我知道您们实现了MUTI-BIN的技术,我也想研究下,我在做试验的过程中出现了一些问题,我想请教您关于muti-bin的问题,能否指点我一下, 我的情况是这样的: 1.我定义了IMGMUTLIBIN=1,同时选择了HIVE-BASE registry 2.我的config.BIB文件如下: MEMORY pdwXIPLoc 00000000 803FF000 FIXUPVAR XIPKERNEL 80200000 001FF000 RAMIMAGE CHAIN 803FF000 00001000 RESERVED NK 80400000 01E00000 NANDIMAGE RAM 80400000 03000000 RAM FLASH 92000000 00100000 RESERVED ; Common RAM areas AUD_DMA 80002000 00000800 RESERVED SDIO_DMA 80010000 00010000 RESERVED ARGS 80020800 00000800 RESERVED DBGSER_DMA 80022000 00002000 RESERVED SER_DMA 80024000 00002000 RESERVED IR_DMA 80026000 00002000 RESERVED SLEEP 80028000 00002000 RESERVED EDBG 80030000 00020000 RESERVED DISPLAY 80100000 00100000 RESERVED CONFIG AUTOSIZE=ON COMPRESSION=ON DLLADDR_AUTOSIZE=ON KERNELFIXUPS=ON PROFILE=ON ROMFLAGS=0 ;ROMSIZE = 01E00000 ;ROMSTART = 800B8000 ;ROMWIDTH = 32 ROM_AUTOSIZE = OFF XIPSCHAIN=803FF000 3. 我的platform.bib如下: ;;;;;我并没有删除原来打包到NK.BIN的文件,就是说这些文件可能打包了两次,不晓得有问题没? ;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 smflash.dll $(_FLATRELEASEDIR)\smflash.dll XIPKERNEL SH ;FILES boot.hv $(_FLATRELEASEDIR)\boot.hv XIPKERNEL SH default.hv $(_FLATRELEASEDIR)\default.hv XIPKERNEL SH user.hv $(_FLATRELEASEDIR)\user.hv XIPKERNEL SH 4. 我的platform.reg如下: ;HIVE BOOT SECTION IF BSP_NONANDFS ! [HKEY_LOCAL_MACHINE\init\BootVars] "SYSTEMHIVE"="System.hv" "Start DevMgr"=dword:1 ; "Flags"=dword:3 "RegistryFlags"=dword:1 "DefaultUser"="avantech" [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH] "DefaultFileSystem"="FATFS" "AutoPart"=dword:1 "AutoMount"=dword:1 "AutoFormat"=dword:1 "MountAsBootable"=dword:1 "MountAsRoot"=dword:1 "PartitionDriver"="mspart.dll" "Name"="Microsoft Flash Disk" "Folder"="ResidentFlash" "BootPhase"=dword:0 "Flags"=dword:1000 ; Keep FATFS from trying to shadow \Windows [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\FATFS] "FriendlyName"="FAT FileSystem" "Dll"="fatfsd.dll" "Flags"=dword:00000024 "Paging"=dword:1 "CacheSize"=dword:0 "EnableCacheWarm"=dword:0 "EnableCache"=dword:1 "Flags"=dword:1000 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH] "Prefix"="DSK" "Dll"="smflash.dll" "Index"=dword:1 "Order"=dword:0 "Profile"="SMFLASH" "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}" "Flags"=dword:1000 [HKEY_LOCAL_MACHINE\System\StorageManager\FATFS] "Flags"=dword:00000014 "MountFlags"=dword:2 [HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH] "DriverPath"="Drivers\\BuiltIn\\SMFLASH" ; LoadFlags 0x01 == load synchronously "LoadFlags"=dword:1 "BootPhase"=dword:0 "Flags"=dword:1000 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 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:10 "BootPhase"=dword:0 ENDIF ; BSP_NONANDFS ;END HIVE BOOT SECTION 最后生成了NK.BIN,XIP.BIN等等文件,我通过EBOOT下载了XIP.BIN文件到NANDflash并启动 最后,我的eboot打印出来的信息如下: Download BIN file information: ----------------------------------------------------- [0]: Base Address=0x80200000 Length=0x1cee19c ----------------------------------------------------- Writing single region/multi-region update, dwBINFSPartLength: 30335388 INFO: using TOC[1] dwJumpAddress: 0x8029C420 waitforconnect INFO: OEMLaunch: Jumping to Physical Address 0x3029C420h (Virtual Address 0x8029C420h)... 到这里之后就没有反应了,我实在不知道怎么做下去了,请教这是什么原因呢?是不是我那一步做错了? 我再次启动系统,串口打印消息如下: Microsoft Windows CE Ethernet Bootloader Common Library Version 1.1 Built Oct 28 2008 18:59:35 Microsoft Windows CE Bootloader for the Samsung SMDK2440 Version 2.4 Built Oct 28 2008 INFO : -------------------------------------------------------- INFO : pUSBCtrlAddr = 0xB1200140 INFO : &(pUSBCtrlAddr->EIER) = 0xB120015C INFO : pUSBCtrlAddr->EIER.ep0_int_en = 0x1 INFO : pUSBCtrlAddr->EIER.ep1_int_en = 0x1 INFO : pUSBCtrlAddr->EIER.ep2_int_en = 0x0 INFO : pUSBCtrlAddr->EIER.ep3_int_en = 0x1 INFO : pUSBCtrlAddr->EIER.ep4_int_en = 0x0 INFO : -------------------------------------------------------- BP_Init 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 = 0x76 4th Cycle : 0xa5 NUMBLOCKS : 512(0x200), SECTORSPERBLOCK = 256(0x100), BYTESPERSECTOR = 512(0x200) MID = 0xec, DID = 0x76 4th Cycle : 0xa5 NUMBLOCKS : 512(0x200), SECTORSPERBLOCK = 256(0x100), BYTESPERSECTOR = 512(0x200) wNUM_BLOCKS : 512(0x200) Press [ENTER] to launch image stored on boot media, or [SPACE] to enter boot monitor. Initiating image launch in 0 seconds. Launching image from boot media ... OEMPlatformInit: IMAGE_TYPE_RAMIMAGE System ready! Preparing for download... waitforconnect INFO: OEMLaunch: Jumping to Physical Address 0x3029C420h (Virtual Address 0x8029C420h)... 以上都属于是EBOOT打印的消息, 我想这证明我确实是烧写了XIP.BIN文件进去的,只不过这个XIP.BIN没有启动起来,但是我觉得我所有的步骤都是按驱动开发网上的步骤来做的 呀,怎么就是不对呢? 我想请教是什么原因?请大师们能否在百忙之中抽点时间解答我的疑惑。万分感谢。 附件是我的BSP的设置,谢谢。 还有,我没有在BSP的OEMInit中的最后加上对InitRomChain的调用,不知道有没有问题。 |
|
|
沙发#
发布于:2008-10-31 08:44
怎么就没人响应下呢?
|
|
板凳#
发布于:2008-10-31 15:51
1,bootloader里面要用bp_openpartition来分区,至少分成两个,一个格式化为binfs
2,下载xip。bin后,要烧到binfs分区里 3,系统启动时,要能加载binfs分区 最好先在非mutlibin模式下把以上功能确认好,然后改为mutlibin |
|
地板#
发布于:2008-10-31 16:26
兄弟,搞出来了没
我也按照前面dreamzqw , harktrip等人的方法做了 不过没成功。我吧xip.bin用USB下载,eboot输出这些如下信息,请教各位怎么回事 INFO: OEMLaunch: Jumping to Physical Address 0x3022B720h (Virtual Address 0x8022B720h)... |
|
地下室#
发布于:2008-10-31 16:33
出现这种错误是什么问题?sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8022b5dc
DCache: 8 sets, 64 ways, 32 line size, 16384 size ICache: 8 sets, 64 ways, 32 line size, 16384 size InitDisplay:640*480 Sp=ffffc7cc OEMIoControl: Unsupported Code 0x10100b4 - device 0x0101 func 45 OEMIoControl: Unsupported Code 0x101008c - device 0x0101 func 35 Data Abort: Thread=83fc6000 Proc=80426270 'filesys.exe' AKY=00000003 PC=03f9e9c8(coredll.dll+0x0002e9c8) RA=03f9e9a0(coredll.dll+0x0002e9a0) BVA=04000000 FSR=00000007 OEMIoControl: Unsupported Code 0x101008c - device 0x0101 func 35 OEMIoControl: Unsupported Code 0x10100c4 - device 0x0101 func 49 OEMIoControl: Unsupported Code 0x10100d0 - device 0x0101 func 52 OEMIoControl: Unsupported Code 0x10100f8 - device 0x0101 func 62 Data Abort: Thread=83fc6000 Proc=80426270 'filesys.exe' AKY=00000003 PC=03f9e9c8(coredll.dll+0x0002e9c8) RA=03f9e9a0(coredll.dll+0x0002e9a0) BVA=04000000 FSR=00000007 Data Abort: Thread=83fc6000 Proc=80426270 'filesys.exe' AKY=00000003 PC=8022e5ac(NK.EXE+0x0002e5ac) RA=8022e598(NK.EXE+0x0002e598) BVA=03f11b30 FSR=00000007 Data Abort: Thread=83fc6000 Proc=80426270 'filesys.exe' AKY=ffffffff PC=0002c868(filesys.exe+0x0001c868) RA=0002c824(filesys.exe+0x0001c824) BVA=42001000 FSR=00000005 Data Abort: Thread=83fc6000 Proc=80426270 'filesys.exe' AKY=ffffffff PC=0002dd40(filesys.exe+0x0001dd40) RA=0003481c(filesys.exe+0x0002481c) BVA=420000e8 FSR=00000005 |
|
5楼#
发布于:2008-10-31 17:51
可能是xipkern里面少了一些文件
|
|
6楼#
发布于:2008-11-01 15:49
dsky021
不好意思, 我沒回你的信息.. 因為.. 因為我現在的問題和你一樣的..完全和你一樣 所以我也幫不了 |
|
7楼#
发布于:2008-11-03 09:58
harktrip大侠也遇到这个问题
那没办法了 |
|
8楼#
发布于:2008-11-04 09:36
这个问题很简单,就是按照他那种做法理论上可以,但实际上不行,xipkernel中必须包含的文件远远多于5个,见下表,根据你所需要的模块不同而有所不同
nk.exe @XIPKERN kitl.dll @XIPKERN kernel.dll @XIPKERN kd.dll @XIPKERN hd.dll @XIPKERN osaxst0.dll @XIPKERN osaxst1.dll @XIPKERN celog.dll @XIPKERN celogflush.exe @XIPKERN relfsd.dll @XIPKERN shell.exe @XIPKERN shellcelog.dll @XIPKERN coredll.dll @XIPKERN filesys.exe @XIPKERN diskcache.dll @XIPKERN fatutil.dll @XIPKERN binfs.dll @XIPKERN fsdmgr.dll @XIPKERN mspart.dll @XIPKERN ;msflash.dll @XIPKERN ceddk.dll @XIPKERN boot.hv @XIPKERN default.hv @XIPKERN user.hv @XIPKERN devmgr.dll @XIPKERN busenum.dll @XIPKERN ;k.coredll.dll @XIPKERN romfsd.dll @XIPKERN device.dll @XIPKERN udevice.exe @XIPKERN cachefilt.dll @XIPKERN toolhelp.dll @XIPKERN ;k.toolhelp.dll @XIPKERN pm.dll @XIPKERN exfat.dll @XIPKERN fpcrt.dll @XIPKERN ;k.fpcrt.dll @XIPKERN wince.nls @XIPKERN 还有一些服务程序,以及一些驱动(包含powerup、powerdown)的,也必须放在xipkern中,否则系统休眠后唤醒异常 |
|
9楼#
发布于:2008-11-04 09:36
另外使用mutlibin是可以使用rom only的
|
|
10楼#
发布于:2008-11-04 10:50
我的情况可能是binfs文件系统的加载不正常,因为不能在用户界面上显示这个盘,fatfs就可以
|
|
11楼#
发布于:2008-11-07 13:44
谢谢 ziyun 的热心回复,可是我还是没搞定
|
|
12楼#
发布于:2008-11-07 14:04
我的已經搞定了...
有些情况不同,所以解答的方法也不会一样 以我而言,我的kernel缩到1.2MB MODULES --------------------------------------- 11/06/2008 17:21:51 335872 nk.exe 11/07/2008 05:50:36 558080 coredll.dll 11/07/2008 05:50:36 229376 filesys.exe 11/06/2008 16:48:32 2560 device.exe 11/06/2008 16:49:22 54784 fatfsd.dll 11/06/2008 16:49:25 10240 diskcache.dll 11/07/2008 05:50:36 36352 fatutil.dll 11/06/2008 16:49:26 13824 binfs.dll 11/06/2008 16:49:21 79872 fsdmgr.dll 11/06/2008 16:49:26 19456 mspart.dll 11/06/2008 17:21:32 15872 ceddk.dll 11/06/2008 17:21:30 20992 smflash.dll FILES ---------------------------------------- 11/07/2008 05:52:37 CHRS 4960 36864 boot.hv (ROM 0x80347480) 其他的都可以省了.. 以前我搞4.2 xip时很快很轻松,改一改就好了.. 不过搞5.0 xip整整耗时10天.. 搞好后才发现.. 原来网路上大家说的,跑不起来的原因: 1.网路解答不完整 2.高手们保留一手 3.因为板子配置不同,导致结果也不同... 不过还是要自己多摸索,搞好后才会很爽.. |
|
13楼#
发布于:2008-11-07 14:10
给正在受困的朋友..一个方向..
确定档案没少了.. 唯一的..就是注册表了.. 网上多找些注册表来试试.. 用eboot烧录xip.bin 用vivi,uboot一些不三不四的程序来烧xip 不用来问 " 用vivi uboot怎么跑不起来 " |
|
14楼#
发布于:2008-11-07 14:51
请教dsky021:能否说说你从第一步到第二步做了哪些改动呢?我现在还停留在第一步呢。第一步
引用第3楼dsky021于2008-10-31 16:26发表的 : 第二步 出现这种错误是什么问题?sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8022b5dc DCache: 8 sets, 64 ways, 32 line size, 16384 size ICache: 8 sets, 64 ways, 32 line size, 16384 size InitDisplay:640*480 Sp=ffffc7cc OEMIoControl: Unsupported Code 0x10100b4 - device 0x0101 func 45 OEMIoControl: Unsupported Code 0x101008c - device 0x0101 func 35 Data Abort: Thread=83fc6000 Proc=80426270 'filesys.exe' AKY=00000003 PC=03f9e9c8(coredll.dll+0x0002e9c8) RA=03f9e9a0(coredll.dll+0x0002e9a0) BVA=04000000 FSR=00000007 OEMIoControl: Unsupported Code 0x101008c - device 0x0101 func 35 OEMIoControl: Unsupported Code 0x10100c4 - device 0x0101 func 49 OEMIoControl: Unsupported Code 0x10100d0 - device 0x0101 func 52 OEMIoControl: Unsupported Code 0x10100f8 - device 0x0101 func 62 Data Abort: Thread=83fc6000 Proc=80426270 'filesys.exe' AKY=00000003 PC=03f9e9c8(coredll.dll+0x0002e9c8) RA=03f9e9a0(coredll.dll+0x0002e9a0) BVA=04000000 FSR=00000007 Data Abort: Thread=83fc6000 Proc=80426270 'filesys.exe' AKY=00000003 PC=8022e5ac(NK.EXE+0x0002e5ac) RA=8022e598(NK.EXE+0x0002e598) BVA=03f11b30 FSR=00000007 Data Abort: Thread=83fc6000 Proc=80426270 'filesys.exe' AKY=ffffffff PC=0002c868(filesys.exe+0x0001c868) RA=0002c824(filesys.exe+0x0001c824) BVA=42001000 FSR=00000005 Data Abort: Thread=83fc6000 Proc=80426270 'filesys.exe' AKY=ffffffff PC=0002dd40(filesys.exe+0x0001dd40) RA=0003481c(filesys.exe+0x0002481c) BVA=420000e8 FSR=00000005 |
|
15楼#
发布于:2008-11-08 14:11
首先确保binfs能正常加载,工程里必须加载的模块Binary Rom Image File System和RAM and Rom File System
|
|
16楼#
发布于:2008-11-08 14:14
请问harktrip
怎样才能使启动速度提高呢 就是很快显示桌面 看到有高手都可以4~5秒启动的 |
|
17楼#
发布于:2008-11-09 04:39
你看你现在的开机过程中,哪一段最耗时间.
一般都是 前面浪费了4~5秒在复制整个image到RAM.. 你的image 30M,它就要复制30M... 改XIP后,复制的长度你就改掉了..改成你的xipkernel.bin整数大小即可 例如1.5M或2M 如此一来 省了4秒左右 |
|
18楼#
发布于:2008-11-10 09:25
引用第17楼harktrip于2008-11-09 04:39发表的 : 就这点可以省几秒,有什么方法可以先显示桌面然后再加载其它一些还没用到的驱动,比如摄像头,sd卡这些,谢了! |
|
19楼#
发布于:2008-11-10 10:28
能不能那位传个MUTIBIN的BSP上去啊 ?实在是搞不定了,人笨,没有办法。都整了个把月了,我的邮箱是qq302011@126.com,哪位达人能否传一个给我呀
|
|