Каково «стертое» значение ячейки памяти на карте SDHC? - PullRequest
0 голосов
/ 17 июня 2019

Я пишу на карту Micro SD (SDHC) для встроенного приложения. Приложение должно иметь возможность очень быстро записывать на карту в режиме реального времени.

Я видел, что предварительное стирание блоков памяти делает запись намного быстрее. К сожалению, я изо всех сил пытаюсь заставить команду стирания (и ACMD23) работать, поскольку драйвер, предоставленный для платы разработки, которую я использую, не завершен.

Есть ли способ стереть карту, возможно, предварительно записав «стертое» значение в блоки памяти? Например, если после стирания блока он становится 0x12345678, могу ли я просто написать это значение вместо него, чтобы стереть его, чтобы обойти с помощью команды стирания? Или есть какой-то другой способ, которым карта помечает блок как стертый?

Спасибо

Я попытался записать 0xffffffff как стертое значение, но это не помогло.

1 Ответ

1 голос
/ 17 июня 2019

Я думаю, вы не понимаете, как работает флэш-память.

Флэш-память имеет блоки, которые намного больше, чем ожидают типичные файловые системы.Кроме того, они имеют ограниченное количество циклов стирания.Следовательно, контроллер флэш-памяти предоставляет абстракцию, которая отображает виртуальные сектора в физические блоки.

Сектор, который «стирается», вообще не стирается активно.Он просто не сопоставлен, и вместо него отображается пустой блок (если имеется).В фоновом режиме контроллер флэш-памяти перетасовывает секторы вокруг и стирает физические блоки, когда они полностью не используются.

Как видите, качество контроллера флэш-памяти здесь имеет значение.Обычно это даже не проблема с драйверами.Водитель просто посылает команду;флэш-контроллер выполняет их.Если вам нужна лучшая производительность, получите лучшую SD-карту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...