sergeeff 1 15 марта, 2007 Опубликовано 15 марта, 2007 · Жалоба Коллеги! Для теста купил карту Extrememory Allround 2 Gb. У нее оказался блок = 1024 байта. Соответственно библиотека EFSL не работает. Как решать проблему? Я так понимаю, что с ростом обьемов карт и скоростей обмена могут и другие обьемы блоков быть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
etoja 0 16 марта, 2007 Опубликовано 16 марта, 2007 · Жалоба Карта на заводе сформатирована под FAT32. Сформатируй под FAT16. Для этого п Проводнике виндоуз нажми правую кнопку мыши, выбери Форматировать, а затем FAT. Самые правильные и надёжные карты памяти делает фарма Transcend. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivstech 0 16 марта, 2007 Опубликовано 16 марта, 2007 · Жалоба Самые правильные и надёжные карты памяти делает фарма Transcend. Кроме того Transcend продает карты памяти, произведенные фирмой Hitachi (HB.....) со своей наклейкой. Опасайтесь подделок! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
etoja 0 16 марта, 2007 Опубликовано 16 марта, 2007 · Жалоба Сплетни не нужны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivstech 0 16 марта, 2007 Опубликовано 16 марта, 2007 · Жалоба Сплетни не нужны. Какие могут быть сплетни. Мне ответил представитель фирмы Transcend на мой вопрос, почему у меня такая карточка, что они транснациональная компания и такое возможно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 16 марта, 2007 Опубликовано 16 марта, 2007 · Жалоба Переформатировать попробую в понедельник. Два вопроса попутно. 1. Нет ли какокй-нибудь специализированной программы для форматирования SD card, типа той, что написала Panasonic и в которой можно задавать параметры. В том числе размер блока? 2. Насчет Transcenda. У меня есть их карточка 1Gb. Результаты под EFSL на at91rm9200: Kinston 512 Mb : read - 1530 Kb/s , write - 167 Kb/s. Transcend 1 Gb : read - 867 Kb/s , write - 7 Kb/s ( это не опечатка, пока не понял в чем тут дело). В обоих случаях писался/читался файл 6 Mb. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 16 марта, 2007 Опубликовано 16 марта, 2007 · Жалоба Карта на заводе сформатирована под FAT32. Сформатируй под FAT16. Для этого п Проводнике виндоуз нажми правую кнопку мыши, выбери Форматировать, а затем FAT. Самые правильные и надёжные карты памяти делает фарма Transcend. Извиняюсь за глупый вопрос. Собираюсь вот тоже освоить работу с MMC или SD картой памяти объёмом от 2 гигов. Пока слабо представляю себе как это всё делается. :blink: Интересно, карту можно отформатировать под различный размер блока (512 байт, 1024 и, наверное, другие)? Ну а при этом низкоуровневый процесс обмена данными по SPI между картой и микроконтроллером будет каким? Только блоками по 512 байт или любой другой длины? Есть ли какие-то стандарты на такой интерфейс? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivstech 0 17 марта, 2007 Опубликовано 17 марта, 2007 · Жалоба Интересно, карту можно отформатировать под различный размер блока (512 байт, 1024 и, наверное, другие)? Ну а при этом низкоуровневый процесс обмена данными по SPI между картой и микроконтроллером будет каким? Только блоками по 512 байт или любой другой длины? Есть ли какие-то стандарты на такой интерфейс? Очевидно, речь идет о размере кластера, или все-таки о размере блока(аналогично сектору на жестком диске)? На жестких дисках размер сектора всегда 512 байтов. Для MMC карточки есть команда SET_BLOCK_LENGTH. Таким образом можно проверить, какие размеры блоков карточка поддерживает. Был вопрос насчет маленькой скорости записи - попробуйте использовать команду вроде MULTIPLY_WRITE (название точно не помню) для последовательной записи нескольких блоков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 17 марта, 2007 Опубликовано 17 марта, 2007 · Жалоба Для прояснения. Ну да, наверное, правильнее сказать не размер блока, а размер сектора. Хотя в терминологии SD card - это именно блок. 1. Ситуация на практике такова. Купил карту. Она уже отформатирована (на заводе). Вставил в компьютер - записал, чего хотел. 2. Вытащил из компьютера. Вставил в некое устройство, реализованное на каком-то процессоре, где нет никакой OS. Надо файл открыть, прочитать, закрыть. 3. В такой ситуации, на мой взгляд, нет никакой возможности как-то корректировать этот размер блока. Он уже задан и с такими его значениями информация и была записана. 4. Соответственно, единственное, что напрашивается, это адаптироваться к условиям нефиксированного размера этого блока. 5. Вариант переформатирования карты до ее использования - не лучший. Всегда найдется кто-то и этого не сделает. Соответственно важна задача совместимости с другими системами. 6. Насчет скорости записи. Подозрительно, когда отличие в скорости не в 2-3 раза, а почти в 25 раз. На мой взгляд, дело не в мультиблоковой записи, а в чем-то другом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
elfsoft 0 30 октября, 2007 Опубликовано 30 октября, 2007 · Жалоба Здесь явно идёт речь о блоке на SD-карте (аналог сектора на HDD). То есть это единица, которая, в общем случае, к логическому формату и файловой системе не имеет отношения. Я столкнулся с такой же проблемой - при попытке использования 2-гиговой SD-карточки (с размером блока 1024 байта) выяснил, что AT91RM9200 неправильно читает 1024-байтные блоки - в старших 512 байтах читается ерунда (в смысле, даже не нули, а просто иногда что-то случайное). И, похоже, неправильно себя ведёт именно контроллер SD/MMC в Атмеле. ..пока просто запретил заказчику использовать в моём проекте карточки объёмом больше 1ГБ :) Хотел попробовать посмотреть, как будет себя вести карточка и контроллер, если к ней обращаться в режиме SPI, но это в любом случае меня не устраивает, т.к. сильно медленная скорость для моего случая получится. ЗЫ Насколько мне известно, размер блока в SD-карточках поменять/перешить нельзя :( На всех карточках размером от 32 МБ до 1 ГБ включительно, которые мне попадплись в руки, размер блока был 512 байт. Кстати, может и с этим связано то, что некоторые картридеры (обычные комповые usb-шные) не хотят работать с 2 и 4-гиговыми SD (не SDHC) картами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiniMax 0 30 октября, 2007 Опубликовано 30 октября, 2007 · Жалоба ЗЫ Насколько мне известно, размер блока в SD-карточках поменять/перешить нельзя :( На всех карточках размером от 32 МБ до 1 ГБ включительно, которые мне попадплись в руки, размер блока был 512 байт. Кстати, может и с этим связано то, что некоторые картридеры (обычные комповые usb-шные) не хотят работать с 2 и 4-гиговыми SD (не SDHC) картами. Самое простое это считать и декодировать CSD регистр. Там есть вся информация Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
elfsoft 0 31 октября, 2007 Опубликовано 31 октября, 2007 · Жалоба Самое простое это считать и декодировать CSD регистр. Там есть вся информация Ну, собственно, GetCSD я чуть ли не в первую очередь делаю - мне ж нужно знать, что у меня за карточка запихнута :) (я на ней свою FAT16/32-библиотечку использую). Именно когда у меня начались проблемы с большими карточками, я и начал копать, кто виноват, я и накнулся, что дело именно в 1024-байтном секторе. Сначала было подумал, что FAT-овская библиотечка глючит, но потом, когда полез глубже/на более низкий уровень, увидел, что творится при чтении/записи блоков. "С помощью лома и какой-то матери" (с) заставить читаться/писаться эту карточку правильно не получилось :( PS. Эх, жаль, что поле READ_BLOCK_LENGTH в CSD - Read-Only.. а так бы поменял размер - и нет проблем! :) (ну ладно, это я уже несерьёзно... хотя в том же DataFlash-е можно один раз в жизни (жизни этого DataFlash-а :) ) поменять размер сектора с 528 на 512 байт, но это, всё-таки, чуть-чуть другой случай) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiniMax 0 31 октября, 2007 Опубликовано 31 октября, 2007 · Жалоба дело именно в 1024-байтном секторе. Сначала было подумал, что FAT-овская библиотечка глючит, но потом, когда полез глубже/на более низкий уровень, увидел, что творится при чтении/записи блоков. Самое простое - это подлатать немного драйвер ( то место , где идет запись/чтение 512 байтового сектора в очередной блок данных карточки) используя кэширование. Другими словами, имеем буфер на 1024 байт в RAM, который отображается на два соседних 512-byte сектора FAT. При попытке записи 1-го сектора копируем его только в 1024-байт RAM буфер. Реальную запись делаем только при заполненном 1024-байт буфере. Если очередной записываемый сектор не отображается на 2-й сектор RAM буфера, то cчитать его с SD и закончить операцю записи предыдущего блока. И т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
elfsoft 0 6 ноября, 2007 Опубликовано 6 ноября, 2007 · Жалоба Самое простое - это подлатать немного драйвер ( то место , где идет запись/чтение 512 байтового сектора в очередной блок данных карточки) используя кэширование. Другими словами, имеем буфер на 1024 байт в RAM, который отображается на два соседних 512-byte сектора FAT. При попытке записи 1-го сектора копируем его только в 1024-байт RAM буфер. Реальную запись делаем только при заполненном 1024-байт буфере. Если очередной записываемый сектор не отображается на 2-й сектор RAM буфера, то cчитать его с SD и закончить операцю записи предыдущего блока. И т.д. Не, ну так естественно, что я так и делаю!.. :) (тем более, что у меня в большинстве случаев приходится работать с целыми кластерами, которые часто по нескольку килобайт). Проблема тут находится "ниже" и состоит в том, что если просто, не глядя на файловую систему и т.д., в "сыром" режиме попробовать взять и прочитать или записать 1024-байтный блок, то при чтении в верхних 512 байтах лежит туфта вместо данных (при этом старые данные - те, что были в памяти, - затираются), а при записи блок тоже портится. Под туфтой я имею ввиду довольно много нулей с изредка попадающимися ненулевыми битами. ЗЫ Правда тут у меня очень нехорошее предположение возникло.. попробую-ка я при случае (сейчас плата недоступна) точно повыключить весь кэш и т.д. Хотя, может, я это уже и пробовал делать.. с другой стороны, если б это из-за кэша было, то тогда бы и с 512-байтными секторами глюки вылазили бы.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiniMax 0 6 ноября, 2007 Опубликовано 6 ноября, 2007 · Жалоба ЗЫ Правда тут у меня очень нехорошее предположение возникло.. попробую-ка я при случае (сейчас плата недоступна) точно повыключить весь кэш и т.д. Хотя, может, я это уже и пробовал делать.. с другой стороны, если б это из-за кэша было, то тогда бы и с 512-байтными секторами глюки вылазили бы.. Я говорил не про FAT кэширование, а про низкоуровневое SD кэширование, которе надо добавитьь для поддержки новых карт. Это принципиально разные вещи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться