Перейти к содержанию
    

Как детектировать FAT

Коллеги!

Есть микросхема W25Qxxx, есть МК.

Вопрос: как МК определить, что на микросхеме уже существует какая-то из разновидностей FAT? То же самое и с SD-card. Работа идёт через библиотеку FATFS. Что-где прочитать, чтобы точно знать, что FAT там уже есть и вызывать f_mkfs() не_нужно.

Изменено пользователем tonyk_av

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, tonyk_av said:

Вопрос: как МК определить, что на микросхеме уже существует какая-то из разновидностей FAT?

Прочитать самый первый сектор, если BOOT сектор находится именно там.

25 minutes ago, tonyk_av said:

Что-где прочитать, чтобы точно знать, что FAT там уже есть и вызывать f_mkfs() не_нужно.

я вот так делал в одном из проектов (под Keil MDK):

#include <rl_fs.h>

constexpr auto driveName = "R0:"; 	// External SPI Flash 25Qxxx	
constexpr auto settingsFileName = "settings.json";

auto result = finit(driveName);
result = fmount(driveName);

if (result == fsNoFileSystem)
{
	result = fformat(driveName, "");
	FILE * file = fopen(settingsFileName, "w");
	if (file != NULL)
	{
		fprintf(file, settingsFileDefault);
		fclose(file);
		funmount(driveName);
		funinit(driveName);
		NVIC_SystemReset();
	}
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, Forger said:
result = fmount(driveName);

То есть просто попытаться смонтировать, и если получилось, то файловая система там есть. Я правильно понял?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, tonyk_av сказал:

Я правильно понял?

да, но могут быть нюансы.  скорее, если вы попытались смонтировать и получили FR_NO_FILESYSTEM, то файловой системы там точно нет 

 

Изменено пользователем tgruzd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, tonyk_av said:

То есть просто попытаться смонтировать, и если получилось, то файловая система там есть. Я правильно понял?

Не использую fatfs, не знаю как там, поэтому лучше см. описание подобных функций в документации на нее. Возможно, там сделано аналогично.

В вашем случае бут сектор может находится не в самом первом секторе микросхемы, там может находится нестандартная файловая система, да и вообще там может быть угодно.

Попытка отформатировать такую память приведет к потере того, что там было до этого!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...