锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

根据FAT表研究MSP430内存对齐问题

时间:2024-04-14 17:07:09

这两天仔细研究了下FAT32,发现里面涉及到了一个大端、小端对齐有点意思,这里也简单总结一下。先在这里说明一下,M430是小端对齐的,还有FAT32文件系统中存放字段的顺序也是小端模式,所以用MSP430来实现FAT32文件系统的话,读取数据的时候不需要做特殊处理~

下面简单讲一下大端对齐和小端对齐。

我们知道,我们定义变量的时候,在内存中会给该变量分配一个位置,如果该变量是一个char型的变量,那么只会分配给它一个字节的位置,但是如果该变量int型或者long int型呢?这里以16位的C编译器编译结果来看的话,int型占2个字节,long int型占4个字节,那具体是如何分配呢?我们以0x12345678这个4字节数据为例。

如果在内存中,按地址从低往高,存储是4个字节的数据依次是0x78,0x56,0x34,0x12的话,则为小端存储,如下图所示;

如果在内存中,按地址从低往高,存储的4个字节的数据依次是0x12,0x34,0x56,0x78的话,则为大端存储如下图所示;

不同的,对齐方式不同,所以如果我们在移植程序时,涉及到这种多个字节拼凑成多个字节的数据出问题时,可以考虑是否是内存对齐方式的问题。

FAT表一般有两张,两张表紧挨着,内容完全一样,第二张是起备份作用。

FAT表中的编号是从0开始,下面依次是第1簇,第2簇……

其中第0簇和第1簇是存放的FAT表本身,文献里没有看到这种说法,文献里只所数据簇是从第2簇开始,但是这样理解应该也可以;

第2簇是首目录簇,存放的是文件的文件名、文件格式、文件大小、起始位置等信息;

真正的数据簇是从第3簇开始的。所以如果以及FAT32文件系统为例,将SD卡格式化之后,存入一个文件,会发现其FAT表的第一个扇区的数据如下图所示。红线处为第一个存放数据的簇,为第3簇,是紧跟在首目录簇后面的那一簇。




-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章