|
Снова SD/MMC, Вопросы, на которые не нащел пока ответов |
|
|
|
Apr 17 2008, 10:15
|
Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469

|
Подключаю карту SD к AVR. Вот вроде все, пишет, читает, регистры читает и все такое. Но вот возникли вопросы.
1. Правельно ли утверждение, что я могу писать в блок/сектор сколько угодно раз без стирания? 2. Если да, то нафига стирание (т. е. зачем сама операция)? 3. Как происходит адресация? Т. е. например в блоке/секторе 512 байт. Если я записываю 512 байт по адресу 0x00000001, то следующие 512 байт "начнуться" с адреса 0x00000001 + 0x00000200 (512) = 0x00000201 (513)? 4. Из регистра CSD судя по SDProdManual для карточек SanDisk можно вытащить информацию обо все параметрах-размерах (размер сектора/блока, их число, число байт => вычислить весь объем карточки). Справедливо ли это для карт прочих производителей? Как узнать объем вставленной карточки? 5. Часть секторов/блоков именуются как write protected. Как узнать об их распределении по адресному пространству карточки, где они расположены? Т. е. я, к примеру, пишу блок/сектор, а потом оказывается что туда нельзя писать, т. к. он защищен.
P. S. "блок/сектор" - единица информации, обычно в 512 байт. По непонятным причинам, как я понял, эти совершенно разные понятия конфликтуют в доках на карты SD (блок) и MMC (сектор).
|
|
|
|
|
 |
Ответов
(45 - 59)
|
Oct 3 2008, 06:23
|

Местный
  
Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276

|
Цитата(LCD @ Oct 3 2008, 00:14)  Здравствуйте. Делаю поддержку флешек microSD на MSP430.
--- кусь --- Добрый день. А вопрос то в чем??? Вы хотите чтобы в исходнике нашли ошибку??? Или дали бы вам свои исходники???
--------------------
Удачи.
|
|
|
|
|
Oct 24 2008, 11:08
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 13-02-07
Пользователь №: 25 320

|
Проблема с microSD Kingston 1Гб. Делаю чтение блоками в 32 байта в цикле. Карта на определенном адресе очень долго не выдает Data Token (пока до 1мс задержку докрутил) . Посмотрел по докам сандиск на SD карты - а там максимум в 100мс обозначен!!!!! Это как понимать?
Сообщение отредактировал ISD - Oct 24 2008, 11:11
|
|
|
|
|
Oct 24 2008, 14:07
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 13-02-07
Пользователь №: 25 320

|
Если работать на 2 МГц CLK, надо буфер более 25КБ держать. Причем непонятна частота возникновения этой задержки. Как же тогда народ на АВР плееры делает? Или это только SD-карт касается? В MMC вроде меньше задержка....
|
|
|
|
|
Oct 25 2008, 13:37
|
Частый гость
 
Группа: Участник
Сообщений: 92
Регистрация: 1-06-08
Пользователь №: 37 959

|
Цитата(ISD @ Oct 24 2008, 18:07)  Если работать на 2 МГц CLK, надо буфер более 25КБ держать. Зачем так много?
|
|
|
|
|
Oct 27 2008, 07:19
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 13-02-07
Пользователь №: 25 320

|
Потому, что при 2Мгц CLK за 100мс должно прочитаться 25000 байт (это теоретически, практически -минус команда 7 байт, минус DataToken и CRC * кол-во блоков) (конечно, если надо поток постоянным держать). Непонятно, как в MP3 плеере, сначала буферизируют столько? Еще одна особенность всплыла - карте иногда не нравятся адреса, не выровненные к размеру блока чтения. Иногда- тоже понятие одной "магической цифры", остальные невыровненные кушает без проблем.
Сообщение отредактировал ISD - Oct 27 2008, 07:21
|
|
|
|
|
Jul 23 2009, 17:00
|
Участник

Группа: Участник
Сообщений: 58
Регистрация: 1-12-07
Пользователь №: 32 871

|
На второй странице этой ветки SALOME задаёт вопрос: Я правильно понимаю, что с ростом количества битых блоков будет уменьшаться размер памяти, выдаваемый регистром CSD? Zltigo отвечает: Нет. Просто пополнятся из резерва. После исчерпания резерва, битые сектора полезут наружу и будут уже маркироваться, как битые на файловой системе.
Мой вопрос. Карта используется как большой массив памяти, данные линейно пишутся подряд, так же линейно читаются, и после прочтения все удаляются. Т.е. файловой системы нет. Как в таком случае будут выглядеть битые сектора? Т.е. предположу, что при попытке записать в битый сектор карта вернёт ошибку. Но какую именно? Как понять (по ошибке) что это именно битый сектор, и его нужно просто пропустить? Что ответит карта при прочтении битого сектора? Опять же как это понять, чтоб данные из этого сектора пропустить?
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|