阅读:3006回复:15
Wince5下如何实现Flash剩余空间自动分区格式化加载?即Resident?
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 |
|
|
沙发#
发布于:2007-11-20 10:34
没人帮忙指点吗?自己up一下,希望高手指点。
|
|
|
板凳#
发布于: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" |
|
|
地板#
发布于:2007-11-20 22:11
好象是在EBOOT中加入,在DOWN完NK.BIN后就把剩下的NAND格式化为BINFS或FATFS.
|
|
地下室#
发布于:2007-11-21 11:05
谢谢 saint_bxg 的指点。
谢谢 qinlei_sz 的指点。 目前,已经实现,方法是:下载完xip.bin之后,Eboot分好BINFS存放系统镜像,然后将剩余的空间全部分成DOS32(FAT),进入系统后即可加载。 但我希望的是:EBoot中不做这样的分区,毕竟EBoot只是wince的一个可选项而已,如果生产中,烧录的是IPL,没有下载功能的。 那么,不用EBoot分区,有别的方法实现吗? |
|
|
5楼#
发布于:2007-11-21 11:12
其实eboot分区也只是写了一个MBR表,你要是不想用EBOOT用你自己的烧写工具直接把做好的MBR写入第一个非坏块就可以了
|
|
6楼#
发布于:2007-11-21 12:41
jasonshi说的很对,这样的确可以解决生产问题。
不过,难道就必须先写这个MBR,wince才认吗?难道系统就不能有什么配置,能自己识别出呢? 看帮助中:AutoPart的解释是:Automatically partitions the store with largest creatable partition。自动将设备的最大"可创建分区"进行分区。 如果一定需要先进行分区,那么AutoPart有什么用呢?只需要AutoFormat和AutoMount就行了。 Wince不至于这么弱智吧?应该是有我们未理解的部分。看看有没有朋友帮忙指点一下。 |
|
|
7楼#
发布于:2007-11-22 20:56
不写MBR肯定不能mount上,如同一个硬盘,没有MBR,放到什么系统上都不能mount吧。你可以在IPL里面实现这个写过程。
想问一下你的270是如何接上NAND FLASH的?用GPIO模拟的吗?访问的速度怎样? |
|
8楼#
发布于:2007-11-24 13:32
试了很多次,看来只有在EBOOT或者IPL中先分区了。
下面准备接着尝试HIVE,以及多分区加载(至少2个FAT)。 回ziyun:早期是GPIO模拟,读1MBps, 写 <500KBps. 现在采用VLIO模式,读4MBps,写<2MBps。 |
|
|
9楼#
发布于:2007-11-29 16:36
兄弟,能不能把你的eboot共享一下?qq26035859
|
|
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如果使用这个参数那么物理磁盘必须要有空间才能使用的。 |
|
11楼#
发布于:2007-12-24 15:26
我也有问题:
我的strogae manger中可以看到两个分区, 但binfs和fatfs 前都没有*,即都没有加载, 我点击mount后,竟然弹出Unable to Mount Part 这是怎么回事? 该怎么解决呢 |
|
|
12楼#
发布于:2007-12-24 15:31
你的問題感覺像是註冊表沒有正確
|
|
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" |
|
|
14楼#
发布于:2007-12-25 10:57
我的WINCE50,2410,64Mflash,可以自动分区格式化。
具体是:在FMD已经能正确加载的情况下,注册表要加上"AutoFormat"=dword:1即可。 另外在FMD中设置正确的块号起始地址和长度。 wince第一次启动时会格式化的。不过时间很长,我的32M FLASH差不多也要2,3分钟。1G的话,时间更长。不过要有耐心等待。也可以在FMD的格式化函数中给点串口提示信息,免得傻等,但是系统的确起不来。 |
|
15楼#
发布于:2007-12-25 11:10
boot中只要格式化掉这部分FLASH块就可以了。
|
|