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

 
 
> AT91SAM9G45 и Linux, Работа с интерфейсами (SSC, SPI..)
stas17
сообщение Aug 17 2010, 08:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 13-07-10
Пользователь №: 58 427



Здравствуйте! Мне нужно передавать данные от FPGA к ОС Linux. Скорость передачи довольно высокая - 3 МБайт/сек. Проблема в работе с интерфейсами.
Во-первых, проблема в выборе между SSC, SPI... (может какой-нибудь другой последовательный интерфейс).
Во-вторых, самое главное то, что драйвера под Linux нужно писать самому, а насколько я понимаю - это очень трудоемкий процесс, тем более, что подобного опыта у меня еще не было. Использование SPI представляется более логичным, но в данной системе это должно быть так: FPGA - Master, a Linux - Slave, но Linux, насколько я понимаю, не может быть Slave...И вообще, какие драйвера написать сложнее, на SPI или SSC?
Посмотрел довольно много информации по этим вопросам и конкретных решений пока не нашел...
Может у кого-нибудь есть опыт работы в подобных вопросах?
Заранее благодарен!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
winner
сообщение Aug 17 2010, 09:15
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 3-08-10
Пользователь №: 58 732



Цитата(stas17 @ Aug 17 2010, 12:14) *
подобного опыта у меня еще не было.


Это и есть во-первых smile.gif slave реализовать самому минуя интерфейс ядра для spi - вообще не проблема если Вы работали с spi at91xxx и знакомы с ядром linux. В использовании для этого ssc я лично вообще смысла не вижу.

PS С ssc я погорячился - нужно исходить из задачи, сколько данных, как они передаются - периодически, постоянно, блоками одинаковый длины или непрерывно и тд.

Сообщение отредактировал winner - Aug 17 2010, 09:51
Go to the top of the page
 
+Quote Post
stas17
сообщение Aug 17 2010, 13:14
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 13-07-10
Пользователь №: 58 427



Цитата(winner @ Aug 17 2010, 12:15) *
Это и есть во-первых smile.gif slave реализовать самому минуя интерфейс ядра для spi - вообще не проблема если Вы работали с spi at91xxx и знакомы с ядром linux. В использовании для этого ssc я лично вообще смысла не вижу.



Не могли об этом поподробнее рассказать?

Цитата(winner @ Aug 17 2010, 12:15) *
PS С ssc я погорячился - нужно исходить из задачи, сколько данных, как они передаются - периодически, постоянно, блоками одинаковый длины или непрерывно и тд.


Пакеты, предположительно по 100 КБ, должны передаваться постоянно...

Сообщение отредактировал stas17 - Aug 17 2010, 13:16
Go to the top of the page
 
+Quote Post
winner
сообщение Aug 17 2010, 15:23
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 3-08-10
Пользователь №: 58 732



Цитата(stas17 @ Aug 17 2010, 17:14) *
Не могли об этом поподробнее рассказать?
Пакеты, предположительно по 100 КБ, должны передаваться постоянно...


Подробней - я боюсь тогда проще драйвер написать за Вас. Если кратко - уберите описание ресурсов нужного интерфейса в ядре и работайте с ним напрямую, сконфигурировав под свою задачу - у Атмел куча примеров, думаю найдете и для slave spi. По крайней мере у at91sam9260 два интерфейса - я так и делал, только мне нужно было в режиме master - с одним работал как обычно через api ядра (вернее не я а драйвер dataflash) а другой использовал в своих целях программируя напрямую - ставил свой обработчик прерываний и перекидывал данные используя pdc. В Вашем случае похоже Вы сами не знаете что нужно - я ничего посоветовать не могу - что делать с полученные данными если юзерспейс их не успел прочитать, какой величины иметь буфер, с какой частотой идут блоки данных, нужно данные обрабатывать или сразу на внешнее устройство скидывать, как организованы данные - обособленные блоки или просто непрерывный поток и для юзерспейс неважно где начало а где конец блока. и тд.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Aug 22 2010, 12:02
Сообщение #5


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(winner @ Aug 17 2010, 18:23) *
под свою задачу - у Атмел куча примеров, думаю найдете и для slave spi. По крайней мере у at91sam9260 два интерфейса - я так и делал, только мне нужно было в режиме master - с одним работал как обычно через api ядра (вернее не я а драйвер dataflash) а другой использовал в своих целях программируя напрямую - ставил свой обработчик

