dfgeoff
驱动牛犊
驱动牛犊
  • 注册日期2004-07-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望69点
  • 贡献值0点
  • 好评度69点
  • 原创分0分
  • 专家分0分
阅读:3006回复:15

Wince5下如何实现Flash剩余空间自动分区格式化加载?即Resident?

楼主#
更多 发布于:2007-11-16 14:14
    PXA270平台,1M NOR 进行BOOT。

    1GB的NAND FLASH,系统镜像28MB,这部分使用BINFS分区,会自动分区加载,启动后,在控制面板的StorageManager下,可以看到有part0,属性为binfs。

   如果在StorageManager下选择new,会自动将剩余的空间格式化成FAT格式,并显示为NAND_STORAGE目录。

    现在希望在启动时,将剩下的空间自动分区为FAT格式,并显示为DISKSOTRAGE目录,请问如何设置注册表?或者,是否需要重新修改boot/驱动?

  platform.reg相关配置如下:

[HKEY_LOCAL_MACHINE\System\StorageManager]
    "Dll"="fsdmgr.dll"
    "PNPUnloadDelay"=dword:0


[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NandFls]
        "Profile"="NandFls"
        "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
        "Order"=dword:0
        "FriendlyName"="Nand Flash Driver"
        "Dll"="NandFls.dll"
        "Prefix"="DSK"
        
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NandFls]
    "Name"= "NANDSTORAGE" ; 在控制面板的StorageManager下看到的名字
    "Folder"=LOC_DEFAULTSTORAGENAME ;makeimg过程会被替换成NAND_STORAGE
    "DefaultFileSystem"="BINFS"
    "PartitionDriver"="mspart.dll"

IF IMG_BINFS
    ; MountFlags 0x10 == shadow in \windows
    ; MountFlags 0x01 == hidden file system
    "MountFlags"=dword:10011

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NandFls\FATFS]
    "MountAsRoot"=dword:1
    "MountAsBootable"=dword:1
    "FormatTfat"=dword:1
    "CheckForFormat"=dword:1 ;Check with OAL for format request
    "Flags"=dword:00000014
    "MountFlags"=dword:0
ENDIF   ; IMG_BINFS

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MMC]
    "Name"="MMC Card"
    "Folder"=LOC_DEFAULTMMCNAME

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMemory]
    "Name"="SD Memory Card"
    "Folder"=LOC_DEFAULTMMCNAME

[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\NandFls]
    "DriverPath"="Drivers\\BuiltIn\\NandFls"
    "LoadFlags"=dword:1
    "Order"=dword:0
    "BootPhase"=dword:0
日本-倭子-该死! 抵制日货! 敢犯我中华者,虽远必诛!
dfgeoff
驱动牛犊
驱动牛犊
  • 注册日期2004-07-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望69点
  • 贡献值0点
  • 好评度69点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-11-20 10:34
没人帮忙指点吗?自己up一下,希望高手指点。
日本-倭子-该死! 抵制日货! 敢犯我中华者,虽远必诛!
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-11-20 14:36
加上这个试试:
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\NandFls]
"AutoMount"=dword:1
       "AutoPart"=dword:1
       "AutoFormat"=dword:1
     "PartitionDriver"="mspart.dll"
    "DefaultFileSystem"="FATFS"
努力! 成功就在不远处....
qinlei_sz
驱动小牛
驱动小牛
  • 注册日期2007-03-24
  • 最后登录2012-12-18
  • 粉丝0
  • 关注0
  • 积分1090分
  • 威望510点
  • 贡献值0点
  • 好评度145点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-11-20 22:11
好象是在EBOOT中加入,在DOWN完NK.BIN后就把剩下的NAND格式化为BINFS或FATFS.
dfgeoff
驱动牛犊
驱动牛犊
  • 注册日期2004-07-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望69点
  • 贡献值0点
  • 好评度69点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-11-21 11:05
谢谢 saint_bxg 的指点。
谢谢 qinlei_sz 的指点。

    目前,已经实现,方法是:下载完xip.bin之后,Eboot分好BINFS存放系统镜像,然后将剩余的空间全部分成DOS32(FAT),进入系统后即可加载。

    但我希望的是:EBoot中不做这样的分区,毕竟EBoot只是wince的一个可选项而已,如果生产中,烧录的是IPL,没有下载功能的。

    那么,不用EBoot分区,有别的方法实现吗?
日本-倭子-该死! 抵制日货! 敢犯我中华者,虽远必诛!
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-11-21 11:12
其实eboot分区也只是写了一个MBR表,你要是不想用EBOOT用你自己的烧写工具直接把做好的MBR写入第一个非坏块就可以了
dfgeoff
驱动牛犊
驱动牛犊
  • 注册日期2004-07-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望69点
  • 贡献值0点
  • 好评度69点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-11-21 12:41
jasonshi说的很对,这样的确可以解决生产问题。

   不过,难道就必须先写这个MBR,wince才认吗?难道系统就不能有什么配置,能自己识别出呢?

   看帮助中:AutoPart的解释是:Automatically partitions the store with largest creatable partition。自动将设备的最大"可创建分区"进行分区。

    如果一定需要先进行分区,那么AutoPart有什么用呢?只需要AutoFormat和AutoMount就行了。

    Wince不至于这么弱智吧?应该是有我们未理解的部分。看看有没有朋友帮忙指点一下。

  
