7389|15

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于WINCE分区的问题 [复制链接]

请问:没有EBOOT,如何将我的NANDFLASH分成二个FAT区,!谢谢了! 我的BOOT是用ADS编译的,OS是WINCE4。2,请问怎么可以将FLASH分成两个FAT盘符。我的FLASH是K9G8G,两片,共2GB,三星2440,谢谢了!

最新回复

分区时,分区表这些是写在Flash里面的,重启还在的!  详情 回复 发表于 2010-1-26 09:23
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮顶下。

MARK。
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
据说是这个函数    // create extended partition in whatever is left
    //
    hPartEx = BP_OpenPartition( NEXT_FREE_LOC,
                                USE_REMAINING_SPACE,
                                PART_DOS32,
                                TRUE,
                                PART_OPEN_ALWAYS);
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
用CreatePartition()就可以了。流程

1、用FindFirstStore()和FindNextStore()枚举系统中所有Store设备,根据szStoreName判断是不是我们要的Nand Flash。
2、根据找到的Store句柄调用CreatePartition(),可以指定partition的名字、扇区数
3、调用OpenPartition(),根据Store句柄和Partition的名字打开分区
4、调用DismountPartition()卸载分区。
5、调用FormatVolume()格式化分区,此时可以指定簇大小、FAT版本等。
6、调用MountPartition()加载分区

2---6可以重复多次调用,就可以建立多个分区了。
注意每个分区的大小,不要第一次就用完了Store的所用空间,后面的分区会建立失败的
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
如果用EBOOT的话,在EBOOT里重复用
        hPartEx = BP_OpenPartition( NEXT_FREE_LOC,
                USE_REMAINING_SPACE,
                PART_DOS32,
                FALSE,
                PART_OPEN_ALWAYS);
就可以建立多少分区
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 3 楼 yangcuncunzhang 的回复:
用CreatePartition()就可以了。流程

1、用FindFirstStore()和FindNextStore()枚举系统中所有Store设备,根据szStoreName判断是不是我们要的Nand Flash。
2、根据找到的Store句柄调用CreatePartition(),可以指定partition的名字、扇区数
3、调用OpenPartition(),根据Store句柄和Partition的名字打开分区
4、调用DismountPartition()卸载分区。
5、调用FormatVolume()格式化分区,此时可以指定簇大小、FAT版本等。
6、调用MountPartition()加载分区

2---6可以重复多次调用,就可以建立多个分区了。
注意每个分区的大小,不要第一次就用完了Store的所用空间,后面的分区会建立失败的


楼主是ADS bootloader的,估计是自动分区那种,楼主应该 多加载一次驱动,估计就可以了。呵呵
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
不行呀!多加载一次不行呢!起不来!哪位实现过呀,注册表怎么写的呀?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 gooogleman 的回复:
引用 3 楼 yangcuncunzhang 的回复:
用CreatePartition()就可以了。流程

1、用FindFirstStore()和FindNextStore()枚举系统中所有Store设备,根据szStoreName判断是不是我们要的Nand Flash。
2、根据找到的Store句柄调用CreatePartition(),可以指定partition的名字、扇区数
3、调用OpenPartition(),根据Store句柄和Partition的名字打开分区
4、调用DismountPartition()卸载分区。
5、调用FormatVolume()格式化分区,此时可以指定簇大小、FAT版本等。
6、调用MountPartition()加载分区

2---6可以重复多次调用,就可以建立多个分区了。
注意每个分区的大小,不要第一次就用完了Store的所用空间,后面的分区会建立失败的


楼主是ADS bootloader的,估计是自动分区那种,楼主应该 多加载一次驱动,估计就可以了。呵呵


BootLoader是什么编译的应该没关系吧?
我的项目中,BootLoader也是ADS1.2的,WinCE5是PlatForm Builder做的,就是用上面的办法建立多个分区的,注册表中只用了一份驱动。这样有个小缺陷:分区的名字是根据注册表里面指定的,如果用上面的API建立多个分区,各个盘符的名字会是Nand Flash, Nand Flash1, Nand Flash2。

楼主,下面是我的注册表项

; Use Device Manager to load the NAND FMD driver as a built-in block driver.
; This can be used for both WinCE and Windows Mobile builds.
;
; Note: We support Windows Mobile Image Update build for SmartPhone,
; and the registry settings below get conflicts with the ones needed by Image Update.
; So we will overwrite them and setup Storage Manager Autoload keys in SmartPhone section
; to load NAND FMD driver as persistent storage during the early boot phases.
;
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NANDFMD]
    "Profile"="FlashDisk"
    "Index"=dword:1
    "Dll"="nandfmd.dll"
    "Prefix"="DSK"
    "Order"=dword:1
    "FSD"="FATFS.DLL"
    "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"

; Override names in default profile. These settings are also required to
; support the automatic mounting and creation of the "NAND Flash" folder.
;
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk]
    "DriverPath"="Drivers\\BuiltIn\\NANDFMD"
    "Name"="NAND FLASH"
    "Folder"="NAND Flash"
    "DefaultFileSystem"="FATFS"
    "EnableCache"=dword:1
    "CacheSize"=dword:0

; Explicitly specify the use of the TFAT filesystem for NAND flash.
;
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk1\FATFS]
    "FormatTfat"=dword:1     ; Format partitions to be TFAT
    "Flags"=dword:007C1014   ; reference follow bit flag
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

9
 
楼上兄弟!能否将你BOOT中怎样分区的代码也贴出来呀?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 8 楼 sunboyljp 的回复:
楼上兄弟!能否将你BOOT中怎样分区的代码也贴出来呀?


你好!
我没有在Boot中进行分区啊?我是在WinCE5运行起来后用3楼的代码分区的!
是不是我们的理解有偏差?你是什么意思?再描述详细点
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 9 楼 yangcuncunzhang 的回复:
引用 8 楼 sunboyljp 的回复:
楼上兄弟!能否将你BOOT中怎样分区的代码也贴出来呀?


你好!
我没有在Boot中进行分区啊?我是在WinCE5运行起来后用3楼的代码分区的!
是不是我们的理解有偏差?你是什么意思?再描述详细点

yangcuncunzhang  老兄,你是wince启动到桌面后,用应用程序来分区的?
赞,很好的办法。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

12
 
我有EBOOT,但是不是通过EBOOT分区的,是在WINCE启动的时候由WINCE进行分区的。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 9 楼 yangcuncunzhang 的回复:
引用 8 楼 sunboyljp 的回复:
楼上兄弟!能否将你BOOT中怎样分区的代码也贴出来呀?


你好!
我没有在Boot中进行分区啊?我是在WinCE5运行起来后用3楼的代码分区的!
是不是我们的理解有偏差?你是什么意思?再描述详细点

也许你的方法适合他用,想了解一下这种方法会把分区数据记录到注册表中吧?(也许是自动记录)否则总不会每次启动都要重新分区一次吧?
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

14
 
yangcuncunzhang你用应用程序来分区后,下次重启后那分区就存在了吗?需不需要重启后又得分区!
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

15
 
mark,学习一下
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 13 楼 sunboyljp 的回复:
yangcuncunzhang你用应用程序来分区后,下次重启后那分区就存在了吗?需不需要重启后又得分区!


分区时,分区表这些是写在Flash里面的,重启还在的!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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