4905|21

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MSFLASH驱动的问题 [复制链接]

我的平台是PXA270+Wince6.0,64M Intel P30 NOR Flash
为了替代wince5.0下的IPSM软件,我现在想使用MSFALH来将flash剩余容量利用起来,遇到了一些问题,也有一些疑问,请大家帮忙一下。
现在的问题是看不到Norflash的盘符,串口信息提示错误:FSDMGR!MountStore: Failed mounting store "MSFlash"; error=3
我查了很多资料,也参考了前辈大侠们的一些帖子,我现在的做法是:
1、在catolog中加入MSFLASH驱动
2、修改注册表和platform.bib文件。
有几个疑问如下:
1、MSFLASH驱动是否一定要和BINFS文件格式同时使用?我在别的帖子中看到的是:要在bootloader中就将Flash分区和格式化,要加入BINFS的支持。
2、如果一定要在bootloader中将flash分区和格式化,应该如何做呢?能否提供一些参考的代码?我现在的bootloader中的flash部分,已经实现了FlashWrite,FlashRead,FlashErase这几个函数,请问如何用这几个函数实现分区和格式化呢?
3、对于MS提供的MSFLASH驱动,我查了一些资料,发现似乎不用修改这个驱动,直接使用即可,只需要在注册表中进行正确的设置。请问是这样吗?
OEMtable中关于flash的信息如下:

  1. IF :DEF: MCPII_MODULE
  2.         DCD     0x9AA00000, 0x00000000, 64      ; MAINSTONEII: nCS0: MCPII Module Boot Flash (64MB).
  3.   ELSE
  4.         DCD     0x9AA00000, 0x04000000, 32      ; MAINSTONEII: nCS1: Secondary flash (32MB).
  5.         DCD     0x9CA00000, 0x00000000, 32      ; MAINSTONEII: nCS0: Boot Flash (32MB).
复制代码

