8545|27

87

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince 5.0 binfs如何加载? [复制链接]

有几个问题向大家请教下。。

1)我通过在UBOOT下用BOOTPART LIB给NAND FLASH分区,前40M格式化为BINFS,后面的部分都格式化FAT格式。如果我有一个BIN文件需要通过BINFS文件系统来访问,那么我往BINFS分区写数据的时候是直接写入XXX.BIN文件,还是经过解释后的XXX.NB0文件?通过查看EBOOT的源码,我的猜测是应该写入XXX.NB0文件,XXX.BIN文件通过EBOOT下载后转为了NB0文件。

2)我采用单个BIN的时候直接下载NB0文件到固定的地址,整个系统能够正常跑起来。为了测试多个BIN的情形,我的config.bin做了如下修改:
NK        8C200000  02300000  RAMIMAGE
CHAIN   8E500000  100000                RESERVED
KK        8E600000        100000                NANDIMAGE
RAM     8E600000  01600000  RAM
pdwXIPLoc 00000000  8E500000  FIXUPVAR

我多加了KK镜像文件,里面只包含了一个文件cdc-acm.dll文件,其它所有的东西还是在NK里面。注册表也加入对BINFS的支持
[HKEY_LOCAL_MACHINE\System\StorageManager\PartitionTable]
    "21"="BINFS"

[HKEY_LOCAL_MACHINE\System\StorageManager\BINFS]
        "Folder"="BINFS"
        "FriendlyName"="Bin FileSystem"
        "Dll"="binfs.dll"
        "Paging"=dword:1
        "MountAsROM"=dword:1
        "MountHidden"=dword:0


然后我把KK.NB0文件写入BINFS分区,加载NK.NB0,CHAIN.NB0到固定的地址上,跳转过去执行。整个系统能够起来,但是无法在/WINDOWS目录下看到cdc-acm.dll 文件。
在存储管理器里面能够看到系统已经识别到了2个分区,BINFS分区和FAT分区。但是BINFS没有被挂载,只有FAT分区挂载了。我手动去挂载BINFS分区,提示无法载入分区。还有我没有采用
HIVE注册表(不知道这个是否会有影响)

下面是我NAND FALSH的注册表
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDrv]
        "Prefix"="DSK"
        "Dll"="FLASHDRV.dll"
;        "FSD"="FATFS.DLL"       
        "Order"=dword:2
        "Ioctl"=dword:4
        "Profile"="FlashDrv"
        "FriendlyName"="MS Flash Driver"
        "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
       
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDrv]
        "Folder"="NandFlash"
        "Name"="Nand Flash Disk"
        "DefaultFileSystem"="BINFS"
        "PartitionDriver"="mspart.dll"
        "AutoMount"=dword:1
        "AutoPart"=dword:1
;         "AutoFormat"=dword:1


3)是否能够挂载BINFS分区到一个目录下,通过设置"MountHidden"=dword:0,让用户可见。我查询了相关资料,发现有的说可以,有的说不可以。
此帖出自WindowsCE论坛

最新回复

mark,现在在做这个方面的事情  详情 回复 发表于 2009-9-8 11:30
点赞 关注
 

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
binfs 顾名思义,是对bin文件的文件系统。

你现在弄个nb0文件。不行吧。

这个binfs的源码,我看了一下,觉得自己道行太低了。搞不懂。只能看以后道行高了才去看。
此帖出自WindowsCE论坛
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我现在没有EBOOT没仔细看,不过我看它源码是边下载边解释的啊?最后跳转,或者写到flash的,现在不太确定,想确认下
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
而且BINFS解析镜像,应该只需要对应镜像的TOC就可以定位文件了。
此帖出自WindowsCE论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

5
 
不懂,帮顶
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

6
 
UP
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

7
 
友情UP
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

8
 
关于binfs的问题,我国两个月估计才有时间详细看。现在还要打基础。

楼主弄明白了,写写博客吧。到时候小弟也受益。
此帖出自WindowsCE论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
使用.nb0形式。
使用Binfs和Hive没关系。
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 
LZ可以把Binfs的部分放到自己的BSP下调试一下,看看为何没有加载起来。
此帖出自WindowsCE论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
纠正一个概念,nk.bin 和 nk.nb0关系就是一个压缩后的和一个没压缩的的区别。
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

12
 
用eboot之类的,通过串口、usb、网口等下载的都是bin文件,除非专门修改过的eboot。nb0一般提供给生产使用烧录器直接烧录到flash之后再贴片。

注册表修改后,BINFS是可以被挂载的,但是无法修改。

你的bin是如何生成的?为什么会要求单独下载一个bin放到已经存在的binfs系统中?能下载,但是如何保证这个bin文件包含的内容,能被系统识别?
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 
好,先谢谢大家。

BINFS只是文件系统,我在NAND上面用BOOTPART提供的OPEN接口创建了一个BINFS分区,得把.NB0文件通过BOOTPART提供的WRITE接口写入这个分区吧?
那也就是说,最后写入BINFS分区的数据是.NB0格式的吧?而.BIN格式只是在下载过程中使用。。。。

