FATFS 中diskio.c文件中,FLASH_SECTOR_COUNT的定义疑问

2019-10-15 22:16发布

本帖最后由 qiuyutears 于 2016-1-6 19:58 编辑

//对于W25Q64
//前4.8M字节给fatfs用,4.8M字节后~4.8M+100K给用户用,4.9M以后,用于存放字库,字库占用3.09M.                                             
u16            FLASH_SECTOR_COUNT= 9832;        //4.8M字节,默认为W25Q64
#define FLASH_BLOCK_SIZE           8             //每个BLOCK有8个扇区

以上是diskio.c文件开头,我有个疑问:
FLASH_SECTOR_COUNT定义成了9832扇区.(每扇区512字节,2个扇区1024为1K)我计算了一下,9832扇区的容量 = 4916K = 4.916M字节。而4.8M的扇区数,则应该是9600个扇区。


多分配的232个扇区(116K),是不是被FATFS系统分配的?

4.8M后的100K给用户用    100K那就是有200个扇区给用户用。加上前面的9832个扇区,一共是10032个扇区。5016K一共被前面分配了。还剩下8*1024K-5016K = 3176K字节。

不知道我上面的说明是不是正确。因为看这个注释,实在是看的有点蒙。

望知情人解答!



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
openedvadmin
1楼-- · 2019-10-16 01:30
怎么会是9600哦。。。

一个sector是512个字节,也就是0.5 kbytes.
那么4.8M是多少 kbyte呢,,不是4800,是4.8*1024。。。所以很明显你的错误了。。。
那么mini的怎么来的呢?
u16            FLASH_SECTOR_COUNT= 9832;
#define FLASH_SECTOR_SIZE         512       
所以多少兆是这样算的 9832*512/(1024*1024)=4.800M

实际上,很简单,4.8M是多少个Sector?  4.8*1024*1024/512=9830.2 ,所以选取9830大点的9832
龙之谷
2楼-- · 2019-10-16 03:22
本帖最后由 龙之谷 于 2016-1-6 18:11 编辑

你的计算9832*512/1024 = 4916K = 4.916M字节。前边知道要除1024,后边直接4916K=1.916M了。
再向下看蒙了,计算单位来回倒腾,就不说了


openedvadmin
3楼-- · 2019-10-16 06:20
看晕了你的计算方法。。。

#define FLASH_SECTOR_SIZE         512                          
//前12M字节给fatfs用,12M字节后,用于存放字库,字库占用3.09M.        剩余部分,给客户自己用                                    
u16            FLASH_SECTOR_COUNT=2048*12;        //W25Q1218,前12M字节给FATFS占用

看看我们的定义吧。。。每个Sector 512个字节,一共分配2048*12个Sector。所以 FLASH_SECTOR_COUNT=2048*12;的意思是分配2048*12*512 byte= 12M。
qiuyutears
4楼-- · 2019-10-16 09:12
 精彩回答 2  元偷偷看……
qiuyutears
5楼-- · 2019-10-16 15:00
openedvadmin 发表于 2016-1-6 18:46
看晕了你的计算方法。。。

#define FLASH_SECTOR_SIZE         512                          

4.8M字节,扇区数是9600.
例程中定义是9832.所以,我就是这里不理解。多出来232个扇区。
100K占用200个字节。
即使是9600+200,也还有32个扇区,不知道是如何分配的,
或者说例程上的注释错误,本应该是分配了FATFS的扇区数是9832个,
占用地址一共是4.8M(9600扇区)+100K(200扇区)+16K(32扇区) = 4.916M
4.916M字节分给了FATFS使用。
8M-4.916M = 3.084M给字库用。而字库却是需要3.09M。好像这样的分配,也不够。
qiuyutears
6楼-- · 2019-10-16 16:34
openedvadmin 发表于 2016-1-6 16:50
怎么会是9600哦。。。

一个sector是512个字节,也就是0.5 kbytes.

那后面,又空出了100K给用户使用。最后才是3.09M的字库空间。我这样理解对吧?
非常感谢。

一周热门 更多>