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

 
 
> 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
AlexandrY
сообщение Aug 18 2010, 07:18
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



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


Зря вы здесь связались с линуксом, у атмела счетчик PDC только до 64 Kб а дальше надо успеть до окончания передачи пакета отработать прерывание и запрограммировать следующий дескриптор пересылки по DMA. Поскольку у Atmel-ов нет цепочечной обработки дескрипторов.
Большие сомнения, что всегда из юзерспейса вы успеете обработать такие прерывания в срок не пропатчив свой линукс на риалтайм.

Простой отказ от драйверов и прямое управление периферией не так прост как может показаться. Поскольку PDC может использоваться или затрагиваться еще кучей драйверов разной периферии, то придется профильтровать все драйвера на предмет конфликтов использования PDC. А это адская и никому не нужная работа.
Проще выкинуть линукс, и взять что-то типа FreeRTOS.

Go to the top of the page
 
+Quote Post
winner
сообщение Aug 18 2010, 08:09
Сообщение #5


Участник
*

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



Цитата(AlexandrY @ Aug 18 2010, 11:18) *
Зря вы здесь связались с линуксом


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

Цитата
у атмела счетчик PDC только до 64 Kб а дальше надо успеть до окончания передачи пакета отработать прерывание и запрограммировать следующий дескриптор пересылки по DMA.


В "стандартном" pdc два указателя - на текущий и на следующий буфер, никогда не задумывались - для чего это сделано ?

Цитата
Поскольку у Atmel-ов нет цепочечной обработки дескрипторов.
Большие сомнения, что всегда из юзерспейса вы успеете обработать такие прерывания в срок не пропатчив свой линукс на риалтайм.


Очевидно Вы не видели даташит на at91sam9g45 - там появился dma контроллер с поддержкой scatter/gather.

Цитата
Простой отказ от драйверов и прямое управление периферией не так прост как может показаться.


Никаких проблем не вызвает прямое использование - даже наоборот.

Цитата
Проще выкинуть линукс, и взять что-то типа FreeRTOS.


Проще купить готовый продукт.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 18 2010, 09:13
Сообщение #6


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(winner @ Aug 18 2010, 11:09) *
Очевидно Вы не видели даташит на at91sam9g45 - там появился dma контроллер с поддержкой scatter/gather.

Никаких проблем не вызвает прямое использование - даже наоборот.


Не появился, а есть в at91sam9g45 другой DMA с цепочечной обработкой. Но он сидит на AHB будет занят на диски и звук и вы точно к нему не подступитесь ибо он будет слишком плотно использоваться драйверами линукса.
Вы и выбрали для прямой работы PDC потому что он не такой востребованный и его можно попытаться исключить из использования в драйверах.
При этом все равно получаете дикую головную боль когда Atmel захочет апгрейдить свои драйвера под линукс.

В дальнейшем предлагаю ссылаться на первоисточник:
http://www.atmel.com/dyn/resources/prod_do...nts/doc6438.pdf, а не на предположения о том что я не читал или не читал. wink.gif
Go to the top of the page
 
+Quote Post
winner
сообщение Aug 18 2010, 10:01
Сообщение #7


Участник
*

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



Цитата(AlexandrY @ Aug 18 2010, 13:13) *
Не появился, а есть в at91sam9g45 другой DMA с цепочечной обработкой. Но он сидит на AHB будет занят на диски и звук и вы точно к нему не подступитесь ибо он будет слишком плотно использоваться драйверами линукса.


При поверхностном осмотре - все дрйверы для g45 теже самые что и для младших контроллеров, по крайней мере чтобы использовать dma контроллер есть конкретный пункт меню в конфигураторе - всегда можно запретить драйверам лезть к dma.

Цитата
Вы и выбрали для прямой работы PDC потому что он не такой востребованный и его можно попытаться исключить из использования в драйверах.
При этом все равно получаете дикую головную боль когда Atmel захочет апгрейдить свои драйвера под линукс.


Я ничего не выбирал - задача четко не сформулирована, да и мне это не нужно.


Цитата(stas17 @ Aug 18 2010, 13:22) *
У Атмела есть и slave и master SPI, но вопрос в другом: насколько я понимаю линукс по умолчанию является Master и как из него сделать Slave я не знаю...


Да причем тут linux - я говорю о том чтобы написать свой драйвер который будет напрямую работать с spi контроллером миную api ядра для spi - как еще Вам объяснить ?

Цитата(winner @ Aug 18 2010, 13:48) *
как еще Вам объяснить ?