我的注册表资料如下:

  1. ; HIVE BOOT SECTION                              
  2. IF IMGULDR
  3. [HKEY_LOCAL_MACHINE\Drivers\BlockDevice\RAMDisk]
  4.     "Size"=dword:00800000        ; 8MB
  5. ENDIF IMGULDR
  6. ; END HIVE BOOT SECTION
  7. ; @CESYSGEN ENDIF CE_MODULES_RAMDISK

  8. ; HIVE BOOT SECTION
  9. ;-------------------------------------------------------------
  10. ; MsFlash(Strata Flash Driver)
  11. ;-------------------------------------------------------------
  12. ; StrataFlash block driver.
  13. [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\StrataFMD]
  14.   "Dll"="stratad.dll"
  15.   "Order"=dword:2
  16.   "Prefix"="DSK"
  17.   "Ioctl"=dword:4
  18.   "Profile"="MSFlash"
  19.   "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
  20.   "IsPairedFlash"=dword:1
  21.   "BlockSize"=dword:40000
  22.   "WriteBufferSize"=dword:40
  23.   "MemBase"=dword:BCA00000     
  24.   "MemLen"=dword:100000

  25. ; Support XIP in IMGFS
  26. [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\IMGFS]
  27.     "XIP"=dword:1

  28. ; Override names in default profile
  29. [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
  30.     "Name"="MSFLASH for STRATAFLASH"
  31.     "Folder"="NOR Flash"
  32.    

  33. [HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\MSFlash]
  34.     "DriverPath"="Drivers\\BuiltIn\\StrataFMD"
  35.     ; LoadFlags 0x01 == load synchronously
  36.     "LoadFlags"=dword:1
  37.     "Order"=dword:0
  38.     "BootPhase"=dword:0


  39. ; Override names in default profile
  40. [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
  41. "DefaultFileSystem"="FATFS"
  42. "PartitionDriver"="mspart.dll"
  43. "AutoMount"=dword:1
  44. "AutoPart"=dword:1
  45. "AutoFormat"=dword:1
  46. "BootPhase"=dword:0
  47. "Name"="MSFLASH for STRATAFLASH"
  48. "Folder"="Flash"
  49. "MountFlags"=dword:2
  50. "MountAsBootable"=dword:1

  51. [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\FATFS]
  52. "FriendlyName"="FAT FileSystem"
  53. "Dll"="fatfsd.dll"
  54. ;"Flags"=dword:00000024
  55. "Paging"=dword:1
  56. "CacheSize"=dword:0
  57. "EnableCacheWarm"=dword:0
  58. "EnableCache"=dword:1
  59. "MountFlags"=dword:2

  60. ; Valid Bits for Flags registry value
  61. ; If no flags are set, the hive will be stored in the object store.
  62. ;
  63. ; 0x00000001    Start storage manager in boot phase 1 for hive-based registry
  64. ; 0x00000002    Start device manager in boot phase 1 for hive-based registry
  65. ; 0x00000004    Start storage manager in boot phase 1 for registry in
  66. ;              external ROM (such as BINFS)
  67. ; 0x00000008    Start device manager in boot phase 1 for registry in
  68. ;              external ROM (such as BINFS)

  69. ;[HKEY_LOCAL_MACHINE\init\BootVars]
  70. ;  "SystemHive"="Documents and Settings\\system.hv"
  71. ;  "ProfileDir"="Documents and Settings"
  72. ;  "Start DevMgr"=dword:1
  73. ;  "Flags"=dword:3
  74. ;  "RegistryFlags"=dword:1

  75. ;[HKEY_LOCAL_MACHINE\init\BootVars]
  76. ;"DefaultUser"="default"
  77. ; END HIVE BOOT SECTION         
复制代码

最新回复

其实我们两个的理解应该是一样的 shuiyan说的要修改eboot是一些完善的工作,就是把格式化的部分放到Eboot里面去完成,其实这样是最好的 不修改eboot也可以实现这些功能,就是在CE下面实现,有影响的就是第一次起动的时候时间可能会长一点  详情 回复 发表于 2009-2-20 13:09
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
引用楼主 jerry79 的帖子:
1、MSFLASH驱动是否一定要和BINFS文件格式同时使用?我在别的帖子中看到的是:要在bootloader中就将Flash分区和格式化,要加入BINFS的支持。
2、如果一定要在bootloader中将flash分区和格式化,应该如何做呢?能否提供一些参考的代码?我现在的bootloader中的flash部分,已经实现了FlashWrite,FlashRead,FlashErase这几个函数,请问如何用这几个函数实现分区和格式化呢?
3、对于MS提供的MSFLASH驱动,我查了一些资料,发现似乎不用修改这个驱动,直接使用即可,只需要在注册表中进行正确的设置。请问是这样吗?


1、可以不使用binfs,我就没有使用。但是我烧写的是nk.nb0文件,估计nk.bin文件需要的,因为这个bin文件是经过压缩,组织等的。需要用binfs来进行一些还原操作吧。可惜没有空,有空把内核以及文件系统都看一遍就什么都明白了。

2、不一定要用。目前三星等的eboot是在有格式化和分区功能的,但是系统也具有分区和格式化的功能,这个要改注册表,系统启动会检查MBR,如果不正常,系统会重新建立分区并格式化,这个我曾经看过创建分区的代码,的确有这个功能。我就是让系统自动分区的。我的ADS bootloader根本没有写入MBR的功能。

3、有些驱动配置注册表即可。


另外我想问你个问题,wince6.0有自带的PXA270的BSP包吗?貌似PXA310有。6410没有。
看来微软和PXA的厂商还是比较紧密的。
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
帮顶。
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(初级)

4
 
1、MSFLASH驱动是否一定要和BINFS文件格式同时使用?我在别的帖子中看到的是:要在bootloader中就将Flash分区和格式化,要加入BINFS的支持。
没有这种要求,但如果要实现BINFS必须要有FLASH驱动的支持

2、如果一定要在bootloader中将flash分区和格式化,应该如何做呢?能否提供一些参考的代码?我现在的bootloader中的flash部分,已经实现了FlashWrite,FlashRead,FlashErase这几个函数,请问如何用这几个函数实现分区和格式化呢?
最简单的方法就是什么都不做,让CE系统起来时自己去做格式化,把注册表中的一项autoformat置成1
如果要在bootloader中做格式化的话,那要参考Eboot里面的代码

3、对于MS提供的MSFLASH驱动,我查了一些资料,发现似乎不用修改这个驱动,直接使用即可,只需要在注册表中进行正确的设置。请问是这样吗?
如果不是同一型号或系列的Flash,那基本上还是需要小改动的,改动的地方一般都是跟硬件直接操作相关的部分
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(中级)

5
 
楼上我以为是机器人呢,貌似“帮顶”相当多.
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 1 楼 gooogleman 的回复:
引用楼主 jerry79 的帖子:
1、MSFLASH驱动是否一定要和BINFS文件格式同时使用?我在别的帖子中看到的是:要在bootloader中就将Flash分区和格式化,要加入BINFS的支持。
2、如果一定要在bootloader中将flash分区和格式化,应该如何做呢?能否提供一些参考的代码?我现在的bootloader中的flash部分,已经实现了FlashWrite,FlashRead,FlashErase这几个函数,请问如何用这几个函数实现分区和格式化呢?
3、对于MS提供的MSFLAS…

1、可以不使用binfs,我就没有使用。但是我烧写的是nk.nb0文件,估计nk.bin文件需要的,因为这个bin文件是经过压缩,组织等的。需要用binfs来进行一些还原操作吧。可惜没有空,有空把内核以及文件系统都看一遍就什么都明白了。
这句话有不少理解上的错误
1. 一般来说烧nk.bin的也是在最后烧入到flash前先把它展开成nb0的文件格式再烧入的
2. binfs文件系统不是用来压缩或解压缩bin文件的
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 5 楼 hzdysymbol 的回复:
1、可以不使用binfs,我就没有使用。但是我烧写的是nk.nb0文件,估计nk.bin文件需要的,因为这个bin文件是经过压缩,组织等的。需要用binfs来进行一些还原操作吧。可惜没有空,有空把内核以及文件系统都看一遍就什么都明白了。
这句话有不少理解上的错误
1. 一般来说烧nk.bin的也是在最后烧入到flash前先把它展开成nb0的文件格式再烧入的
2. binfs文件系统不是用来压缩或解压缩bin文件的


哦,是我搞错了,刚才打开代码来看,在eboot烧写的时候,的确是经过解析(解压)再烧写进去的。有好多代码与这个相关的。

那我觉得干脆烧写nk.nb0算了,这样会省很多事情。再弄个支持binfs、multibin就很完美了。去年我一直想这么做,可惜公司说已经完全够用了,启动已经低于八秒,就不搞快速启动了。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢大家。先回答一下googleman的问题,6.0有自带PXA270的BSP,不过我是从5.0移植的,没有用6.0自带的。关于PXA310和6410,6.0都没有带,要从原厂获取。

根据大家的解释,我基本上明白了。但是我现在遇到的问题:看不到Norflash的盘符,串口信息提示错误:FSDMGR!MountStore: Failed mounting store "MSFlash"; error=3
会是什么原因造成的呢?
谢谢!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
哦,有啊,那下次就用PXA270搞个东西。

Nor flash?还是nand flash?这个东西我没有遇到这样的错误。你是怎么做的吧。你的eboot。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

10
 
是 Nor Flash,这个和Eboot有关吗?该信息出现的地方Eboot已经跑完了。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 
兄弟,咱俩做的是一个东西!
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 10 楼 wangxin_801115 的回复:
兄弟,咱俩做的是一个东西!


大哥,那赶紧帮帮小弟。你的做好了吗?
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 9 楼 jerry79 的回复:
是 Nor Flash,这个和Eboot有关吗?该信息出现的地方Eboot已经跑完了。


NOR我没有弄过,不过我觉得是同一个原理吧。

写入MBR,系统才能识别分区。还有配合NOR的驱动,因为启动的时候文件系统要调用,并检测坏快等。

用NOR来分FAT区?这么贵,有钱公司啊。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

14
 
俺用的是nor,因为项目对容量没有很大要求,还有就是俺的9315对nand的支持好像怪怪的
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

15
 
270没有Nand接口的
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

16
 
你在MSFLASH的驱动里打调试信息看看吧,肯定已经调进来了
现在跟EBOOT应该没有什么关系了,你完全可以在CE下面对剩下的空间进行格式化使用
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

17
 
270用NAND已经很成熟了,怎么还这么流行用大NOR呢?没有成本压力吗?

你想在系统启动时“自动”将NOR剩余空间作为FAT32加载,就必须在eboot下将剩余空间格式化成FAT32。

看你的问题对BINFS的作用还不明晰,估计你的bsp中也没有支持binfs,而是直接全都复制到ram里面跑的吧。

找public下的BootPart,里面有OpenPartition之类的函数,其中就会检测是否有MBR,如果有就加载。如果没有就按照参数进行分区格式化。

完全是按照硬盘、FAT32的传统来的。MBR这东东ext2咋就没呢?

不要在public下直接修改,而是将代码移到bootloader下面来引用和修改。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

18
 
270是有nand的。

使用注册表自动格式化FAT分区是可行的。

如果想在eboot弄就照着shuiyan牛人的方法做了。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

19
 
270是有nand的。

使用注册表自动格式化FAT分区是可行的。

如果想在eboot弄就照着shuiyan牛人的方法做了。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

20
 
引用 18 楼 gooogleman 的回复:
270是有nand的。

使用注册表自动格式化FAT分区是可行的。

如果想在eboot弄就照着shuiyan牛人的方法做了。

270是有nand的.
这话是什么意思呢?

现在用在270上面最多的是M-System也就是现在的Sandisk的芯片,它是纯nand吗?
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表