реклама на сайте
подробности

 
 
> Fatfs и битые сектора, Как помечаются сбойные сектора в этой ФС?
Nikitoc
сообщение Nov 3 2010, 20:37
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Доброго времени суток. Собственно вопрос в теме. Никак не могу понять каким образом данная ФС помечает сбойные сектора? О том, что они маскируются вначале контроллером SD-карты рассказывали aaarrr и zltigo. Но когда запас на замену истощается эти сектора вылазят наружу и становятся головной болью ФС. В исходниках FatFs встречается, например такая запись (внутри функции f_write):
Код
if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
    ABORT(fp->fs, FR_DISK_ERR);

где:
Код
#define LEAVE_FF(fs, res)    return res
#define    ABORT(fs, res)        { fp->flag |= FA__ERROR; LEAVE_FF(fs, res); }

Я так понимаю, что в случае неудачной записи, в структуре данного объекта FIL выставляется флаг FA_ERROR. И функция f_write возвращает FR_DISK_ERR. А дальше тупик. Объясните, пожалуйста, как будет вести себя FatFs при попытке повторной записи по данному адресу? Отмечается ли данный сектор как сбойный в FAT?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Nixon
сообщение Nov 4 2010, 09:41
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



Непонятно с чего вы решили, что проблемой сбойных секторов должна заниматься файловая система. Максимум что она должна делать, так это информировать пользователя об ошибках чтения/записи. И все. Для всего остального пишите аналог утилиты chkdsk или чего-то подобного.


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Nov 4 2010, 10:16
Сообщение #3


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата(Nixon @ Nov 4 2010, 13:41) *
Непонятно с чего вы решили, что проблемой сбойных секторов должна заниматься файловая система.

Ну, собственно на эту мысль меня навела спецификация FAT32. По крайней мере эта вот цитата:
Цитата
There is also a special “BAD CLUSTER” mark. Any cluster that contains the “BAD CLUSTER” value in its FAT entry is a cluster that should not be placed on the free list because it is prone to disk errors. The “BAD CLUSTER” value is 0x0FF7 for FAT12, 0xFFF7 for FAT16, and 0x0FFFFFF7 for FAT32.

Я так подозреваю, должны быть функции файловой системы, которые эти значения записывают в таблицу. Или же это задача программиста?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Nikitoc   Fatfs и битые сектора   Nov 3 2010, 20:37
- - goodwin   Ну во-первых такую флэшку надо выбрасывать немедле...   Nov 3 2010, 21:17
|- - Nikitoc   Цитата(goodwin @ Nov 4 2010, 00:17) Правд...   Nov 3 2010, 21:59
- - Nikitoc   Мда. Немного покопавшись в исходниках я обнаружил ...   Nov 4 2010, 15:49
- - sigmaN   Да это нигде не реализовано. Вам же сказали, что с...   Nov 7 2010, 23:50
|- - _Pasha   Цитата(sigmaN @ Nov 8 2010, 03:50) Или вы...   Nov 8 2010, 07:04
|- - Nikitoc   Цитата(sigmaN @ Nov 8 2010, 03:50) Или вы...   Nov 12 2010, 22:12
- - jorikdima   У вас 100 лет прибор работать будет? Или бьете все...   Nov 12 2010, 22:38
- - Nikitoc   Танцы с бубном продолжаются. Недавно я столкнулся ...   Dec 15 2010, 19:47
- - _4afc_   Цитата(Nikitoc @ Dec 16 2010, 01:47) Танц...   Dec 16 2010, 07:24
- - Nikitoc   Цитата(_4afc_ @ Dec 16 2010, 14:24) Попод...   Dec 16 2010, 09:38
- - DL36   Сравните значение поля FSI_Free_Count (488 4) сек...   Dec 18 2010, 16:55
- - Nikitoc   Цитата(DL36 @ Dec 18 2010, 23:55) Сравнит...   Dec 19 2010, 16:06


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 05:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016