请选择 进入手机版 | 继续访问电脑版

安富莱电子论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2883|回复: 7
收起左侧

[FatFs] 在SPI-FLASH上建立文件系统

[复制链接]

3

主题

13

帖子

3

积分

新手上路

积分
3
发表于 2016-12-20 19:08:05 | 显示全部楼层 |阅读模式
SPI-FLASH有16M,我的想法是前面的8M使用文件系统来访问,后面的8M当作字库。字库是给EMWIN使用的。各位前辈,不知道这样做可不可以
回复

使用道具 举报

5893

主题

3万

帖子

4万

积分

管理员

健健康康的活着

Rank: 9Rank: 9Rank: 9

积分
47307
QQ
发表于 2016-12-21 08:14:37 | 显示全部楼层
可以这样做,没问题的。
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

3

主题

13

帖子

3

积分

新手上路

积分
3
 楼主| 发表于 2016-12-21 08:54:32 | 显示全部楼层
那用文件系统的时候如何保证后面8M的内容不被覆盖掉呢
回复

使用道具 举报

5893

主题

3万

帖子

4万

积分

管理员

健健康康的活着

Rank: 9Rank: 9Rank: 9

积分
47307
QQ
发表于 2016-12-21 10:11:13 | 显示全部楼层

回 小小鱼 的帖子

小小鱼:
那用文件系统的时候如何保证后面8M的内容不被覆盖掉呢

设置这里:
http://forum.armfly.com/forum.php?mod=viewthread&tid=14894

11111111.png


淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

3

主题

13

帖子

3

积分

新手上路

积分
3
 楼主| 发表于 2016-12-21 14:55:04 | 显示全部楼层
谢谢,回去看看。
回复

使用道具 举报

3

主题

13

帖子

3

积分

新手上路

积分
3
 楼主| 发表于 2016-12-23 08:54:14 | 显示全部楼层
  1. if (_MULTI_PARTITION && part) {
  2.         /* Get partition information from partition table in the MBR */
  3.         if (disk_read(pdrv, fs->win, 0, 1) != RES_OK) return FR_DISK_ERR;
  4.         if (ld_word(fs->win + BS_55AA) != 0xAA55) return FR_MKFS_ABORTED;
  5.         tbl = &fs->win[MBR_Table + (part - 1) * SZ_PTE];
  6.         if (!tbl[4]) return FR_MKFS_ABORTED;    /* No partition? */
  7.         b_vol = ld_dword(tbl + 8);    /* Volume start sector */
  8.         n_vol = ld_dword(tbl + 12);    /* Volume size */
  9.     } else {
  10.         /* Create a single-partition in this function */
  11.         if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &n_vol) != RES_OK || n_vol < 128) {       //--wj  128个扇区
  12.             return FR_DISK_ERR;
  13.         }
  14.         b_vol = (sfd) ? 0 : 63;        /* Volume start sector */
  15.         n_vol -= b_vol;                /* Volume size */
  16.     }
  17.    
  18.    
  19.         st_word(tbl + BS_55AA, 0xAA55);            /* Signature (Offset is fixed here regardless of sector size) */
复制代码
我想要在铁电上使用文件系统,一直挂载不上去。铁电的大小为8K
FAFTS文件系统对存储介质的容量是否有要求,从上面的代码可以看出建立文件系统至少要在存储介质上建立128个扇区,而每个扇区至少512字节(因为挂载文件系统会一次性读取512个字节的数据,然后判断511,512个字节是否为0X55,0XAA)..因此设置扇区大小小于512字节时,就会导致文件系统挂载失败。所以我觉得存储介质的大小至少未128*512 = 64K 字节。
我的想法对不对啊,还有我不太明白disk_ioctl()函数中GET_BLOCK_SIZE的作用,他是用来干什么的
回复

使用道具 举报

3

主题

40

帖子

46

积分

新手上路

积分
46
发表于 2019-1-25 10:50:47 | 显示全部楼层
小小鱼 发表于 2016-12-23 08:54
我想要在铁电上使用文件系统,一直挂载不上去。铁电的大小为8K
FAFTS文件系统对存储介质的容量是否有要求, ...

你还,我碰到了和你一样的问题:
fatfs对存储器容量是否有限制?我用512k的片上flash移植fatfs成功,但是用128k的片上flash移植失败,看了下源码,发现f_mkfs()里面有个判断可用扇区的数目,如果小于128个,就报错。
回复

使用道具 举报

0

主题

2

帖子

2

积分

新手上路

积分
2
发表于 2019-4-21 11:08:57 | 显示全部楼层
推荐ARM的littleFS,SPI,MCU内部FLASH,NOR和NAND都可以用,https://github.com/ARMmbed/littlefs
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|安富莱电子论坛 ( 鄂ICP备09023347号,公安机关备案号42010602000201 )

GMT+8, 2019-7-20 00:37 , Processed in 0.191590 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表