我今天后面把BINFS的日志打开,发现系统在挂着BINFS文件系统时,在InitVolume函数中,最后调用kernellibiocontrol时出错,错误信息是
IOCTL_KLIB_SETROMDLLBASE faild.

不知道这个啥原因?是不是config.bib中的配置有关?




此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

14
 
我现在时按这样配置的
NK 8C200000  02300000  RAMIMAGE               ----------所有镜像文件都在这个区中
CHAIN  8E500000  100000 RESERVED
KK 8E600000 100000 NANDIMAGE                  ----------这个是为测试多BIN的情况,创建的一个区,我只放了一个文件在这个区中
RAM    8E600000  01600000  RAM
pdwXIPLoc 00000000  8E500000  FIXUPVAR

编译完成之后会生成nk.bin,kk.bin,chain.bin 3个文件。然后用工具转行为nk.nb0,kk.nb0,chain.nb0

我在UBOOT当中先用BP_OpenParition创建一个BINFS分区和FAT分区。然后通过TFTP下载KK.NB0,调用BP_WriteData把KK.NB0写入刚才创建的BINFS分区。
最后通过TFTP下载NK.NB0,CHAIN.NB0到SDRAM中,直接GO到NK.NB0运行,系统已经正常启动了,也已经失败到了BINFS分区,但是在挂载时出现了上面所说的错误,不知道是那配置/操作不当导致这个错误?
此帖出自WindowsCE论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

15
 
看了一天源码搞懂了BINFS和MULTI-BIN的实现原理和流程。。。可以确认BINFS的文件系统镜像格式.NB0格式,而不是.BIN格式,所以只能把.NB0文件写入BINFS分区。。。
但是现在还是卡在IOCTL_KLIB_SETROMDLLBASE faild. 这里。。不知道啥东东会导致这个问题。。。诶继续看源码。。
此帖出自WindowsCE论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

16
 
找一下你的Release目录下面有一个Xip.bin和Xip.nb0,按你这种写法,可以直接烧xip.nb0到相应的binfs分区,注意烧写的位置,因为这个分区的标志为BINFS,如果这个头被清掉的话在系统起来的时候会检测不到Binfs分区内的内容的
起动的时候在eboot中把NK大小的内容拷贝到RAM里,然后跳过去运行即可
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 14 楼 foochow 的回复:
看了一天源码搞懂了BINFS和MULTI-BIN的实现原理和流程。。。可以确认BINFS的文件系统镜像格式.NB0格式,而不是.BIN格式,所以只能把.NB0文件写入BINFS分区。。。
但是现在还是卡在IOCTL_KLIB_SETROMDLLBASE faild. 这里。。不知道啥东东会导致这个问题。。。诶继续看源码。。


真行啊!
我现在没有使用XIP的,我根本没有使用binfs。如果可以烧写nb0文件实现XIP,这样的确简单很多了。
此帖出自WindowsCE论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

18
 
BINFS 实际上就是 NB0 的格式,可以说和 NK.bin 的格式完全没有关系,大家不要被误导了。
此帖出自WindowsCE论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

19
 
现在BINFS文件系统已经挂载成功了,也能看到/BINFS目录下的文件。但是启动过程中出现以下异常信息。

'services.exe'
AKY=00000021 PC=8c20a738(NK.EXE+0x0000a738) RA=8c207d40(NK.EXE+0x00007d40) BVA=00000001 FSR=00000001

Unhandled exception c000001c:
Terminating thread 8fe0394c
OpenADll credsvc.dll
OpenADll credprov.dll
OpenADll ntlmssp.dll
OpenADll HTTPD.DLL
OpenADll BTSVC.Dll
OpenADll BTDRT.dll
OpenADll BTAGSVC.Dll
OpenADll btagext.dll
RaiseException: Thread=8fe09be0 Proc=8e626530 'services.exe'
AKY=00000021 PC=8c20a738(NK.EXE+0x0000a738) RA=8c207d40(NK.EXE+0x00007d40) BVA=00000001 FSR=00000001

Unhandled exception c000001c:
Terminating thread 8fe09be0
OpenADll imaging.dll
OpenADll ZLIB.dll
OpenADll iectl
Explorer(V2.0) taskbar thread started.
OpenADll LMemDebug.DLL
RaiseException: Thread=8fd4c400 Proc=8e626620 'usbcnect.exe'
AKY=00000041 PC=8c20a738(NK.EXE+0x0000a738) RA=8c207d40(NK.EXE+0x00007d40) BVA=00000001 FSR=00000001

但是系统还没死,触摸屏还正常,有些程序运行异常,有些应用程序又能正常运行。。

不知道是什么原因?如果不挂在BINFS文件系统,系统一切运行正常。

此帖出自WindowsCE论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

20
 
什么地方的地址可能错了
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表