|
Коллектор данных на картах памяти малого размера, Применение карт памяти в качестве накопителя данных без применения FAT |
|
|
|
Mar 1 2009, 06:29
|

Частый гость
 
Группа: Участник
Сообщений: 98
Регистрация: 20-06-05
Пользователь №: 6 150

|
Подскажите, пожалуйста, можно ли использовать карту памяти небольшого размера (скажем MMC 16 МБайт) для устройства, следящего за напряжением в сети и накапливающего данные во времени. Поясню точнее, т.к. ясно, что можно  Хочется использоваит карту просто как внешнюю память без применения FAT. Т.е. прямо адресоваться к заранее вычисляемому адресу, записывать в него блок данных (скажем, байт 20) фиксированной длины. О блочном чтении/записи знаю, реализовывал в Атмеловской последовательной. Вот теперь вопрошаю, а можно ли ММС так использовать?
|
|
|
|
|
 |
Ответов
(1 - 47)
|
Mar 1 2009, 08:15
|
Местный
  
Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541

|
Цитата(ut1wpr @ Mar 1 2009, 10:29)  Подскажите, пожалуйста, можно ли использовать карту памяти небольшого размера (скажем MMC 16 МБайт) для устройства, следящего за напряжением в сети и накапливающего данные во времени. Поясню точнее, т.к. ясно, что можно  Хочется использоваит карту просто как внешнюю память без применения FAT. Т.е. прямо адресоваться к заранее вычисляемому адресу, записывать в него блок данных (скажем, байт 20) фиксированной длины. О блочном чтении/записи знаю, реализовывал в Атмеловской последовательной. Вот теперь вопрошаю, а можно ли ММС так использовать? Читать можно, а писать только целым сектором 512 байт.
|
|
|
|
|
Mar 1 2009, 10:07
|

Частый гость
 
Группа: Участник
Сообщений: 98
Регистрация: 20-06-05
Пользователь №: 6 150

|
Цитата(Клим @ Mar 1 2009, 11:15)  Читать можно, а писать только целым сектором 512 байт. Т.е. запись как обычно: вычисляем адрес сектора, читаем сектор, по вычисленному смещению модифицируем сектор, потом пишем сектор на его же место? Правильно?
|
|
|
|
|
Mar 1 2009, 10:57
|
Группа: Новичок
Сообщений: 13
Регистрация: 21-02-09
Из: Москва
Пользователь №: 45 189

|
Здравствуйте.
Присоединяюсь к вопросу! Тоже организовал последовательно через AVR Использовал библиотеку avrlib Пишет\читает\инициализирует без ошибок
В библиотеке сектор и буфер определены так: u32 sector=300; //здесь понятно, номер сектора u08 buffer[0x200]; //размер буфера 512 б. Но что представляет из себя буфер??? строку? или что?
Что такое 0x200 ???
процедуры записи\чтения соответственно mmcWrite(sector, buffer); mmcRead(sector, buffer);
Спасибо!
|
|
|
|
|
Mar 1 2009, 11:02
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(ut1wpr @ Mar 1 2009, 13:07)  Т.е. запись как обычно: вычисляем адрес сектора, читаем сектор, по вычисленному смещению модифицируем сектор, потом пишем сектор на его же место? Правильно? Правильно. Цитата(VaaG @ Mar 1 2009, 13:57)  u08 buffer[0x200];[/b] //размер буфера 512 б. Но что представляет из себя буфер??? строку? или что? Массив u08 размерностью 512 элементов, т.е. массив из 512 байт. Цитата(VaaG @ Mar 1 2009, 13:57)  Что такое 0x200 ??? Число... шестнадцатеричное.
|
|
|
|
|
Mar 1 2009, 11:32
|
Группа: Новичок
Сообщений: 13
Регистрация: 21-02-09
Из: Москва
Пользователь №: 45 189

