реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> AT91 USB CDC-устройство, Готовый проект
prottoss
сообщение Jan 29 2011, 18:21
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Выкладываю готовый тестовый проект USB CDC устройства для серии AT91. Среда - IAR EWB for ARM 5.40
Скорость передачи (по показаниям RealTerm 2.0.0.57) порядка 300 кБ/с.
Прерывания используются только для обработки setup-запросов.

Замечания приветствуются.
Прикрепленные файлы
Прикрепленный файл  AT91_USB.RAR ( 112.24 килобайт ) Кол-во скачиваний: 89
 


--------------------
Go to the top of the page
 
+Quote Post
segment
сообщение Jan 29 2011, 20:03
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 352
Регистрация: 10-08-06
Из: Санкт-Петербург
Пользователь №: 19 471



При каком бодрэйте?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 29 2011, 20:17
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Сега @ Jan 29 2011, 23:03) *
При каком бодрэйте?

При любом wink.gif
Go to the top of the page
 
+Quote Post
segment
сообщение Jan 29 2011, 20:28
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 352
Регистрация: 10-08-06
Из: Санкт-Петербург
Пользователь №: 19 471



а, думал данные потом через uart гонятся =)
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 30 2011, 10:12
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(prottoss @ Jan 29 2011, 22:21) *
Прерывания используются только для обработки setup-запросов.


А почему так строго с прерываниями?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 30 2011, 10:35
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(sergeeff @ Jan 30 2011, 17:12) *
А почему так строго с прерываниями?
А чего тут строгого?sm.gif Просто приоритет setup-запросов, ИМХО, всегда выше чем обмен данными с приложением. Можно, конечно и без прерываний, как сделано в атмеловских апноутах - т.е. перед операцией ВВ выполняется проверка флагов прерываний.


--------------------
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 30 2011, 11:15
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(prottoss @ Jan 30 2011, 13:35) *
А чего тут строгого?sm.gif Просто приоритет setup-запросов, ИМХО, всегда выше чем обмен данными с приложением. Можно, конечно и без прерываний, как сделано в атмеловских апноутах - т.е. перед операцией ВВ выполняется проверка флагов прерываний.


А можно все делать по прерываниям и весь вопрос только в том, какой endpoint обрабатывается в прерывании первым (соответственно ep0 должен быть первым).
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 30 2011, 11:21
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(sergeeff @ Jan 30 2011, 19:15) *
А можно все делать по прерываниям...
Безусловно. Все зависит от организации программы.


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 30 2011, 12:12
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergeeff @ Jan 30 2011, 14:15) *
А можно все делать по прерываниям

Смысл имеет по большому счету только при наличии OS. Что делать, если данные пришли, а места для них пока нет? Или наоборот - ушли, а новых еще нет.

Очень не хватает DMA атмеловскому UDP, так была бы полная автоматика.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 30 2011, 12:38
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Jan 30 2011, 15:12) *
Что делать, если данные пришли, а места для них пока нет? Или наоборот - ушли, а новых еще нет.

Очень не хватает DMA атмеловскому UDP, так была бы полная автоматика.


1. Отслеживать эти события и принимать соотвествующие меры. Можно все это и без всякой OS сделать.
2. Если вы имеет Atmel ARM с кешами, то наличие DMA не сильно чего улучшит. Вам придется либо DMA буфера организовать в некешируемой области с последующим копированием по месту, либо обеспечить когерентность кеша за счет flush/invalidate. Учитывая, к тому же, специфические требования к выравниванием адресов для DMA обменов, все ооочень становится нетривиальным.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 30 2011, 13:11
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergeeff @ Jan 30 2011, 15:38) *
1. Отслеживать эти события и принимать соотвествующие меры. Можно все это и без всякой OS сделать.

Принимать соответствующие меры - это значит своими руками делать ту работу, которая должна быть по-хорошему возложена на DMA.

