硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1539|回复: 5
收起左侧

[FileX] 用Filex格式化u盘后,电脑识别u盘容量为0

[复制链接]

3

主题

12

回帖

21

积分

新手上路

积分
21
发表于 2024-12-5 16:52:33 | 显示全部楼层 |阅读模式
本帖最后由 alulu 于 2024-12-5 16:58 编辑

求助大佬,我在移植fileX文件系统到u盘时,发现个现象,

1. 用windows 格式化u盘为FAT32格式
   -- 在板子上能正常读写文件;

   -- 板子上写入文件后,插回windows也能正常识别文件和u盘;

2. 用Filex的 fx_media_exFAT_format 格式化u盘后,
   -- 只能用板子读写文件;
   -- 将u盘插回windows后,识别u盘大小为0, 但是用diskGenius,可以读出写入的文件;

请教下,这个问题出在哪里?是MBR,还是哪里出了问题?

我的格式化参数是这样子的:
        
[C] 纯文本查看 复制代码
	RetVal = fx_media_exFAT_format(&s_Media,[/align]			                       udisk_driver_entry,     /**< Driver entry */
			                       s_UdiskInfo,        	   /**< Udisk info */
			                       (unsigned char *)s_MediaMemory,          /**< Media buffer pointer */
			                       sizeof(s_MediaMemory),  /**< Media buffer size */
			                       "udisk",          	   /**< Volume Name */
			                       1,                      /**< Number of FATs */
			                       0,                      /**< Hidden sectors */
			                       s_Media.fx_media_total_sectors,          /**< Total sectors */
			                       s_Media.fx_media_bytes_per_sector,       /**< Sector size */
			                       256,                    /**< exFAT Sectors per cluster */
			                       11111,                  /**< Volume ID */
			                       1);                     /**< Boundary unit */


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-5 17:39:15 | 显示全部楼层
使用这个函数正常不

2345.png
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2024-12-5 18:39:01 | 显示全部楼层
eric2013 发表于 2024-12-5 17:39
使用这个函数正常不

用这个fx_media_format是可以的,难道是extend format有问题?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-6 09:09:04 | 显示全部楼层
alulu 发表于 2024-12-5 18:39
用这个fx_media_format是可以的,难道是extend format有问题?

超过32G采用exFAT,然后就是你的程序里面也需要使能exFAT标志
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2024-12-6 10:54:59 | 显示全部楼层
eric2013 发表于 2024-12-6 09:09
超过32G采用exFAT,然后就是你的程序里面也需要使能exFAT标志

感谢硬汉哥,我昨天查了下原因如下:
1. 我用的u盘,通过mbr看起来,又两个FAT分区,不是一个;
2. 格式化u盘的时候,用的参数是从mbr读出来的参数,而格式化函数,没有把mbr写到原来的mbr区域,而是写到了sector0;(这个地方还得想想怎么兼容多个分区的u盘,可能驱动要改)
3.第二次格式化,用的从usb驱动读出的u盘参数,这和mbr的参数是有区别的;

所以,在纠正了上面的错误之后,再用extendFormat,u盘可以在windows上识别出来,而且打开容错模块也不影响与windows兼容。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-7 09:54:08 | 显示全部楼层
alulu 发表于 2024-12-6 10:54
感谢硬汉哥,我昨天查了下原因如下:
1. 我用的u盘,通过mbr看起来,又两个FAT分区,不是一个;
2. 格 ...

谢谢分享。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 03:39 , Processed in 0.053375 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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