|
Спасибо aaarrr и MrYuran
|
|
|
|
|
Mar 1 2009, 14:57
|
Профессионал
    
Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347

|
Цитата лучше использовать AT45DBxxx - надежнее, и можно организовать последовательную запись данных размером меньше одного блока все равно сектора затираются последовательно, так что по барабану. преимущество только при непрерывном потоке данных, когда используются 2 внутр.буфера. вот цена на АТ45 слишком завышена, факт... Цитата Мелкого размера ММС можно купить только на барахолке (т.е. вариант для нормальной разработки отпадает), большие - сплошная китайчатина, часто маловменяемая. зачем искать разное старье ? Kingston MicroSD на 1Г стоит 4$, разъем - еще 3-4$. Все равно дешевле чем AT45DB642, объем в 125 раз больше. Плюс возможность в любой момент прочитать/записать в картридере на компе.
Сообщение отредактировал ukpyr - Mar 1 2009, 15:05
|
|
|
|
|
Mar 1 2009, 15:12
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Но они вообще-то тоже блоками пишутся. Повторюсь. Стирание - одно на блок. Запись используется без стирания. Те данные, которые не надо трогать заполняются 0xFF. В результате по AND'у они накладываются. Цитата вот цена на АТ45 слишком завышена, факт... Завышена. Хотя, на том же дигикее 100 штук 45DB642 по $4. Цитата Kingston MicroSD на 1Г А какой, кстати, температурный диапазон у нее? И хотелось бы вменяемый даташит
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 1 2009, 16:06
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Rst7 @ Mar 1 2009, 18:12)  Повторюсь. Стирание - одно на блок. Запись используется без стирания. Те данные, которые не надо трогать заполняются 0xFF. В результате по AND'у они накладываются. Я тоже повторюсь. Пишется блоками, поэтому, что 1 байт записать, что весь блок - времени совершенно одинаковое кол-во уйдёт. Кстати пишутся они медленнее, чем в ДШ написано, по крайней мере у меня так почему-то. У AT45DB642D не быстрее чем за 12 милисекунд блок записывается. Цитата(Rst7 @ Mar 1 2009, 18:12)  Завышена. Хотя, на том же дигикее 100 штук 45DB642 по $4. 29.01.2009 покупали AT45DB642D по 146,82 руб. (это без НДС).
|
|
|
|
|
Mar 1 2009, 19:50
|
Группа: Новичок
Сообщений: 13
Регистрация: 21-02-09
Из: Москва
Пользователь №: 45 189

|
Ещё один маленький вопрос...
u32 sector=300; u08 buffer[0x200]; //буфер размера 512, в каждом байте значение 0xAA for (q=0x0;q<0x201;q++) { buffer[q]=0xAA; }
Блок нормально пишется, в winHEXе 300 сектор полностью в AA
u32 sector=300; u08 buffer[0x200]; //буфер размера 512, в каждом байте значение 0x1A for (q=0x0;q<0x201;q++) { buffer[q]=0x1A; }
Тут проблема, сектор не полностью 0x1A
Нормально пишет (AA,BB,CC,DD,EE,FF,A1,B1...) Кажется я неправильно число задаю. Никак во всём секторе не получу например (11, ...34) Как правильно пишутся эти значения hex чисел???
Спасибо!
|
|
|
|
|
Mar 1 2009, 20:07
|
Группа: Новичок
Сообщений: 13
Регистрация: 21-02-09
Из: Москва
Пользователь №: 45 189

