|
SD карта и AVR, где почитать? |
|
|
|
Mar 12 2009, 18:16
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(_Ivan_33 @ Mar 12 2009, 21:02)  а мне бы побыстрее Moderator: Для "побыстрее" читайте на форуме многочисленные ответы на вопросы Ваших предшественников, а не засоряйте основные ветки форума дежурными вопросами.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 13 2009, 13:55
|
Группа: Новичок
Сообщений: 13
Регистрация: 21-02-09
Из: Москва
Пользователь №: 45 189

|
Для winAVR Если без FAT, то я использовал стандартные атмеловские библиотеки:
avrlib.rar ( 1.31 мегабайт )
Кол-во скачиваний: 261Вот для установки библиотекиРаботает стабильно, без проблем с SD 1ГБ Apacer 60x (объём меньше-больше не пробовал) Пишет и читает секторами по 512 б. Результат удобно смотреть в winhex. В корневой папке найдёте mmc.c тут разберёте функции. Там же найдёте mmc.h тут описано подключение к CPU. Пример основной программы в avrlib/examples/mmc. Не забудьте ввести изменения в global.h и makefile (частота и камень) Изначально отформатировал SD под FAT16 P.S. недели 2 назад попал в Вашу ситуацию, долго ковырялся, тем особо не нашёл, но в итоге всё заработало, может вам поможет, сэкономите время... Удачи
Сообщение отредактировал VaaG - Mar 13 2009, 14:00
|
|
|
|
|
Mar 24 2009, 21:47
|

Участник

Группа: Свой
Сообщений: 71
Регистрация: 23-10-08
Из: Набережные Челны
Пользователь №: 41 132

|
Цитата(_Ivan_33 @ Mar 12 2009, 21:02)  понимаю что тема не новая, но все таки где почитать и код посмотреть??? под ммс все есть, но коннектора под нее нет в подфорум для начинающих не стал, ибо слишком долго а мне бы побыстрее Посмотри И вообще посети И здесь посмотри, много найдешь
|
|
|
|
|
Apr 11 2009, 21:11
|

За битами по регистрам гоняюсь
  
Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446

|
Цитата(_Ivan_33 @ Mar 12 2009, 22:02)  ...под ммс все есть, но коннектора под нее нет... Для экспериментов, в качестве коннектора замечательно работают разъёмы от старых FDD-5,25 (дисководов). Ещё подойдёт кусок ISA разъёма от старой матплаты PC.
--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
|
|
|
|
|
Apr 12 2009, 03:39
|

Местный
  
Группа: Участник
Сообщений: 239
Регистрация: 30-10-07
Из: Санкт-Петербург
Пользователь №: 31 866

|
Добавлю, что предлагаемый в этой библиотечке (если я правильно понял) подход "через SPI" описан по-моему в 99% всех app.notes на эту тему... По крайней мере оставшегося 1% я не видал. ;-)
Практика показывает, что большинство карт отнюдь не достигают теоретического максимума скорости обмена по SPI - надолго уходят в бизи после операции записи (особенно если записывать по одному сектору, что опять же предлагается в 99% app.notesов). Почему по SPI даже при multiple write карточка часто уходит в бизи, а по SD4, вроде бы, не так часто - это я не вполне не понял.
В конце концов это составляет скорость записи от 50 до 150 кбайт в секунду (еще и от карты зависит). Для большинства задач это вполне достаточно, но если что, то я предупредил. ;-)
Кстати, на мой взгляд, искать по форуму SD-карты трудно, потому что в слове SD "меньше трех букв" ;-)))
Сообщение отредактировал RodionGork - Apr 12 2009, 03:40
|
|
|
|
|
Apr 12 2009, 19:23
|
Местный
  
Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399

|
Цитата(RodionGork @ Apr 12 2009, 07:39)  Практика показывает, что большинство карт отнюдь не достигают теоретического максимума скорости обмена по SPI - надолго уходят в бизи после операции записи (особенно если записывать по одному сектору). Почему по SPI даже при multiple write карточка часто уходит в бизи, а по SD4, вроде бы, не так часто - это я не вполне не понял. В конце концов это составляет скорость записи от 50 до 150 кбайт в секунду (еще и от карты зависит). При записи по одному сектору в режиме 1-wire SD у меня получилась такая скорость (с разными тактовыми): 103 КБ/сек - 215 КБ/сек (CLK = 20 MHz) 26.5 КБ/сек - 30 КБ/сек (CLK = 300 kHz) Карта уходит в BUSY. Multiple write не использую.
|
|
|
|
|
Apr 13 2009, 06:50
|

Местный
  
Группа: Участник
Сообщений: 239
Регистрация: 30-10-07
Из: Санкт-Петербург
Пользователь №: 31 866

