|
Разрушение FAT (в FatFs) |
|
|
|
Feb 10 2016, 15:53
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Странно ведет себя один приорчик на F407, FatFs R0.09, 2011г. Пишется стрим на флешку, примерно гигабайт в час. Запись разбита на "1 файл = пол часа". Т.е. пол часа пишется в tmp файл, потом он переименовывается в реальное имя с номером, и дальше опять пишется в tmp файл. Между файлами делается unmount/mount, проовали даже питание флешки выключать/ и включать снова. И все как бы было ОК, пока мы писали свой стрим по часу-два. Все работало идеально, флешки в основном исползовали 2-4ГБ, иноогда 8ГБ
А когда попробовали писать подольше да на флешках 8-16ГБ - видим проблему, появляющуюся примерно через 5-6 часов. Девайс продолжает писать, но если его остановить, то флешка уже не читается, фат разрушена, в итоге -> ее под format.
Все вызываемые функции FatFs - с проверкой, что FR_ОК возвращается если нет - сообщение на дисплей. И там ничего! Девайс может 10-14 часов писать (на 16ГБ флешку), потом его останавливешь - и всё, выяснить когда чего произошло уже не получается. У нас с напарником (код исходной мой, 4-х летней давности, но сейчас он с этим девайсом возится) уже все мысли кончились, не только по тому как найти баг, но и вобще в каком направлении поисков двигаться! Ну разве что, попробовать поставить послеледнюю версию FatFs?
Ну не может же такого быть, чтобы если по какой-то причине слетел фат, что при этом все функции f_open, f_close, f_write, f_rename, f_mount возвращают FR_OK?!
Ни у кого небыло ничего подобного? Или мож кто чего умного подскажет, как дальше искать?
|
|
|
|
|
 |
Ответов
|
Feb 10 2016, 21:01
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(Allregia @ Feb 10 2016, 17:53)  Ни у кого небыло ничего подобного? Или мож кто чего умного подскажет, как дальше искать? 0. проанализируйте посекторно что именно испортилось и где (я обычно WinHex пользую) 1. FAT16 или FAT32? А если поменять? 2. SDIO или SPI? А если поменять? 3. Поищите на самом нижнем уровне, то есть то что самописное к железу доступается. 4. Скорость-помехи-качество питания- качество флэшки? 5. Если проблема появляется практически регулярно- посадите логический анализатор и запишите эти самые 10 часов обмена, в параллель можете и какие-то логические сигналы генерировать и писать в качестве реперных точек, сильно помогает при разборках, а меньше 8-каналки сейчас и не найти анализатор.
|
|
|
|
|
Feb 11 2016, 15:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(Ruslan1 @ Feb 10 2016, 22:01)  0. проанализируйте посекторно что именно испортилось и где (я обычно WinHex пользую) 1. FAT16 или FAT32? А если поменять? 2. SDIO или SPI? А если поменять? 3. Поищите на самом нижнем уровне, то есть то что самописное к железу доступается. 4. Скорость-помехи-качество питания- качество флэшки? 5. Если проблема появляется практически регулярно- посадите логический анализатор и запишите эти самые 10 часов обмена, в параллель можете и какие-то логические сигналы генерировать и писать в качестве реперных точек, сильно помогает при разборках, а меньше 8-каналки сейчас и не найти анализатор. 0: ok, посмотрим. 1: Fat32 конечно, фат16 не может быть на 16ГБ носителе (больше 2гб - только фат32) 2: SDIO, 4bit 3: пытаемся. 4: питание от батарейки через LDO, флешки разные пробовали. 5: куда его посадить? Цитата 1. Limits: "File size: Upto 4G-1 bytes. (by FAT specs.)" 2. f_sync Используете? 1: стрим примерно 1гигабайт/час, пишем файлы по пол часа, т.е. по пол гига. и глюк происходит примерно на 10-12-м файле (5-6 часов записи). 2: нет, смысл? Цитата The f_sync function performs the same process as f_close function but the file is left opened and can continue read/write/seek operations to the file. This is suitable for the applications that open files for a long time in write mode, such as data logger. Performing f_sync function of periodic or immediataly after f_write function can minimize the risk of data loss due to a sudden blackout or an unintentional media removal. но у нас нет ни блекаута ни mеdia removal, хотя попробовать всунуть периодический вызов f_sync можно, попробуем.
|
|
|
|
Сообщений в этой теме
Allregia Разрушение FAT (в FatFs) Feb 10 2016, 15:53  mantech Цитата(Allregia @ Feb 11 2016, 18:59) 2: ... Feb 11 2016, 21:00   Allregia Цитата(mantech @ Feb 11 2016, 22:00) Попр... Feb 12 2016, 08:20    Alechek Цитата(Allregia @ Feb 12 2016, 13:20) ЧЕМ... Feb 12 2016, 09:23     Allregia Цитата(Alechek @ Feb 12 2016, 10:23) Маги... Feb 12 2016, 11:18 e-serg Цитата(Allregia @ Feb 11 2016, 00:53) Или... Feb 11 2016, 02:37 ViKo Попробуйте записывать намного чаще. Наверное, дожд... Feb 12 2016, 11:41 Ruslan1 Все-таки попробуйте логическим анализатором, подкл... Feb 12 2016, 12:21 редактор ЦитатаЧЕМ через 5 часов, "ЭТО", отличает... Feb 12 2016, 12:33 Alechek Цитата(редактор @ Feb 12 2016, 17:33) тем... Feb 12 2016, 12:35 KnightIgor Цитата(редактор @ Feb 12 2016, 13:33) тем... Feb 15 2016, 11:41  Allregia Коллеги, большое спасибо за продолжение обсуждения... Feb 22 2016, 18:21   aaarrr Цитата(Allregia @ Feb 22 2016, 21:21) Наш... Feb 22 2016, 19:00    Allregia Цитата(aaarrr @ Feb 22 2016, 20:00) Попро... Feb 23 2016, 17:58 редактор ЦитатаУвеличить частоту системного времени?
Для на... Feb 15 2016, 08:54 Alechek Проверяется флешка другими средствами : h2testw Feb 25 2016, 10:12 khach Если на плате есть кроме карnы большая SPI флеш-па... Feb 25 2016, 11:55 Сергей Борщ Мне кажется aaarrr правильно угадал - 4Гб это огра... Feb 25 2016, 12:07 khach Цитата(Сергей Борщ @ Feb 25 2016, 15:07) ... Feb 25 2016, 13:52  mantech Цитата(khach @ Feb 25 2016, 16:52) А вот ... Feb 25 2016, 17:56 Allregia Я даже не сомневаюсь, что проблема не в FatFs а в ... Feb 25 2016, 20:33 alexen Allregia
Если у вас используется пример от ST с фа... Mar 12 2016, 00:40 lleeloo Есть предположение, что в какой-то части кода есть... Mar 13 2016, 20:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|