winhex解析FAT32存储格式理解MBR--Apple的学习笔记

前言:
Buildroot自制文件系统sd卡启动成功--Apple的学习笔记中卡我时间最长的就是sd卡无法启动。最后的原因是我没有通过cfdisk设置它可启动。而根本原因就是我对sd卡或者说存储卡及fat等文件格式等缺少相关知识。所以我要知其所以然。来一个系统性的学习进阶。

哪里跌倒就从哪里爬起来

我用cfdisk设置了可启动,那么我如何通过工具分析sd相关bit被我设置过了呢?
于是网上先搜索了可启动标注为0x80,被设置在sd卡的MRB的512个字节区域内。找到了一个不错的介绍,可以清晰的知道MBR的格式及其作用。https://blog.csdn.net/li_wen01/article/details/79929730

image.png

实践出真知

我用winhex看了我做的sd卡启动盘,主要关注512字节的后面的DBP(硬盘分区表)在位置0x1BE的值为0x80说明我设置它为可引导。了解到这里我也明白为什么常说主分区只能是4个,是它的格式限制了。


image.png

问题1:MBR的前446字节是干嘛的?

MBR(masterboot record),即主引导记录,有时也称主引导扇区。位于整个硬盘的0 柱面0 磁头1 扇区(可以看作是硬盘的第一个扇区),bios在执行自己固有的程序以后就会jump到mbr中的第一条指令,将系统的控制权交由mbr来执行。参考https://blog.csdn.net/housecarl/article/details/89329860
MBR的作用可以描述为
1.扫描分区表查找活动分区
2.寻找活动分区的起始扇区
3.将活动分区的引导扇区读到内存
4.执行引导扇区的运行代码
看到这里重要明白设置可引导后,它会起作用的原因是会自动运行代码了。但是为什么会运行MLO而不是其它文件呢?难道MBR的固定设置吗?

问题2:扇区,磁头,柱面如何理解?

我能理解扇区和柱面(磁道),磁头是什么意思?后来才发现原来硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。
那么就能理解磁头的概念的,等于一层层房间。它是立体的,而不是只有1面。所以主引导扇区就是磁头0,柱面0,扇区1里面的512字节。
扩展知识
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数。
扇区、块/簇、page的关系
扇区: 硬盘的最小读写单元
块/簇: 是操作系统针对硬盘读写的最小单元
page: 是内存与操作系统之间操作的最小单元。
扇区 <= 块/簇 <= page

问题3:逻辑扇区和物理扇区是什么关系?

winhex我一开始不知道打开的是逻辑驱动器,导致没有找到0x80。后来通过工具->打开磁盘->物理驱动器选择后才能看到0x80。网上搜索了下说我们平时使用操作系统的是逻辑扇区,由逻辑扇区会找到映射的物理扇区。所以检测到物理扇区坏的情况下,逻辑扇区可以重新映射到好的物理扇区进行绑定。LBA的绑定关系如下

image

问题4:FAT32MBR(Main Boot Record)已了解,那么FAT32文件系统DBR(DOS Boot Record)的格式是如何的呢?

DOS引导记录,为操作系统进入文件系统以后可以访问的第一个扇区,通常用来解释文件系统,DBR是由硬盘的MBR装载的程序段。DBR装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区才会被MBR装的DBR入内存运行。格式就参考上面的blog链接。

问题4:SD、TF、MMC以及eMMC的区别

这是半导体快闪记忆器器件,和FAT32存储格式是2个概念。这4个卡的工艺不同,价格不同,读写数据的速度不同。现在ufs是eMMC的下一代产品,读写速度非常快。ufs是全双工的,而且是差分双线,所以传输速度为eMMC要快很多,信号干扰小则带宽可以放大。

问题5:SD卡的操作模式

SD卡的操作模式:SD卡模式(SDIO)、SPI模式(默认为SD模式)。
其中SD卡模式的信号线有:CLK、CMD、DAT0-DAT3,6根线。
SPI模式的信号线有:CS、CLK、MISO(DATAOUT)、MOSI(DATAIN),4根线。
SD卡运行在25MHz的时钟频率上,数据带宽是4位,因此最大传输速率是12.5MB/s(12.5兆字节每秒)。
具体参考https://blog.csdn.net/silent123go/article/details/52643461

你可能感兴趣的:(winhex解析FAT32存储格式理解MBR--Apple的学习笔记)