Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
elm_fatfs_FAT文件系统
spi_flash
一个 SPI FLASH 分区挂载多个文件系统
发布于 2022-03-31 17:26:19 浏览:1939
订阅该版
问题:想在单个 SPI-FLASH 上分成多个区,其中包含 log_part 和 download 分区,这两个分期都想使用文件系统(fatfs),也就是挂载两个文件系统,这样可以对其中的任一个文件系统单独进行格式化的操作,而不影响另一个文件系统的操作。在测试时发现可以成功挂载两个文件系统,其中 download 分区挂载在 "/" 目录下,log_part 分区挂载在 "/log_part" 目录下,但是格式化的时候只能成功格式化 download 分区,试图格式化log_part 分区时一直提示失败。日志提示信息如下: 疑问: 1. 可以像电脑一样把每个分区单独挂载吗?而不是像一个必须挂载在 "/" 下,另一个需要挂载在 "/" 目录下的一个文件夹下。 2. 为什么格式化 log_part 分区不成功呢? ``` \ | / - RT - Thread Operating System / | \ 4.0.4 build Mar 31 2022 16:55:29 2006 - 2021 Copyright by rt-thread team Cannot find a RTC device to provide time! I/drv.rtc: RTC hasn't been configured, please use
command to config. [D/FAL] (fal_flash_init:63) Flash device | W25Q16 | addr: 0x00000000 | len: 0x00200000 | blk_size: 0x00001000 |initialized finish. [I/FAL] ==================== FAL partition table ==================== [I/FAL] | name | flash_dev | offset | length | [I/FAL] ------------------------------------------------------------- [I/FAL] | easyflash | W25Q16 | 0x00000000 | 0x00040000 | [I/FAL] | log_part | W25Q16 | 0x00040000 | 0x00040000 | [I/FAL] | download | W25Q16 | 0x00080000 | 0x00180000 | [I/FAL] ============================================================= [I/FAL] RT-Thread Flash Abstraction Layer (V0.5.0) initialize success. [I/FAL] The FAL block device (log_part) created successfully [I/FAL] The FAL block device (download) created successfully 01-01 01:24:00 I/SFUD: Find a Winbond flash chip. Size is 2097152 bytes. 01-01 01:24:00 I/SFUD: W25Q16 flash device is initialize success. 01-01 01:24:00 I/SFUD: Probe SPI flash W25Q16 by SPI device spi20 success. 01-01 01:24:00 I/SFUD: rt sfud flash probe success 01-01 01:24:00 I/SFUD: Create a block device on the log_part partition of flash successful. // 创建 log_part 块设备成功 01-01 01:24:00 I/SFUD: Create a block device on the download partition of flash successful. // 创建 download 块设备成功 01-01 01:24:00 I/SFUD: elmfat download mount success. // 挂载 download 分区成功 [Flash] (../packages/EasyFlash-v4.1.0/src/ef_env.c:1818) ENV start address is 0x00000000, size is 8192 bytes. [Flash] EasyFlash V4.1.0 is initialize success. // easyfalsh 初始化成功 [Flash] You can get the latest version on https://github.com/armink/EasyFlash . 01-01 01:24:00 I/SFUD: elmfat log_part mount success. // 挂载 log_part 分区成功 ... ... msh /> msh />ls Directory /: log_part
// 在根目录下可以看到 log_part 分区 msh /> msh />ls log_part // 查看 log_part 分区中的内容 Directory log_part: logs
msh /> msh /> msh />list_device device type ref count ---------------- -------------------- ---------- spi40 SPI Device 0 spi30 SPI Device 0 download Block Device 1 // 可以看到 download 块设备 log_part Block Device 1 // 可以看到 log_part 块设备 W25Q16 Block Device 0 spi20 SPI Device 0 rtc RTC 0 wdt Security Device 0 spi4 SPI Bus 0 spi3 SPI Bus 0 spi2 SPI Bus 0 uart6 Character Device 1 uart5 Character Device 1 uart4 Character Device 1 uart3 Character Device 1 uart2 Character Device 1 uart1 Character Device 2 pin Miscellaneous Device 0 msh /> msh /> msh />mkfs log_part // 格式化 log_part 分区显示失败 format error, result=14 mkfs failed, result=-22 msh /> msh /> msh />ls Directory /: log_part
// 格式化失败后在根目录下还可以看到 log_part 分区 msh /> msh />mkfs download // 格式化 download 分区 msh />ls Directory /: // 格式化 download 分区后根目录下看不到任何任何,未挂载 log_part 分区 ```
查看更多
1
个回答
默认排序
按发布时间排序
crystal266
2022-04-01
嵌入式
自问自答记录一下:fatfs 定义时每个文件系统最少占用 128 个扇区,对于 W25Q128 来说每个扇区的大小是 4096 个字节,所以设置时至少要占用 512KBytes 的空间,将log_part 的空间设置为 512KBytes 就可以了,就能够格式化成功了。128 个扇区的限制是在这里的代码进行限制的,所以返回的错误码为14,是宏 `FR_MKFS_ABORTED` 的值。 ```c /* rt-thread/components/dfs/filesystems/elmfat/ff.c */ FRESULT f_mkfs ( const TCHAR* path, /* Logical drive number */ const MKFS_PARM* opt, /* Format options */ void* work, /* Pointer to working buffer (null: use heap memory) */ UINT len /* Size of working buffer [byte] */ ) { ... ... // 省略 if { ... ... // 省略 } else { /* The volume is associated with a physical drive */ if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_vol) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); if (!(fsopt & FM_SFD)) { /* To be partitioned? */ /* Create a single-partition on the drive in this function */ #if FF_LBA64 if (sz_vol >= FF_MIN_GPT) { /* Which partition type to create, MBR or GPT? */ fsopt |= 0x80; /* Partitioning is in GPT */ b_vol = GPT_ALIGN / ss; sz_vol -= b_vol + GPT_ITEMS * SZ_GPTE / ss + 1; /* Estimated partition offset and size */ } else #endif { /* Partitioning is in MBR */ if (sz_vol > N_SEC_TRACK) { b_vol = N_SEC_TRACK; sz_vol -= b_vol; /* Estimated partition offset and size */ } } } } if (sz_vol < 128) LEAVE_MKFS(FR_MKFS_ABORTED); /* Check if volume size is >=128s */ ... ... // 省略 } ```
撰写答案
登录
注册新账号
关注者
0
被浏览
1.9k
关于作者
crystal266
嵌入式
提问
33
回答
547
被采纳
161
关注TA
发私信
相关问题
1
请问谁有用过elm fatfs挂在 nand flash 的经验
2
STM32F413 SD 卡写入速度提升方法
3
W25Q128spi flash的elm挂载失败
4
为什么在DFS中管FATFS叫elm-fat文件系统?
5
W25Q128创建的ELM文件系统掉电丢失
6
初始化elm文件系统时报错空间不足,挂载片外flash文件系统时失败。
7
W25QXX挂载elm文件系统的分区小于512KB时你们成功了吗
8
dfs上打开文件 open 操作返回 -19
9
在rt-rthread v4.0.1版本中,读sd卡或u盘崩溃问题
10
elmfat写数据长度大于512字节,系统hard fault
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
16
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部