日本-倭子-该死! 抵制日货! 敢犯我中华者,虽远必诛!
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-11-22 20:56
不写MBR肯定不能mount上,如同一个硬盘,没有MBR,放到什么系统上都不能mount吧。你可以在IPL里面实现这个写过程。

想问一下你的270是如何接上NAND FLASH的?用GPIO模拟的吗?访问的速度怎样?
dfgeoff
驱动牛犊
驱动牛犊
  • 注册日期2004-07-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望69点
  • 贡献值0点
  • 好评度69点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-11-24 13:32
试了很多次,看来只有在EBOOT或者IPL中先分区了。

下面准备接着尝试HIVE,以及多分区加载(至少2个FAT)。

回ziyun:早期是GPIO模拟,读1MBps, 写 <500KBps. 现在采用VLIO模式,读4MBps,写<2MBps。
日本-倭子-该死! 抵制日货! 敢犯我中华者,虽远必诛!
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-11-29 16:36
兄弟,能不能把你的eboot共享一下?qq26035859
king_sundi
驱动牛犊
驱动牛犊
  • 注册日期2006-07-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望238点
  • 贡献值1点
  • 好评度54点
  • 原创分0分
  • 专家分5分
10楼#
发布于:2007-12-24 13:31
哦,是这样的我觉得我们应该首先明确一下概念!CE下面究竟有几总分区 $Wl2wD  
M7QRF^K!  
1。不同存储介质 L
2。同一个存储介质上面的不同格式的分区例如binfs与FAT32 mkeo"N)k%  
3。同一种格式的存储区份出来的不同的存储区与如一个FAT32可以分成好几个分区 I P#qYBB  
Le`kk}>  
首先根据你说的现象我推断你用的是微软的FLASH驱动模型!由于你用的是CE4.2!所以比较麻烦 3w,R}  
1。首先你可以更改你的FLASH驱动程序,将它分成两份,也就是骗操作系统你有两个物理的硬件。这个具体的不用说了,当然你的注册表也要两份 a~&P P g  
2。在EBOOT内你可以使用BP_OpenPartition函数进行分区,先将系统分成几个不同类型的大区然后再分成逻辑分区。看你上面说的函数应该好用另外你看一下你的BP_OpenPartition是否执行成功了NEXT_FREE_LOC如果使用这个参数那么物理磁盘必须要有空间才能使用的。
dapli
驱动牛犊
驱动牛犊
  • 注册日期2007-04-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分411分
  • 威望52点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-12-24 15:26
我也有问题:
我的strogae  manger中可以看到两个分区, 但binfs和fatfs 前都没有*,即都没有加载,
我点击mount后,竟然弹出Unable to Mount Part
这是怎么回事?
该怎么解决呢
三千水击,九万扶摇
wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-12-24 15:31
你的問題感覺像是註冊表沒有正確
dapli
驱动牛犊
驱动牛犊
  • 注册日期2007-04-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分411分
  • 威望52点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-12-24 16:28
楼上兄弟
我的注册表是
IF BSP_NONANDFS !
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk]
    "DefaultFileSystem"="FATFS"
    "PartitionDriver"="mspart.dll"
    "AutoPart"=dword:1
    "AutoMount"=dword:1
    "AutoFormat"=dword:1
    "MountAsRoot"=dword:1
    "Folder"="Flash Disk"
    "BootPhase"=dword:0
    "Name"="FLASH001"

; Keep FATFS from trying to shadow \Windows
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk\FATFS]  
    "MountAsROM"=dword:1
    "Flags"=dword:14
    "FormatTfat"=dword:1
    "CheckForFormat"=dword:1
    "MountAsBootable"=dword:1

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSFlash]
    "Profile"="FlashDisk"
    "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
    "Order"=dword:0
    "Index"=dword:1
    "FriendlyName"="MSFLASH Driver"
    "Dll"="smflash.dll"
    "Prefix"="DSK"
三千水击,九万扶摇
wikee
驱动小牛
驱动小牛
  • 注册日期2003-02-25
  • 最后登录2009-02-21
  • 粉丝0
  • 关注0
  • 积分355分
  • 威望108点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-12-25 10:57
我的WINCE50,2410,64Mflash,可以自动分区格式化。
具体是:在FMD已经能正确加载的情况下,注册表要加上"AutoFormat"=dword:1即可。
另外在FMD中设置正确的块号起始地址和长度。
wince第一次启动时会格式化的。不过时间很长,我的32M FLASH差不多也要2,3分钟。1G的话,时间更长。不过要有耐心等待。也可以在FMD的格式化函数中给点串口提示信息,免得傻等,但是系统的确起不来。
wikee
驱动小牛
驱动小牛
  • 注册日期2003-02-25
  • 最后登录2009-02-21
  • 粉丝0
  • 关注0
  • 积分355分
  • 威望108点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-12-25 11:10
boot中只要格式化掉这部分FLASH块就可以了。
游客

返回顶部