Что такое linux - это ядро предоставляющее некоторый уровень абстракции над железом, то есть любой драйвер должен предоставить функционал в соответствии с требованиями ядра - это простые ф-ции типа открыть, закрыть, прочитать, записать, изменить настройки. Остальным частям ядра не нужно знать как устроено это железо - они вызывают эти функции не напрямую а через api ядра. Так вот никто не мешает вам не использовать api ядра а общаться с контроллером напрямую в своем драйвере - достаточно чтобы ядро не пыталось параллельно с ним работать, для этого и нужно исключить из поля видимости ядра это устройство.
Go to the top of the page
 
+Quote Post
stas17
сообщение Aug 18 2010, 10:08
Сообщение #8


Участник
*

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



Цитата(winner @ Aug 18 2010, 12:48) *
Да причем тут linux - я говорю о том чтобы написать свой драйвер который будет напрямую работать с spi контроллером миную api ядра для spi - как еще Вам объяснить ?


Вы хотите сказать, что если написать такой драйвер, то независимо от режима работы (Master или Slave) все будет зависеть от драйвера(и в драйвере будет прописано кто посылает запросы, а кто на них отвечает)?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 18 2010, 11:02
Сообщение #9


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(stas17 @ Aug 18 2010, 13:08) *
Вы хотите сказать, что если написать такой драйвер, то независимо от режима работы (Master или Slave) все будет зависеть от драйвера(и в драйвере будет прописано кто посылает запросы, а кто на них отвечает)?


Сказано было по существу, что человек не смог совладать с HAL уровнем линукса под SPI с сделал программу напрямую обращающуюся к регистрам периферии.
Это уже не драйвер, а костыль для преодоления границ юзерспейса.
Но и при этом надо тщательно следить чтоб этому костылю не мешали другие драйвера, а главное нет никакой инфы какая достижима производительность с таким решением.
Go to the top of the page
 
+Quote Post
winner
сообщение Aug 18 2010, 11:42
Сообщение #10


Участник
*

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



Цитата(AlexandrY @ Aug 18 2010, 15:02) *
Сказано было по существу, что человек не смог совладать с HAL уровнем линукса под SPI с сделал программу напрямую обращающуюся к регистрам периферии.
Это уже не драйвер, а костыль для преодоления границ юзерспейса.


Перестаньте искажать чужие слова - лучше за своими следите и читайте даташиты иногда прежде чем заявлять что у атмел нет scatter/gather. Я управлял spi напрямую потому что мне нужна была скорость и spi был единственный скоростной интерфейс.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 18 2010, 12:03
Сообщение #11


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(winner @ Aug 18 2010, 14:42) *
Перестаньте искажать чужие слова - лучше за своими следите и читайте даташиты иногда прежде чем заявлять что у атмел нет scatter/gather. Я управлял spi напрямую потому что мне нужна была скорость и spi был единственный скоростной интерфейс.


Не оговаривается только то, кто ничего не говорит.
Но ваше утверждение, что скорость в линуксе легче достичь отказавшись от драйверов противоречит вашему же утверждению что драйвера писать там очень легко.
Вот что забавно.
Go to the top of the page
 
+Quote Post
winner
сообщение Aug 18 2010, 12:17
Сообщение #12


Участник
*

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



Цитата(AlexandrY @ Aug 18 2010, 16:03) *
Не оговаривается только то, кто ничего не говорит.


Иногда лучше молчать smile.gif

Цитата
Но ваше утверждение, что скорость в линуксе легче достичь отказавшись от драйверов противоречит вашему же утверждению что драйвера писать там очень легко.


Ваша нелюбовь ко всему что связано с linux мне известна, но иногда раскрывайте глаза - легкость написания драйверов никак не связана со скоростью работы устроств. С spi так получилось что атмеловский контроллер не поддерживает CS обоих уровней, что для универсальной ОС как linux неприемлемо, поэтому в угоду универсальности атмеловские драйверы написаны далеко не оптимально с точки зрения скорости. Я бы еще закрыл на это глаза но там не оказалось того функционала который предусмотрен ядром linux а у атмел просто не был реализован.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- stas17   AT91SAM9G45 и Linux   Aug 17 2010, 08:14
|- - winner   Цитата(stas17 @ Aug 17 2010, 17:14) Не мо...   Aug 17 2010, 15:23
||- - stas17   Цитата(winner @ Aug 17 2010, 18:23) Если ...   Aug 18 2010, 09:22
||- - VslavX   Цитата(winner @ Aug 17 2010, 18:23) под с...   Aug 22 2010, 12:02
||- - winner   Цитата(VslavX @ Aug 22 2010, 16:02) У мен...   Aug 22 2010, 12:45
||- - 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
|- - stas17   Цитата(AlexandrY @ Aug 18 2010, 10:18) Зр...   Aug 18 2010, 07:33
- - 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 Текстовая версия Сейчас: 23rd July 2025 - 23:08
Рейтинг@Mail.ru


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