lljj462
驱动牛犊
驱动牛犊
  • 注册日期2005-08-08
  • 最后登录2008-08-06
  • 粉丝0
  • 关注0
  • 积分576分
  • 威望83点
  • 贡献值0点
  • 好评度79点
  • 原创分0分
  • 专家分0分
阅读:1254回复:4

ce下DBR中的内容是在什么时候写入的?是谁负责写入的?

楼主#
更多 发布于:2007-01-12 16:54
  一般ce系统的nandflash中的内容按如下顺序排列:
  nboot,eboot,MBR(包括分区表,一般为两个分区,binfs&fat32),binfs(即存放操作系统的nk.nb0的区域),DBR+FAT+DIR+数据区

我想问的是DBR中的内容是在什么时候写入的?是谁负责写入的?

多谢大家了!
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-01-14 20:10
在格式化的时候写入的,eboot负责完成
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
板凳#
发布于:2007-01-15 11:33
wenzai网友说得不大对。
格式化时写入是正确的,但不是eboot负责完成。eboot只是写入了MBR,没有写DBR,和BPB等信息。是CE系统运行起来的时候,我们知道编译fmd驱动的时候,会连接一个fal.lib库,而该库就是文件系统抽象层,看不到源码,我们可以看smflash.map知道它里面有那些函数,系统在起来的时候,filesys.exe会加载smflash.dll,调用DSK_Init()->FMD_Init(),会调FMD_GetInfo得到FLASH芯片信息,然后会去mount文件系统,首先从头开始找,第一个非坏块,因为我们知道我们的eboot,要把nboot,eboot的存储空间保留成坏块,这样是防止系统运行起来的把它们给格式化了,第一个非坏块的第一个sector就是存储MBR的信息。它里面有PARTENTRY的信息,得到这个再跟据注册表里的指定的mount文件系统,如果是FATFS,并且在FAT分区中没有找到有效的DBR,BPB信息sector之后,会调用fatutil.dll中的格式化功能进行格式化,这时才真正写入DBR,BPB等信息。因为fal.lib没有源文件,所以很多进一步的信息大家得不到,但是eboot的代码是可以全看到的,不可能从中得到wenzai网友的结论。所以希望给别人回答问题的时候要准确,不要增加困扰。
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-01-15 22:33
赞成
lljj462
驱动牛犊
驱动牛犊
  • 注册日期2005-08-08
  • 最后登录2008-08-06
  • 粉丝0
  • 关注0
  • 积分576分
  • 威望83点
  • 贡献值0点
  • 好评度79点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-01-16 08:41
呵呵,多谢zhengshijie,多谢各位大侠啊!
关于fal.lib,能不能自己来写一个lib,实现fal.lib的功能呢?
游客

返回顶部