InvisibleFed 0 17 апреля, 2008 Опубликовано 17 апреля, 2008 · Жалоба Подключаю карту 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 (сектор). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
InvisibleFed 0 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба Неужели никто не может помочь? Наверняка кто-нить разобрался как следует... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yarunt 0 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба Неужели никто не может помочь? Наверняка кто-нить разобрался как следует... Ну,практически сами ответили на свои вопросы. На карточке действительно работа посекторная(блочная) и вычисления так и происходят Nсект*512. В бут секторе есть информация про количество секторов в кластере. Размер кластера увеличивается в прогрессии с обьемом карточки. В пример 32мб 1сектор в кластере, 64мб 2 сектора в ластере .......................... 2гб 64сектора в кластере Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
InvisibleFed 0 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба Если Вы давали ответ на 3-й вопрос, то я немного про другое спрашивал... ли не понял ответа. Есть у меня 32 разряда адреса (4 байта из 6-и в команде). Что в тих 32 битах есть что? Т. е. "географически" куда укажет адрес 0x00000001, а куда 0x00000002? Сколько между ними пространства, если иначе. И что такое бут-сектор? Я фат не пользуюсь. Ну и остальные вопросы тоже пока без ответов... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба 1. Правельно ли утверждение, что я могу писать в блок/сектор сколько угодно раз без стирания? Да. 2. Если да, то нафига стирание (т. е. зачем сама операция)? Для ускорения записи. 3. Как происходит адресация? Т. е. например в блоке/секторе 512 байт. Если я записываю 512 байт по адресу 0x00000001, то следующие 512 байт "начнуться" с адреса 0x00000001 + 0x00000200 (512) = 0x00000201 (513)? 512 байт по адресу 0x01 никто записать не позволит. Адреса в байтах, но работать можно только блоками по 512 байт. 4. Из регистра CSD судя по SDProdManual для карточек SanDisk можно вытащить информацию обо все параметрах-размерах (размер сектора/блока, их число, число байт => вычислить весь объем карточки). Справедливо ли это для карт прочих производителей? Как узнать объем вставленной карточки? CSD одинаков для всех. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба 5. Часть секторов/блоков именуются как write protected. Как узнать об их распределении по адресному пространству карточки, где они расположены? Т. е. я, к примеру, пишу блок/сектор, а потом оказывается что туда нельзя писать, т. к. он защищен. Т.е. это сбойные секторы? Я вот подумываю о том, чтоб SD/MMC карточку в качестве таблицы использовать. Т.е. только для чтения. По рассчётам получается, что мне 4 гБайта таблица нужна. И время доступа ограниченное. Если бы сбойных секторов не было, то SD/MMC хорошо подходила бы. По адресу читаешь блок и всё. А так придётся за 2 раза это делать. Сначала таблицу соответствия физических секторов логическим (аналог FAT), а затем уже сами данные. Или я тут бред полный написал? Я работал с AT45DB642D, так у неё сбойных блоков в принципе не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба Или я тут бред полный написал? Я работал с AT45DB642D, так у неё сбойных блоков в принципе не было. Сбойные сектора у SD обрабатываются и маскируются встроенным в карту контроллером. У AT45 это надо делать руками, Atmel гарантирует только то, что у свежих кристаллов их нет, но это не значит, что они не могут появиться в процессе работы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба Сбойные сектора у SD обрабатываются и маскируются встроенным в карту контроллером. Т.е. можно читать не задумываясь о сбойных блоках. И 4 гБайта это размер уже после отбрасывания сбойных блоков? А что такое write protected блоки? Это действительно защищённые от записи? И защита программно не снимается? У AT45 это надо делать руками, Atmel гарантирует только то, что у свежих кристаллов их нет, но это не значит, что они не могут появиться в процессе работы. Атмел гарантирует, что сбойные блоки не появятся до 100000 перезаписей. Но для этого после 10000 перезаписей в одной странице надо перезаписать те блоки, которые не перезаписывались за эти 10000 раз. Иначе информация в них повреждена м.б. Для этого и команда специальная есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба Т.е. можно читать не задумываясь о сбойных блоках. И 4 гБайта это размер уже после отбрасывания сбойных блоков? А что такое write protected блоки? Это действительно защищённые от записи? И защита программно не снимается? Ровно 4ГБайта Вам никто не обещает. Реальный объем, конечно, будет заметно меньше. Write protected блоки устанавливаются и снимаются программно. Атмел гарантирует, что сбойные блоки не появятся до 100000 перезаписей. Но для этого после 10000 перезаписей в одной странице надо перезаписать те блоки, которые не перезаписывались за эти 10000 раз. Иначе информация в них повреждена м.б. Для этого и команда специальная есть. Гарантии Atmel'а - дело крайне темное. Когда-то число циклов стирания/записи не упоминалось вообще, потом были цифры 10K, 50K... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба Ровно 4ГБайта Вам никто не обещает. Реальный объем, конечно, будет заметно меньше. Понял. Придётся брать 8ГБайт SD. Гарантии Atmel'а - дело крайне темное. Когда-то число циклов стирания/записи не упоминалось вообще, потом были цифры 10K, 50K... В своё время проверил на 2х AT45DB642D. Пол-года непрерывной циклической записи выдержали. Они пишутся медленнее чем Атмел в своих pdf обещает. Не более 80 кБайт (блоков) в секунду (у AD45DB642D блок = 1 кБайт = 1056 байт если точно). За пол-года наверное 120000 записей набралось, но точно более 100000. Потом уже сделал счётчик кол-ва записей в блок. Если блок сдохнет можно будет максимальный по всей FLASH узнать. Но пока ещё ни одна не сдохла - заказчики молчат. А вообще 'aaarrr' большое спасибо за ответы. За счёт таблицы в SD - задача, которая раньше сложной казалась, теперь - детский сад. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
InvisibleFed 0 18 апреля, 2008 Опубликовано 18 апреля, 2008 · Жалоба 512 байт по адресу 0x01 никто записать не позволит. Адреса в байтах, но работать можно только блоками по 512 байт. Возвращаясь к своему примеру: Если я записываю 512 байт по адресу 0x00000000, то следующие 512 байт "начнуться" с адреса 0x00000000 + 0x00000200 (512) = 0x00000200 (512)? Верно? Странно то, что в адрес 0x00000000 я ничего записать не смог, а вот в 0x00000001 с легкостью. Хотя надо проверить код... Write protected блоки устанавливаются и снимаются программно. Значит, не на все блоки я могу установить защиту от записи (WP_SET)? Потому как число этих блоков ГОРАЗДО меньше общего числа блоков. Или что-то я не догоняю? И тогда как все-таки они распределены по адресному пространству? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SALOME 0 21 апреля, 2008 Опубликовано 21 апреля, 2008 · Жалоба Возвращаясь к своему примеру: Если я записываю 512 байт по адресу 0x00000000, то следующие 512 байт "начнуться" с адреса 0x00000000 + 0x00000200 (512) = 0x00000200 (512)? Верно? Странно то, что в адрес 0x00000000 я ничего записать не смог, а вот в 0x00000001 с легкостью. Хотя надо проверить код... Адрес следующего бока Вы расчитали верно. Однако, если длина блока 512байт (по умолчанию) то в адрес 0x00000001 запись не идет. Я специально попробовала на своей флэшке. Одрес записи должен начинаться кратно блокам, т.е.0x00000000, 0x00000200, 0x00000400 и т.д. Так ште скорее всего у Вас ошибка в формировании адреса в проге :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
InvisibleFed 0 21 апреля, 2008 Опубликовано 21 апреля, 2008 · Жалоба Спасибо за помощь. Ошибка действительно была в моей проге. P. S. SALOME, если это конечно не "сценический образ", :a14: - очень редко встретишь девушку в нашей области, да еще и... Я специально попробовала на своей флэшке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость wwweider 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба я нашел программку на си для кодевижена которой от меня требуется только номер сектора и массив из 512 данных. теперь вопрос как мне узнать диапазон секторов для любой вставленной флешки с которыми можно работать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба прочитать документацию Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться