博文

目前显示的是 九月, 2010的博文

认识FAT32

图片
版权所有,禁止转载。 FAT32 文件系统是一个比较重要的文件系统,并且,设计思路比较简单。在 windows 操作系统,以及嵌入式平台上有广泛的用途。对于一个没有安装操作系统的普通 FAT32 分区的磁盘,主要的结构有: DBR , FAT 表,备份 FAT 表,以及数据区。注意与 FAT16 和 FAT12 区分, FAT32 是没有单独的根目录区的,因为单独的根目录区,对根目录下面的文件数量是有限制的。对于一个划分了 FAT32 分区的磁盘来说,在 DBR 里面包含有重要的磁盘分区信息。操作系统读取磁盘的时候,按照 DBR 和 FAT 表来读取和寻找文件的。 在 DBR 中,最重要的数据结构是 BPB 块, BPB 表里面包含了很多有用的信息。 Q : BPB 表保存在哪里? A :保存在 DBR 区中,而 DBR 区,在 FAT32 格式的磁盘分区中一般位于 0 磁头 1 柱面 1 扇区的位置。 0 磁头 0 柱面留给 MBR 以及保留扇区。如果没有安装操作系统,那么就在 0 磁头 0 柱面上第 1 个扇区。本文的实验没有安装操作系统的 SDCARD 。 知道了 BPB 保存在哪里后,要掌握 FAT32 分区情况,就需要知道一些关键的信息: 1 。 DBR 后面有多少的保留扇区? 2 。 FAT 表保存在哪里? 3 。一个 FAT 占多少扇区? 4 。在 FAT32 里面已经没有了根目录区的概念了,那么根目录在哪个扇区? 了解了这些以后,我们就能够大概跟踪到各个文件了。 DBR 截图 对照以上截图,以及 FAT 手册,我们就可以回答上面的这几个问题。 Q : DBR 后面有多少保留扇区? A : 0X0E 2 个字节。 0020 个扇区,也就是加上 DBR 一共 32 个扇区 Q : FAT 表保存在哪里? A :第一个柱面 DBR +保留扇区之后。第 32 个扇区之后,保存着 FAT 表 Q : 1 个 FAT 表占用多少扇区? A : 0X24 4 个字节。 01fc 个扇区 Q :根目录在哪个扇区? A :位于的簇号记录于 DBR 0X2C 4 个字节。不过,一般是在 FAT 表之后 DBR + 2 * FAT 表扇区之后。 0X0002 扇区 Q : FAT 表是以簇为单位来管理的,一个簇有多少扇区? A : DBR 里面偏移 0x0D 一个字

用git管理源码

git管理源码,好处自不必说。学习git参考的是《pro git》。 该书的豆瓣链接:http://book.douban.com/subject/3420144/ 关于文件的修改: 如果,自己想添加新的文件。最好是,自己建立一个分支: git branch new-branch    //建立新的分支 git checkout new-branch //切换到新的分支下工作 这时候,可以添加或者修改文件。 注意,这个时候,该分支下新添加的文件与master分支是没有一点关系的。 另外,说一下git revert ,git reset --hard和 --soft的区别 git reset --mixed id ,是将git的HEAD变了(也就是提交记录变了),但文件并没有改变,(也就是working tree并没有改变)。 git reset --soft id. 实际上,是git reset --mixed id 后,又做了一次git add git reset --herd id.是将git的HEAD变了,文件也变了。 git revert与git reset最大的不同是,git revert 仅仅是撤销 某次 提交。 比如git revert HEAD~1  ,那么会撤销倒数第二次的提交结果。而倒数第一次的提交记录,仍然在。 如果git reset --hard HEAD~1,那么,commit退回到倒数第三次的状态中。 总体来讲,还是git revert 好啊,雁过留声嘛。 其实,通过git reset --soft id的方法,可以将原来多次的git提交记录合并为一个。 两个分支的合并:(分支也就是版本的意思) git pull . 分支1,  将分支1的变化提交到分支2。 在分支合并部分,不要用git merge 和 git push。容易出错。 另外,还有一种分支合并的方法是rebase。这种方法,更符合思维。 git checkout A1 git rebase master 过程是,找到将A1和master的共同commit点。A1 把自分叉以来的所有补丁都达到master上。相当于: git checkout master git pull . A1 ----or---- git checkout master git merge A1 关于查