|
Цитата(Джеймс @ Apr 12 2009, 23:23)  При записи по одному сектору в режиме 1-wire SD у меня получилась такая скорость (с разными тактовыми): 103 КБ/сек - 215 КБ/сек (CLK = 20 MHz) 26.5 КБ/сек - 30 КБ/сек (CLK = 300 kHz) Карта уходит в BUSY. Multiple write не использую. Вот именно - скоростями с которыми кард-ридеры записывают тут и не пахнет. Впрочем, в спецификации так и сказано (да и по смыслу получается) что если не использовать Multiple Write то используется только один буфер и после каждого сектора карта ждет пока он запишется. М-м-м... как-то я мутно "своими словами" спецификацию пересказываю. ;-) Что касаемо до файловых систем, в аппликейшн-нотах надо поискать. На сайте SiLabs например можно готовые текстики взять и немного переделать с учетом используемого проца. Цитата(sergeeff @ Apr 13 2009, 01:57)  Вот уж действительно. Никто не хочет по форуму поискать что к чему. Откройте же http://elm-chan.org/fsw/ff/00index_e.html. Там все внятно написано, библиотека под FAT12-FAT32 опубликована совершенно бесплатная, примеры benchmark'ов приведены. Какого рожна еще надо? Обратите внимание, что там бенчмарки для режима SPI либо для контроллера с MMC-интерфейсом. Когда появится ссылка на "рожна" с библиотеками для собственной реализации SD4 и бенчмарками для него это будет хорошо. Я на форумах (на edaboard и у silabs) видел что кто-то хвастался, мол, реализовали и все стало круче - но общаться люди не пожелали. Если сам домучаю (сейчас этот проект немножко на край стола съехал, ждет влияния финансов со стороны заказчика) - поделюсь, если это еще будет актуально... ;-)
|
|
|
|
|
Apr 13 2009, 07:21
|

Местный
  
Группа: Участник
Сообщений: 239
Регистрация: 30-10-07
Из: Санкт-Петербург
Пользователь №: 31 866

|
Цитата(zltigo @ Apr 13 2009, 11:11)  На ногомахании с попыткой изобразить SD интерфейс результата, если и можно какого добится, то исключительно на ниве попугаеизмерения а не в реальной жизни. Посему у реалиста японца никаих "библиотек" не появится а "крутые парни с форума" будут только рассказывать о невиданных успехах. Пользуйте контроллеры с SD контроллером на борту. Если можно, вы для пользы и для истории объясните, в чем конкретно проблему видите? А то вот пойду сейчас по неправильному пути "ногомахания", плакать буду потом горькими слезами... А если сейчас точно удастся понять в чем корень зла, так может избегну этой опасности... У контроллеров с SD-интерфейсом на борту есть один минус. Я их что-то не встречал в корпусах меньше LQFP-100, а в носимые устройства иногда хочется вставить что-нибудь типа QFN-48... Потому что чем мельче - тем лучше... А кто встречал? Правда NXP обещает что вот-вот начнет задумываться о маловыводных корпусах, в течение этого же 2009 года мол образцы начнут рассылать... Но ждать же невозможно!
Сообщение отредактировал RodionGork - Apr 13 2009, 07:22
|
|
|
|
|
Apr 13 2009, 07:37
|

Местный
  
Группа: Участник
Сообщений: 239
Регистрация: 30-10-07
Из: Санкт-Петербург
Пользователь №: 31 866

|
Цитата(aaarrr @ Apr 13 2009, 11:28)  Проблема в том, что превзойти даже обычный однопроводный SPI уже будет затруднительно. Сколько тактов понадобится на извлечение/упаковку 4-х бит и вывод их в порт? А еще придется CRC считать по всем линиям отдельно.
Т.е. теоретически - да, возможно. На практике подходит только для изучения интерфейса SD. А что у нас там с извлечением/упаковкой битов? Мне разве показалось что там по полубайту все отправляется, вроде бы ничего не перепутано как бывает порой... Считать CRC действительно противно именно потому что отдельные биты на отдельных линиях - т.е. его не получится считать побайтово, а побитово уже натурально времени не будет хватать. В связи с этим, похоже, придется его отключать. В общем безусловно нагрузка на проц больше, чем в случае готового интерфейса, но ведь в режиме, скажем, записи с компа на флешку девайс скорее всего ничем особенно больше и не будет заниматься, так что можно потерпеть. Есть еще третье решение - микросхему интерфейса использовать. Но опять же в мелких корпусах вариантов почти нет. Все это грустно. ;-)
|
|
|
|
|
Apr 13 2009, 07:49
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(RodionGork @ Apr 13 2009, 09:21)  Если можно, вы для пользы и для истории объясните, в чем конкретно проблему видите? aaarrr все объяснил. Цитата А то вот пойду сейчас по неправильному пути "ногомахания" А Вы еще в добавок и не представляете, где есть узкое место -тот-же SPI упирается в 20(двадцать) мегабит, что более двух мегабайт в секунду. По той-же Вашей цитате Джеймса при уменьшении скорости обмена по SPI в 66 (шестьдесят шесть) раз получили скорость обмена меньше всего в 4 (четыре) раза. Вспомните начала алгебры и посчитайте, с какой скоростью будет происходить работа c SD, если даже передача будет происходить мгновенно. Так-что копайте насчет тормозов в сотни килобайт совсем в другом месте. Цитата У контроллеров с SD-интерфейсом на борту есть один минус. Я их что-то не встречал в корпусах меньше LQFP-100, а в носимые устройства иногда хочется вставить что-нибудь типа QFN-48... Ну и зачем микроскопическому носимому устройству мечтается десятки мегабайт в секунду заливать на карточку?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 13 2009, 07:50
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(RodionGork @ Apr 13 2009, 11:37)  А что у нас там с извлечением/упаковкой битов? Мне разве показалось что там по полубайту все отправляется, вроде бы ничего не перепутано как бывает порой... И что, от этого легче? Цитата(RodionGork @ Apr 13 2009, 11:37)  Считать CRC действительно противно именно потому что отдельные биты на отдельных линиях - т.е. его не получится считать побайтово, а побитово уже натурально времени не будет хватать. В связи с этим, похоже, придется его отключать. А вот и камень на могилу: CRC в SD-режиме отключить нельзя.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|