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

Разрушение FatFS на SD карте

1 hour ago, haker_fox said:

Снова не помню уже нюансов, а карте по-барабану, что-ли, на контрольную сумму?!

Речь о проверке CRC ответа карты.

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


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

1 hour ago, aaarrr said:

Речь о проверке CRC ответа карты.

Изначально речь шла о том, что команда чтения превращается... превращается в команду записи. На что я и ответил, что команда защищена контрольной суммой. И просто так карта ничего стирать не начнёт.

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


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

Если мне не изменяет мой склероз, то CRC  в режиме SPI проверяется только на одной команде - MMC_CMD_0_GO_IDLE.

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


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

51 minutes ago, haker_fox said:

Изначально речь шла о том, что команда чтения превращается... превращается в команду записи. На что я и ответил, что команда защищена контрольной суммой. И просто так карта ничего стирать не начнёт.

Просто вы процитировали замечание про бит CCCEN, который разрешает проверку ответа карты со стороны контроллера.

Скорее всего, проблема софтовая, и не связана непосредственно с FatFS и драйвером SD.

 

32 minutes ago, AHTOXA said:

Если мне не изменяет мой склероз, то CRC  в режиме SPI проверяется только на одной команде - MMC_CMD_0_GO_IDLE.

Так то SPI.

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


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

а FatFS разве многопоточная? ну то есть каким-то семафором или еще как-то защищены операции с картой?

 

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


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

1 hour ago, AHTOXA said:

Если мне не изменяет мой склероз, то CRC  в режиме SPI проверяется только на одной команде - MMC_CMD_0_GO_IDLE.

Автор топика не упомянул о режиме. Или я пропустил?

38 minutes ago, aaarrr said:

Просто вы процитировали замечание про бит CCCEN, который разрешает проверку ответа карты со стороны контроллера.

Верно. Но подразумевал другое)

38 minutes ago, aaarrr said:

Скорее всего, проблема софтовая,

Я тоже так считаю.

18 minutes ago, yes said:

а FatFS разве многопоточная? ну то есть каким-то семафором или еще как-то защищены операции с картой?

Да. На уровне самой ФатФС.

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


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

9 минут назад, haker_fox сказал:

Автор топика не упомянул о режиме. Или я пропустил?

Не упомянул. Поэтому вариант с порчей команды подходит под начальные условия :-)

10 минут назад, haker_fox сказал:

Да. На уровне самой ФатФС.

Не совсем. Пользователь должен обеспечить ff_cre_syncobj()/ff_del_syncobj() и ff_req_grant()/ff_rel_grant().

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


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

34 минуты назад, AHTOXA сказал:

Пользователь должен обеспечить

Ооо как я отстал. Надо будет обновиться.

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


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

как-то у меня внезапно стали убиваться насмерть USB Flash, Тоже через fatfs после попытки записать файл флэшка переставала видеться вообще в компе. Хоят перед этим в разных версиях моей программы всё было нормально. Даже форматирование не помогало. У меня оказался глюк в моем коде - с размером массива. Совсем постороннего, на залезшего на область памяти fatfs. :-)

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


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

4 hours ago, AHTOXA said:

Пользователь должен обеспечить

По-факту уже не должен))) Всё работает из "каропки"))) Имею в виду, что под распротсранённые оси (FreeRTOS точно) эти функции есть.

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


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

С картой памяти я работаю через SDIO
По поводу CСCEN, насколько я понял из спецификации SDHC, выставление это бита просто будет приводить к тому, что контроллер будет сообщать об ошибке.
Если бит не выставлен, то просто не будет ответа. и со стороны процессора вы вывалимся с таймаутом при ожидании ответа
image.thumb.png.76ec279c304bc98c644e7d9070ad7a3c.png

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

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


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

Для проверки работы взял различные карты памяти: Smartbuy, Mirex, Transcend (Industrial), Transcend SLC (Industrial) Diamond MLC(Industrial).
В качестве теста писал рандомные данные в один и тот же сектор без использование FatFs, вычитывал, сверял. В итоге получил регулярные ошибки записи с микроконтроллером RT1050 (примерно раз в 100 циклов) на Transcend (Industrial), на Mirex ошибки были заметно чаще, на остальных картах без ошибок.
Ошибку "DataCrcError" возвращала именно операция записи. 
На микроконтроллере MK24 нет ошибок ни на одной карте памяти, в том числе после выставления бита CСCEN.
 

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


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

4 hours ago, Developer said:

Ошибку "DataCrcError" возвращала именно операция записи. 

Тогда проверяйте железо.

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


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

1 час назад, aaarrr сказал:

Тогда проверяйте железо.

+1 . Или уменьшайте частоту клока

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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