1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
看FATfs文件系统的资料中提到,FATfs支持多扇区读写,底层代码需要支持一次读写多个扇区和一次读一个扇区两种情况,但是即使底层支持多扇区读写,在实际操作的时候还是一个扇区一个扇区的写。本来以为这个源代码只需要改diskio.c里的disk_read几个函数即可。现在看来,查找所有引用发现引用disk_read和disk_write的全是指定扇区个数为 1,所以想要支持多扇区读写是不是得把 ff.c 里面引用 disk_read 和 disk_write的扇区个数改成多个扇区数 即可??
|
|
相关推荐
8个回答
|
|
|
|
|
|
谢谢发烧友。
你的意思是说 ff.c 中已经支持了多扇区读写吗? 拿diskio.c 中的disk_read来说, DRESULT disk_read ( BYTE drv, BYTE *buff, DWORD sector, BYTE count ),在ff.c里调用disk_read的时候count =1,那下面读多扇区也没用啊? 在f_read中唯一调用disk_read count值不为1的地方是: cc = btr / SS(fp->fs);/* When remaining bytes >= sector size, */ if (cc) {/* Read maximum contiguous sectors directly */ if (fp->csect + cc > fp->fs->csize)/* Clip at cluster boundary */ cc = fp->fs->csize - fp->csect; if (disk_read(fp->fs->drive, rbuff, sect, (BYTE)cc) != RES_OK) ABORT(fp->fs, FR_DISK_ERR); 可是我单步进去发现 (BYTE)cc) 还是1,虽然if (cc)处cc不为1,但是每次还是只读1个。 什么情况呢? |
|
|
|
|
|
|
|
|
|
|
|
回复【4楼】发烧友:
-------------------------------- 好吧,是这样的。 如果 ffconf.h中 #define_MAX_SS512 那么在实现读写的时候,我打印了,是8个扇区。 我之前的设置是#define_MAX_SS4096 打印的时候是1个扇区。 |
|
|
|
哦哦...
|
|
|
|
原来是因为FAT32的分区大小和簇大小有对应关系,小于8GB的分区,每个簇的空间大小为4K,所以如果单个扇区大小设置为512的话,单个簇的扇区个数为8,可以读写8个扇区;如果单个扇区大小设置为4096的话,单个簇的扇区个数为1,就是读写1个扇区了。
那 你说,如果在这种情况下我希望提高读写速度,是不是只能手动将 ff.c 里读写的count 做更改了呢? 你可以给点意见吗? |
|
|
|
建议换sdio,会比较靠谱.
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:47 , Processed in 0.868274 second(s), Total 60, Slave 54 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号