Jump to content

    

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

1 hour ago, haker_fox said:

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

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

Share this post


Link to post
Share on other sites
1 hour ago, aaarrr said:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
51 minutes ago, haker_fox said:

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

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

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

 

32 minutes ago, AHTOXA said:

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

Так то SPI.

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites
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 разве многопоточная? ну то есть каким-то семафором или еще как-то защищены операции с картой?

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

Share this post


Link to post
Share on other sites
9 минут назад, haker_fox сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites
34 минуты назад, AHTOXA сказал:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
4 hours ago, AHTOXA said:

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

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

Share this post


Link to post
Share on other sites

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

Edited by Developer

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
4 hours ago, Developer said:

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

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

Share this post


Link to post
Share on other sites
1 час назад, aaarrr сказал:

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now