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

 
 
> параллельная шина из gpio
nik135
сообщение Jan 24 2013, 10:03
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 26-09-12
Пользователь №: 73 693



Добрый день!

подскажите, где глянуть как организовать параллельную шину посредством gpio выводов.
Желательно в виде драйвера для linux.

Какая максимальная производительность у данного решения. процессор ti-dm3730.

зы. извините, новичок в этом деле rolleyes.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 9)
Jury093
сообщение Jan 25 2013, 14:14
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(nik135 @ Jan 24 2013, 14:03) *
подскажите, где глянуть как организовать параллельную шину посредством gpio выводов.
Желательно в виде драйвера для linux.

чисто на поиграться, скорость будет никакая..
смотрите в даташите на АРМ подходящее количество свободных пинов в одном банке, идущие подряд - обзываете их (для себя) "шиной"..
настраиваете в режим GPIO и работаете, или через свой драйвер в ядре или из юзерспейса.. грубо говоря, организуете две п/п - чтение и запись

если пины идут не подряд, то придется собирать байт/слово из битов, что заметно скажется на производительности..
лучше присмотреть удобоваримый интерфейс (а-ля канал памяти) из давинчи наружу и забуферизировав, пользоваться всякими плюшками типа ДМА
или смотреть в сторону ФПГА, типа десериализатора - давинчи по SPI в фпга, а оттуда параллельной шиной наружу..

Цитата
Какая максимальная производительность у данного решения. процессор ti-dm3730.

на свободный пин прицепите осцилл и прогой на 10 строк сами все увидите..

Сообщение отредактировал Jury093 - Jan 25 2013, 14:15
Go to the top of the page
 
+Quote Post
afad
сообщение Feb 5 2013, 09:06
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 26-08-04
Пользователь №: 545



Цитата(nik135 @ Jan 24 2013, 13:03) *
Какая максимальная производительность у данного решения. процессор ti-dm3730.
Делал для LPC1768, работающего на частоте 100 МГц, без особых ухищрений на С получилось записывать 4 Мегаслова в сек (чтение элемента массива из памяти и запись его в gpio, формирование импульса WR, инкремент указателя массива, и так по циклу). Возможно можно как-то оптимизировать, или написать на асме, вероятно можно увеличить скорость в несколько раз, но мне не нужно было, поэтому не заморачивался.
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 23 2013, 20:45
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



а толку то - проц только и будет занят этим. Надо аппаратно такое.
Go to the top of the page
 
+Quote Post
_basile
сообщение Mar 24 2013, 10:41
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 175
Регистрация: 18-01-06
Из: Москва
Пользователь №: 13 329



Цитата(DASM @ Mar 23 2013, 23:45) *
а толку то - проц только и будет занят этим. Надо аппаратно такое.


Причем тут - это? А когда проц будет писать через внешнюю шину - он небудет "только и занят этим" ?
Да, там - DMA можно задействовать, но это - не во всех случаях.


--------------------
" Будут с водкою дебаты, отвечай : Нет ребяты-демократы, только чай ! "
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 24 2013, 10:57
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Я про DMA и говорю, мы же все таки ARM обсуждаем, а не 51-ый
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 25 2013, 03:02
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(DASM @ Mar 24 2013, 02:45) *
а толку то - проц только и будет занят этим. Надо аппаратно такое.
Кому надо? Топикстартеру? Он нигде не писал, что пересылка должна идти постоянно. Скорей всего - это кратковременные транзакции.
Ранее делал что-то подобное - кратковременные пересылки пакета в неск. килобайт. Запрещал прерывания и программно гнал через GPIO.
Выигрыша от DMA в таком режиме не будет - если проц во время такой DMA-пересылки будет выполнять код - будут проблемы с арбитражом шины (если у DMA приоритет доступа ниже чем у CPU), как следствие - замедление работы DMA, следствие - возможные ошибки протокола обмена по этой вашей GPIO-шине.
Я шёл путём оптимизации протокола этой GPIO-шины - после всех оптимизаций у меня на передачу одного слова требовалась одна запись в порт GPIO. При таком алгоритме я передавал весь блок за неск. десятков или сотен микросекунд - это не мешало работе ISR-ов.
Не использовал сигналы синхронизации (типа CS или WR) на каждое слово. Синхронизировал начало пакета, потом просто гнал весь пакет. Предварительно необходимо весь код это выполняющий переместиить в кеш CPU или разместить его в ОЗУ.
Работало в двунаправленном режиме.
Хоть стороны обмена тактировались от разных задающих генераторов, но за время передачи блока частоты не успевали рассинхронизироваться.

Делал в том же проекте вариант с DMA (растягивал по времени, добавлял синхросигналы на каждое слово, фоновое выполнение с кодом) - выигрыша в общей производительности системы не получал.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 25 2013, 07:48
Сообщение #8


Гуру
******

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



Цитата(jcxz @ Mar 25 2013, 07:02) *
Выигрыша от DMA в таком режиме не будет - если проц во время такой DMA-пересылки будет выполнять код - будут проблемы с арбитражом шины (если у DMA приоритет доступа ниже чем у CPU), как следствие - замедление работы DMA, следствие - возможные ошибки протокола обмена по этой вашей GPIO-шине.

У процессора кэш и далеко не одна шина, так что выигрыш никуда не денется.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 25 2013, 08:48
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Кеш не бесконечен - значит будут кеш-промахи.
Да, вроде шина не одна, но по факту, из опыта SSP+DMA (LPC1778), SCLK=30МГц, при приоритете доступа к шине CPU выше чем DMA, наблюдал разрывы в аппаратно формируемом SSEL (SSP-мастер).
При установке приоритета DMA выше чем CPU, эти разрывы пропадали. Благо у LPC1778 есть регистр приоритетов арбитража шины.
Писал об этом здесь ранее.
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 25 2013, 10:18
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Так "dm3730" процессор, а не простенький LPC1778. Человек писал про шину, а у процессоров обработки потокового видео DMA явно не для мигания гирляндой. С 16 кбайт I-cache выигрыш будет, даже на не очень длинных транзакциях.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:16
Рейтинг@Mail.ru


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