Цитата(sergeeff @ Jan 30 2011, 15:38) *
2. Если вы имеет Atmel ARM с кешами, то наличие DMA не сильно чего улучшит. Вам придется либо DMA буфера организовать в некешируемой области с последующим копированием по месту, либо обеспечить когерентность кеша за счет flush/invalidate. Учитывая, к тому же, специфические требования к выравниванием адресов для DMA обменов, все ооочень становится нетривиальным.

Во-первых, мы не имеем ARM с кэшами, поэтому страшилки про когерентность тут не к месту. А у того же PDC, например, нет каких-либо особо специфических требований к выравниванию.
С нормальным DMA как раз все стало бы очень просто и удобно: есть буферы для приема/передачи - DMA читает дескрипторы и гоняет данные; нет - хост получает NAK'и.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 30 2011, 15:31
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Jan 30 2011, 16:11) *
Принимать соответствующие меры - это значит своими руками делать ту работу, которая должна быть по-хорошему возложена на DMA.


Мечтать не вредно. На практике ничего этого не наблюдается.


Цитата
Во-первых, мы не имеем ARM с кэшами, поэтому страшилки про когерентность тут не к месту.


А мы имеем.

Цитата
А у того же PDC, например, нет каких-либо особо специфических требований к выравниванию.


Топик про at91. В этом семействе полно процессоров с кешами. Я не оракул, чтобы знать про какие конкретно процессоры идет речь.

PDC имеет дело всегда со 32-х битными словами - уже ограничение. Если вы посмотрите на многочисленные примеры и errata, то там то сям надо выравниваниее DMA-буферов то на 256, то на 1024. Полная каша.


Цитата
С нормальным DMA как раз все стало бы очень просто и удобно: есть буферы для приема/передачи - DMA читает дескрипторы и гоняет данные; нет - хост получает NAK'и.


И что тут нормального. Ну "встал" входной поток данных, а кто "будить" то все это будет? А если вы пользуете USART с DMA? Какие там NACK'и? Нет, увы, единого подхода к решению этой проблемки.


Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 31 2011, 17:31
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergeeff @ Jan 30 2011, 18:31) *
Мечтать не вредно. На практике ничего этого не наблюдается.

У Атмела - да, не имелось. На SAM3 только прикрутили персональный DMA для USB.

Цитата(sergeeff @ Jan 30 2011, 18:31) *
Топик про at91. В этом семействе полно процессоров с кешами.

А без оных еще больше.

Цитата(sergeeff @ Jan 30 2011, 18:31) *
PDC имеет дело всегда со 32-х битными словами - уже ограничение.

Да ну? Вас кто-то обманул.

Цитата(sergeeff @ Jan 30 2011, 18:31) *
И что тут нормального. Ну "встал" входной поток данных, а кто "будить" то все это будет?

Казалось бы ответ должен быть очевиден. Будить будет IN или OUT токен от хоста. По нему DMA-автомат
проверит готовность буфера и осуществит транзакцию, если это возможно.

Цитата(sergeeff @ Jan 30 2011, 18:31) *
А если вы пользуете USART с DMA? Какие там NACK'и? Нет, увы, единого подхода к решению этой проблемки.

Вот только не надо валить все в одну кучу. Изначально мы говорили о DMA применительно к USB. И вдруг откуда-то
вылезли "страшные" кэши, 1024-байтные выравнивания, 32-х битный PDC и прочее не буду говорить что.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 31 2011, 18:28
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Jan 31 2011, 21:31) *
Да ну? Вас кто-то обманул.

Да уж, в сердцах, сморозил. Виноват.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 31 2011, 19:36
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergeeff @ Jan 31 2011, 21:28) *
Да уж, в сердцах, сморозил. Виноват.

Да я и сам бываю... излишне эмоционален, не взыщите beer.gif
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st June 2024 - 18:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01506 секунд с 7
ELECTRONIX ©2004-2016