У меня тут вопрос возник - как корректно работать с DMA (aka PDC) в юзерспейсе. Ведь DMA требует физический адрес, а в юзерспейсе у нас только виртуальные, да еще принадлежащие контексту конкретного процесса (что значит не в любой момент могут быть физически отображены). Получив буфер от malloc() в юзерспейсе нельзя даже быть уверенным что этот буфер физически непрерывен, а не надерган менеджером памяти из нескольких разнесенных физических страничек В ядре то понятно - получили буфер, конвертнули его в список дескрипторов физических страниц и поехали. Неужто в Линуксе есть API для руления физической памятью из юзерспейса? (Сомнение есть, потому как это хорошая дыра в безопасности)
Go to the top of the page
 
+Quote Post
winner
сообщение Aug 22 2010, 12:45
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 3-08-10
Пользователь №: 58 732



Цитата(VslavX @ Aug 22 2010, 16:02) *
У меня тут вопрос возник - как корректно работать с DMA (aka PDC) в юзерспейсе. Ведь DMA требует физический адрес, а в юзерспейсе у нас только виртуальные, да еще принадлежащие контексту конкретного процесса (что значит не в любой момент могут быть физически отображены). Получив буфер от malloc() в юзерспейсе нельзя даже быть уверенным что этот буфер физически непрерывен, а не надерган менеджером памяти из нескольких разнесенных физических страничек В ядре то понятно - получили буфер, конвертнули его в список дескрипторов физических страниц и поехали. Неужто в Линуксе есть API для руления физической памятью из юзерспейса? (Сомнение есть, потому как это хорошая дыра в безопасности)


Честно говоря не могу придумать для чего это все делать в userspace smile.gif я работал на уровне ядра. Мало того что буфер непрерывный, нужно чтобы еще и память была некешируемая иначе в устройство может улететь совсем не то что хочется smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- stas17   AT91SAM9G45 и Linux   Aug 17 2010, 08:14
||- - stas17   Цитата(winner @ Aug 17 2010, 18:23) Если ...   Aug 18 2010, 09:22
||- - VslavX   Цитата(winner @ Aug 22 2010, 15:45) Честн...   Aug 22 2010, 13:06
||- - AlexandrY   Цитата(VslavX @ Aug 22 2010, 16:06) В нек...   Aug 22 2010, 13:13
||- - VslavX   Цитата(AlexandrY @ Aug 22 2010, 16:13) По...   Aug 22 2010, 13:26
|- - AlexandrY   Цитата(stas17 @ Aug 17 2010, 16:14) Пакет...   Aug 18 2010, 07:18
|- - stas17   Цитата(AlexandrY @ Aug 18 2010, 10:18) Зр...   Aug 18 2010, 07:33
|- - winner   Цитата(AlexandrY @ Aug 18 2010, 11:18) Зр...   Aug 18 2010, 08:09
|- - AlexandrY   Цитата(winner @ Aug 18 2010, 11:09) Очеви...   Aug 18 2010, 09:13
|- - winner   Цитата(AlexandrY @ Aug 18 2010, 13:13) Не...   Aug 18 2010, 10:01
|- - stas17   Цитата(winner @ Aug 18 2010, 12:48) Да пр...   Aug 18 2010, 10:08
|- - AlexandrY   Цитата(stas17 @ Aug 18 2010, 13:08) Вы хо...   Aug 18 2010, 11:02
|- - winner   Цитата(AlexandrY @ Aug 18 2010, 15:02) Ск...   Aug 18 2010, 11:42
|- - AlexandrY   Цитата(winner @ Aug 18 2010, 14:42) Перес...   Aug 18 2010, 12:03
|- - winner   Цитата(AlexandrY @ Aug 18 2010, 16:03) Не...   Aug 18 2010, 12:17
- - winner   Цитата(stas17 @ Aug 17 2010, 12:14) драйв...   Aug 17 2010, 17:41
- - MTh   Работа с периферией в линуксе через самописный дра...   Aug 19 2010, 14:40
|- - stas17   Цитата(MTh @ Aug 19 2010, 17:40) Автору -...   Aug 20 2010, 07:26
- - MTh   SMC - Static Memory Controller Загляните в даташит...   Aug 20 2010, 11:10


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

 


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


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