|
Цитата(aaarrr @ Mar 1 2009, 22:55)  Вы заполняете 513 байт. Возможно, при этом перетирается что-то ценное. Да... от нуля до 0x201 , будет 513...не заметил Первый байт -0 конечный 511 Неа, не сработало При попытке записать 0x34 u32 sector=300; u08 buffer[0x200]; for (q=0x0;q<=0x1FF;q++) { buffer[q]=0x34; } В итоге получилось (с 0-ого) 34 9A 4D 26 93 49 A4 D2 69 и так повторяется до 512 бит на сектор...
Сообщение отредактировал VaaG - Mar 1 2009, 20:42
|
|
|
|
|
Mar 1 2009, 21:43
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Hmm @ Mar 2 2009, 00:19)  "Она" сама будет обходить сбойные сектора что-ли? AT45 не имеет последних, а при низкоуровневой "работе" с MMC, например, некую таблицу сбойных "участков", придется организовывать самому. Вот как раз у AT45 они могут появиться (а, помнится, у Toshiba вообще были такие флешаки, в которых сбойные могли быть изначально - вот уж в самом деле геморрой !), и их придется обходить. А у SD/MMC механизм замещения сбойных секторов встроенный, и об этой проблеме можно не думать.
|
|
|
|
|
Mar 1 2009, 22:02
|

Местный
  
Группа: Свой
Сообщений: 329
Регистрация: 22-06-04
Пользователь №: 124

|
Цитата(rx3apf @ Mar 2 2009, 00:43)  ... у SD/MMC механизм замещения сбойных секторов встроенный ... Тэкс... т.е. это есть на технологическом уровне. Бум знать  А на индустриальный температурный диапазон такие "флешаки" существуют?
--------------------
Талант не пропить ...
|
|
|
|
|
Mar 1 2009, 22:32
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(aaarrr @ Mar 2 2009, 01:07)  Существуют. Беда только в том, что покупая, например, карту "Kingston 1GB", Вы на самом деле получаете кота в мешке. А гарантия на что (типично продавцы дают 5 лет) ? Или соль в том, что "1 GB", которые уже не выпускаются и купить можно лишь где-то какие-то остатки ? А что до температуры - у того же Kingston типичные цифры -25...+85 рабочая, -40...+85 - хранение. Так что почти индустриальные...
|
|
|
|
|
Mar 1 2009, 23:11
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(aaarrr @ Mar 2 2009, 01:39)  "Производитель" только клеит наклейку на изделие, или же в лучшем случае корпусирует оное (кстати, -25...+85 - это рабочая температура корпуса SD-карты, определенная в спецификации). А что окажется на самом деле внутри - неизвестно. Но оно или работает, или не работает. На то и гарантия. Кстати, как раз китайцы вроде бы сами память (кристаллы, в смысле) еще не пекут ? Так что Samsung какой-нибудь или что еще. А что конкретно - да, узнать будет нелегко. А нужно ?
|
|
|
|
|
Mar 1 2009, 23:28
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(aaarrr @ Mar 2 2009, 02:16)  Ага, только у того же Samsung'а есть как индустриальные, так и коммерческие кристаллы. Ну, это понятно (кстати, конкретно по SD - у Samsung производящиеся в настоящий момент, я специально глянул, все -25...+85).. Но ведь это не проблема именно карточек, выпускаемых кем-то под своим именем. Недобросовестный производитель может и корпусированные камни маркировать как выгодно, а не как на самом деле. В любом случае, наличие гарантии дает основание "наехать" если не на производителя, то хотя бы на поставщика. А вообще SD/MMC - это один кристалл, или память сама по себе, а контроллер - сам по себе ? Потому как если один, то тут все однозначно - кристалл _обязан_ соответствовать спецификации, иначе это заведомая левота. Опять же, основная сфера применения емких флешаков - именно в "почти" индустриальном температурном диапазоне, смысла производить "коммерческие" нет - кому они нужны ?
Сообщение отредактировал rx3apf - Mar 1 2009, 23:34
|
|
|
|
|
Mar 1 2009, 23:41
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(-=TRO=- @ Mar 2 2009, 02:33)  Есть вероятность что купленная позже карточка-близнец будет работать не совсем так как старая, особенно по SPI, обсуждались уже случаи а форуме. Есть, да. Обсуждалось, да. Правда, помнится, конкретики не было - я попросил хоть название даташитов, где якобы была информации, расходящаяся со спецификацией, но результата не было. И что-то я сильно подозреваю, что дело все ж в руках. Это как с LCD-модулями на 44780 - казалось бы, все известно, прочитай и делай - так нет, регулярно появляются утверждения, что вот такой-то работает, а такой-то - не работает. Начинаешь выяснять - а работа реализована неправильно... Вот пока сам по этим граблям не пройдусь - буду сомневаться... Да, кстати - ведь подобные проблемы вовсе не особенность именно карточек. Сколько плюх в микроконтроллерах ? Сколько плюх в радиотрансиверах "с мозгами" ? Да вот, хотя бы, плюхи с готовностью у памяти AT26xxx - да запросто ! Так что изделие, которое делается по определенной спецификации, вызывает все ж больше доверия. IMHO, разумеется...
Сообщение отредактировал rx3apf - Mar 1 2009, 23:43
|
|
|
|
Guest_@Ark_*
|
Mar 2 2009, 12:42
|
Guests

