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

 
 
> SD карта. Размер блока стирания и запись на нее.
pvo125
сообщение May 16 2016, 03:06
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 9-04-14
Из: Черногорск Хакасия
Пользователь №: 81 299



Приветствую всех! Вопрос следующий у SD карт есть такой параметр как блок стирания. И размер этого блока (пробовал на двух 1гиговых картах) у одной 32 другой 64 КБ. Правильно ли я понимаю что при записи командами CMD24 или CMD25 карта предварительно стирает сектора в которые будет идти запись но так как у нее блок стирания например 64 килобайта то она стирает все 128 секторов (пусть сектор 512 байт) и не меньше. С того адреса который в качестве аргумента отправлен с командой CMD24/25 даже если пишется один сектор или несколько но их количество например 20 (некий блок по 10240 байт).
Тогда если я буду писать через fatfs файлы на такой карте. Может ли получится следующая ситуация. Файл существует он открывается для дозаписи в него. На уровне fatfs единица измерения уже кластер и пусть например этот кластер 16 КВ. Далее я вызываю f_write c количеством байт 10240. Внутри вызывается disk_write из которой вызывается уже моя реализация SD_MultiBlockWrite() и там предварительно стираются сектора на карте для ускорения процесса записи командой ACMD23. И вот карта стирает не только те сектора которые я запросил (10240 байт) не только тот кластер в который будет дописываться но и соседние следующие 3 кластера ( если кластер 16 КБ а блок очистки 64КБ ) Но ведь следующие соседние кластеры могут принадлежать другому файлу. Про это fatfs известно но самой то карте нет. Она чистит с заданного адреса +64КБ.
Или файлы пишутся не впритык и между ними есть несколько кластеров некая прослойка куда ничто не пишется. И при стирании картой своего блока стиралась бы эта прослойка и не затрагивались соседние файлы.

Если это так то подскажите кто как реализовывал. Слышал что нужно писать большими блоками но контроллер у меня stm32f103 там 20КБ ОЗУ но даже 16 не получится выделить под буфер для записи на карту.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mantech
сообщение May 16 2016, 17:53
Сообщение #2


Гуру
******

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



Цитата(pvo125 @ May 16 2016, 06:06) *
Если это так то подскажите кто как реализовывал. Слышал что нужно писать большими блоками но контроллер у меня stm32f103 там 20КБ ОЗУ но даже 16 не получится выделить под буфер для записи на карту.


Вся прелесть работы с картами памяти как-раз в том, что весь этот гемор тут не нужен! Ибо всем низкоуровневым управлением занимается контроллер в карте паяти. Все, что вам(т.е. fatfs-у) нужно - читать и писать секторами, от 512байт до 4кб, а может и больше, все остальное сделает сама карта. Да, в случае с нандом все гораздо печальнее...

Сообщение отредактировал mantech - May 16 2016, 17:53
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:10
Рейтинг@Mail.ru


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