阅读:1310回复:4
ce下DBR中的内容是在什么时候写入的?是谁负责写入的?
一般ce系统的nandflash中的内容按如下顺序排列:
nboot,eboot,MBR(包括分区表,一般为两个分区,binfs&fat32),binfs(即存放操作系统的nk.nb0的区域),DBR+FAT+DIR+数据区 我想问的是DBR中的内容是在什么时候写入的?是谁负责写入的? 多谢大家了! |
|
沙发#
发布于:2007-01-14 20:10
在格式化的时候写入的,eboot负责完成
|
|
板凳#
发布于: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网友的结论。所以希望给别人回答问题的时候要准确,不要增加困扰。 |
|
地板#
发布于:2007-01-15 22:33
赞成
|
|
地下室#
发布于:2007-01-16 08:41
呵呵,多谢zhengshijie,多谢各位大侠啊!
关于fal.lib,能不能自己来写一个lib,实现fal.lib的功能呢? |
|