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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Разрушение FAT (в FatFs)
aaarrr
сообщение Feb 22 2016, 19:00
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Allregia @ Feb 22 2016, 21:21) *
Нашими усилиями было выяснено, что сбой происходит тогда, когда СУММАРНЫЙ обьем файлов перезодит через границу 4Гб.

Попробуйте на нижнем уровне записать сектор с адресом 4Гб, не перезапишется ли на самом деле нулевой?
Go to the top of the page
 
+Quote Post
Allregia
сообщение Feb 23 2016, 17:58
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(aaarrr @ Feb 22 2016, 20:00) *
Попробуйте на нижнем уровне записать сектор с адресом 4Гб, не перезапишется ли на самом деле нулевой?


Попробую.
Но пока все еще чудесатее - я попробовал 16гб карточку форматнуть в устройстве, средствами FatFs - она ее на 3 гига форматнула!
Я потом на компе с геморроем ее восстановил!
Сама флешка нормальная, не с али sm.gif
Да и проверил я ее, на всякий случай - записал 6 фильмов по полтора гига, все работают.
Go to the top of the page
 
+Quote Post
Alechek
сообщение Feb 25 2016, 10:12
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Проверяется флешка другими средствами : h2testw
Go to the top of the page
 
+Quote Post
khach
сообщение Feb 25 2016, 11:55
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Если на плате есть кроме карnы большая SPI флеш-память, я быписал туда весь лог вызовов FatFs ил отправлял бы лог на хост. Скорее всего где то переполнение или знаковое- беззнаковое сравнение.
А как портится содержимео фата? Вычитать WinHex порченую катрочку на физическом уровне и посмотреть где и что напорчено.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 25 2016, 12:07
Сообщение #20


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Мне кажется aaarrr правильно угадал - 4Гб это ограничение 32-битного целого. Где-то на нижнем уровне для адреса использовано 32-битное целое вместо 64-битного, после 4 Гб новые данные затирают таблицу разделов.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
khach
сообщение Feb 25 2016, 13:52
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(Сергей Борщ @ Feb 25 2016, 15:07) *
после 4 Гб новые данные затирают таблицу разделов.

Ну это легко проверить, если писать данные с номером сектора внутри. Тольк по идее в MBR, и в копии таблиц фатов оно писать данные не будет, т.к это слишком тривиальная ошибка. Кстати, таблицы ФАТ кешированы ли и сбрасывались ли кеши после записи каждого файла?
А вот если перетерло MBR, то это почти точно не ошибка в FatFS, а в драйвере доступа к карте на уровне железа.
Go to the top of the page
 
+Quote Post
mantech
сообщение Feb 25 2016, 17:56
Сообщение #22


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(khach @ Feb 25 2016, 16:52) *
А вот если перетерло MBR, то это почти точно не ошибка в FatFS, а в драйвере доступа к карте на уровне железа.


Тоже довольно спорный вопрос, во первых, не видел еще ни одного драйвера карты, где LBA не 32х битное число, а даже, если оно вдруг 24х битное, то все равно проблема должна была быть на 8м гиге, а не на 4м...
Go to the top of the page
 
+Quote Post
Allregia
сообщение Feb 25 2016, 20:33
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Я даже не сомневаюсь, что проблема не в FatFs а в драйвере, но он родной от ST, правда старый, 2011-го года, но какая разница, должен же был работать?

По заданным вопросам:
- я проверю флешку h2testw, но на 300% уверен что она не фейковая.
- затирается с 0-го сектора.

К сожеланию нет возможности заниматься этой проблемой все время, только "в фоновом режиме" от более важных задач. Пока используем 4гб карточки, на всякий случай.

Тест показал:
Цитата
Warning: Only 15271 of 15272 MByte tested.
Test finished without errors.
You can now delete the test files *.h2w or verify them again.
Writing speed: 33.9 MByte/s
Reading speed: 57.2 MByte/s
H2testw v1.4
Go to the top of the page
 
+Quote Post
alexen
сообщение Mar 12 2016, 00:40
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 20-10-11
Из: С-Пб
Пользователь №: 67 865



Allregia
Если у вас используется пример от ST с файлом stm324xg_eval_sdio_sd.c от 30.09.2011, то там ошибка в расчете адреса. Проверьте функции SD_ReadBlock, SD_ReadMultiBlocks, SD_WriteBlock, SD_WriteMultiBlocks. Тоже однажды столкнулся с таким поведением.
Go to the top of the page
 
+Quote Post
lleeloo
сообщение Mar 13 2016, 20:26
Сообщение #25





Группа: Участник
Сообщений: 11
Регистрация: 22-03-13
Пользователь №: 76 154



Есть предположение, что в какой-то части кода есть место, где проверяется тип карты - HC или обычная SC. В одном из случаев (карта SC) происходит домножение адреса на 512. Если переменная 32 бита, то может происходить переполнение.
Go to the top of the page
 
+Quote Post

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

 


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


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