我正在使用Mbed-os从Micro SD卡读取数据。但是,当我使用GParted(msdos MBR,32MB fat16分区)格式化磁盘时,SD卡未使用本机Mbed库安装-mount()
返回-22(EINVAL:无效参数)。查看FATFileSystem.cpp的源代码,它可能是由多种因素引起的,包括:无效的路径名(第51行),没有有效的FAT文件系统(第65行)或ID不为-1(第331行) )。我不知道这些条件到底意味着什么。
但是,当我使用Mbed格式化SD卡时,它可以正常工作,并且可以很好地安装在计算机上。
要将驱动器安装到Mbed中,我使用的是这段代码,这些代码是从mbed documentation砍死的:
SDBlockDevice sd(
D11,
D12,
D13,
D10
);
MBRBlockDevice part1(&sd, 1);
//ReadOnlyBlockDevice robd(&part1);
FATFileSystem fat("fat");
...
if (sd.init() != 0) {
printf("sd did not initialize\n");
return false;
}
if (part1.init() != 0) {
printf("part1 did not initialize\n");
return false;
}
printf("fat mount: %d\n", fat.mount(&part1)); // fat.mount(...) returns -22 when I format the disk using gparted
return true;
这是我用来格式化磁盘的代码:
void format_disk() {
printf("formatting...\n");
MBRBlockDevice::partition(&sd, 1, 0x83, 0, 1024 * 1024 * 32);
MBRBlockDevice part(&sd, 1);
FATFileSystem::format(&part);
printf("done?\n");
}
答案 0 :(得分:0)
Mbed操作系统FATFileSystem被描述为FAT32文件系统,但是您要格式化为FAT16。我不确定FAT16和FAT32是否应该兼容,但这是我的第一个猜测。