|
Цитата(ut1wpr @ Mar 1 2009, 09:29)  Подскажите, пожалуйста, можно ли использовать карту памяти небольшого размера (скажем MMC 16 МБайт) для устройства, следящего за напряжением в сети и накапливающего данные во времени. Поясню точнее, т.к. ясно, что можно  Хочется использоваит карту просто как внешнюю память без применения FAT. Т.е. прямо адресоваться к заранее вычисляемому адресу, записывать в него блок данных (скажем, байт 20) фиксированной длины... Я бы Вам посоветовал не отказываться от FAT и файловой структуры, если, в конечном итоге, предполагается чтение данных в компьютер. Иначе получается - упрощаете одну проблему (запись), усложняете другую - перенос информации в ПК. Но, конечно, реализовывать полноценную поддержку файловой системы на МК с ограниченными ресурсами - слишком накладно. Оптимальное решение, на мой взгляд, лежит где-то по середине... Форматируем носитель на компьютере, и создаем (резервируем) на нем специальный (пустой) файл данных, предназначенный для записи информации. С заранее установленным именем и достаточным размером (или максимальным). Чтобы упростить поиск, можно, например, размещать его всегда в корневом каталоге. При записи информации, МК должен помещать данные последовательно в этот файл. Конечно, придется поискать имя файла в каталоге, и затем определять адреса блоков файла через FAT, но при этом, FAT требуется только читать и не нужно модифицировать! А это значительно проще, чем полная поддержка всех функций файловой системы. Таким образом, немного усложнив запись, полностью сохраняете структуру файловой системы носителя.
|
|
|
|
|
Mar 2 2009, 13:06
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Rst7 @ Mar 2 2009, 10:16)  А Вы читали ту гарантию? Ну издохнет у Вас флешка и при этом потеряются важные данные на $10к (например). Вы придете к торгашу и скажете - "Издохла флешка, я потерял 10 килобачей". Продавец ответит Вам - "Гуано вопрос, вот Вам новая флешка". "А 10 тонн?" - "А это к терапевту (найух, или еще куда)"... А что, это относится только к флешкам ? Точно так же будет, скажем, с HDD или иным носителем. Или вообще с любыми комплектующими или, например, программным обеспечением. Если хочется надежности - пожалуйста. За совсем другие деньги. Не вижу никаких причин, почему карточка должна быть менее надежна, чем чип с лапками. Ну разве что наличием коннектора.
|
|
|
|
|
Mar 2 2009, 13:37
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Rst7 @ Mar 2 2009, 16:12)  На "чип с лапками" есть даташит, есть Reliability Qualification Report. Вообщем, есть надежда. Надежда на что ? Что битую партию заменят ? Ну, может быть заменит. Ни за что больше производитель не отвечает. О чем явно предупреждает в каждом даташите. Цитата В случае флешки - надежды нет  Не вижу никакой принципиальной разницы. Но срок гарантии больше.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|