Доброго времени суток! Подскажите, где можно найти простой примерчик работы с USB с прерываниями. Может кто - нибудь поделится своей разработкой для примера? Смотрел USB MassStorage от атмела, но там всё как-то сложно. Пример BasicUSB пробовал. Хочется посмотреть как работать через прерывания.. Заранее огромное спасибо!
Цитата(Artem @ Sep 26 2006, 13:01)

Доброго времени суток! Подскажите, где можно найти простой примерчик работы с USB с прерываниями. Может кто - нибудь поделится своей разработкой для примера? Смотрел USB MassStorage от атмела, но там всё как-то сложно. Пример BasicUSB пробовал. Хочется посмотреть как работать через прерывания.. Заранее огромное спасибо!
Посмотри фри ртос. Там есть примеры работы с юсб, но не уверен, что они намного проще, чем USB MassStorage от атмела.
Кроме того полностью по прерываниям работать не получится, т.к. есть флаги, не генерящие прерывания.
nameless
Sep 27 2006, 11:17
Ткните носом: где во фриртосе конфигурируются UDP_IER и UDP_IMR до прерывания.
Можно посмотреть USB примеры для STR710. Там, вроде, все присутствует.
nameless
Sep 28 2006, 12:17
Дык причем здесь STR? Большинство присутствующих (как я понял) пилит атмеловские камни.....
Костян
Sep 28 2006, 18:02
Попробуйте заглянуть в Агуров "Интерфейс USB" . Эл вариант тута
http://lord-n.narod.ru/walla.html сложновато пишет , зато на атмелах примеры
listener
Sep 28 2006, 21:33
Цитата(Artem @ Sep 26 2006, 14:01)

Доброго времени суток! Подскажите, где можно найти простой примерчик работы с USB с прерываниями. Может кто - нибудь поделится своей разработкой для примера? Смотрел USB MassStorage от атмела, но там всё как-то сложно. Пример BasicUSB пробовал. Хочется посмотреть как работать через прерывания.. Заранее огромное спасибо!
Смотрел я этот mass storage. Резюме: нужно либо разбираться в нем, либо с нуля (если есть неплохое понимание, как работает USB). Все остальное - вряд ли будет проще. Код там достаточно прозрачен и прилично откомментирован. Чтобы не выглядело так ужасно - рекомендуется его нормально отформатировать и, возможно, переименовать особо страшные функции.
Начинать с fw_task.c, приводить fw_isr в читабельный вид, по ходу залезая в остальные файлы.
Еще раз: проще вряд ли что-то будет. 70КБ комментированного текста - это близко к минимуму.
listener
Sep 28 2006, 21:46
Цитата(Костян @ Sep 28 2006, 22:02)

Попробуйте заглянуть в Агуров "Интерфейс USB" . Эл вариант тута
http://lord-n.narod.ru/walla.html сложновато пишет , зато на атмелах примеры
Атмел, да не тот - там говорится про AT89C5131 - 8-ми битный, x51-based. Здесь же, если я ничего не путаю, речь идет про AT91SAM7.
И вообще, книжка странная. Для начинающего она слишком сложна. Для человека с опытом - практически бесполезна.
Странноватая конечно, но хорошо, что хоть такая появилась по USB. Плохо в ней только одно: в ней рассказывается как написать под DriverStudio c её классами. Но как я понял - лучше писать с ивспользованием DDK. Я вроде с написанием драйвера разобрался, теперь буду мучить AT91SAM7S64.. Хочу весь проект сделать сам, от программы для девайса до программы для PC и драйвер USB. Вот и хочется посмотреть как правильно работать с USB со стороны девайса. Со стороны хоста представление уже имею. Если кто-то ещё хочет разобраться - предлагаю попробовать вместе. Как говориться две головы -лучше.
listener
Sep 29 2006, 04:13
Я начинал разбираться с USB четыре года назад. Инфы тогда не было никакой, кроме, собственно, стандарта и пары примеров. До всего приходилось доходить самому. Собственный USB-стэк для связки ATmega+PDIUSBD12 я писал два месяца. Пока писал - разобрался досконально. После этого, написал собственный стэк для MC68HC908JB8 за вечер.
После этого, книжка (что первая, что вторая) - для меня не содержит ничего нового. Я, правда, себе их прикупил - как справочник, чтобы в MSDN лишний раз не лазить.
С драйверами - все просто. В минимальном варианте, берется пример bulk из ddk, для него генерится свой guid и, возможно, указывается размер буфера побольше. Если драйвер не содержит собственной логики - этого достаточно. Работа из программы - тоже проста: самое сложное - получить имя устройства (но для этого есть стандартный пример), а дальше - CreateFile, ReadFile, WriteFile...
C ARM-ами я еще толком не работал. Серьезные разборки у меня намечаются в ближайшем времени, но не с SAM7, а с LPC2148.
Если будут вопросы по протоколу/реализации chapter9 на клиенте - попробую ответить.
А про какую вторую вы говорите? Первая как я понимаю Агуров "Интерфейс USB"? ,а какая вторая?
Костян
Sep 29 2006, 05:59
Цитата(Artem @ Sep 29 2006, 02:55)

А про какую вторую вы говорите? Первая как я понимаю Агуров "Интерфейс USB"? ,а какая вторая?
Вторая видимо того же автора , но "Практика программирования USB". Является логическим продолжением первой и содержит примеры на Си , C Builder, Delphi
Цитата
Атмел, да не тот - там говорится про AT89C5131 - 8-ми битный, x51-based. Здесь же, если я ничего не путаю, речь идет про AT91SAM7.
Все верно , но в ней разобрана теория USB и высокоуровневое программирование под PC.
nameless
Sep 29 2006, 13:06
А где брать исходники mass storage ???
Цитата(nameless @ Sep 29 2006, 17:06)

А где брать исходники mass storage ???
Можно зайти на сайт Philips. Там в примерах лежит мышка в исходниках. И у Keil то же пара примеров есть..
aaarrr
Sep 29 2006, 14:43
Цитата(nameless @ Sep 29 2006, 17:06)

А где брать исходники mass storage ???
На местном ftp, например: /pub/MCs/_ARM_/mass_storage
listener
Sep 29 2006, 14:57
КостянНасчет теории - согласен. А вот с практикой у автора - скорее всего, плоховато. Есть несколько вещей, которые неочевидны (reset после первого пакета device descriptor, два разных запроса config descriptor). После того, как напишешь реализацию ch9, о них очень хорошо помнишь и, объясняя кому-то, обращаешь на них особое внимание. У Агурова этого нет. Более того, там нет даже лога энумерации устройства - который на определенном этапе очень полезен. Такое ощущение, что был взят какой-то референсный пример, откомментирован и не больше.
namelesshttp://www.atmel.com/dyn/products/product_...sp?part_id=3521Ссылка где-то в середине страницы, для скачивания исходников - нужно формочку заполнить.
grauДля LPC2148 - примеров полно. Есть мышка, есть звуковуха, есть mass storage. Для SAM7 - ситуация другая: есть атмеловский mass storage, есть два BasicUSB (CDC и HID, кажется). И все. Разобраться хватит, но халявы не выйдет.
И ещё один вопросик: А кам можно симулировать работу USB порта в кейле? Видел где -то симуляцию I2C. А на USB такого нет?
А то UDP даже в симуляторе нету. Как быть? Надо хотя-бы энумерацию отладить.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.