|
AT91SAM9G45 и Linux, Работа с интерфейсами (SSC, SPI..) |
|
|
|
Aug 17 2010, 08:14
|
Участник

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

|
Здравствуйте! Мне нужно передавать данные от FPGA к ОС Linux. Скорость передачи довольно высокая - 3 МБайт/сек. Проблема в работе с интерфейсами. Во-первых, проблема в выборе между SSC, SPI... (может какой-нибудь другой последовательный интерфейс). Во-вторых, самое главное то, что драйвера под Linux нужно писать самому, а насколько я понимаю - это очень трудоемкий процесс, тем более, что подобного опыта у меня еще не было. Использование SPI представляется более логичным, но в данной системе это должно быть так: FPGA - Master, a Linux - Slave, но Linux, насколько я понимаю, не может быть Slave...И вообще, какие драйвера написать сложнее, на SPI или SSC? Посмотрел довольно много информации по этим вопросам и конкретных решений пока не нашел... Может у кого-нибудь есть опыт работы в подобных вопросах? Заранее благодарен!
|
|
|
|
|
 |
Ответов
|
Aug 17 2010, 09:15
|
Участник

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

|
Цитата(stas17 @ Aug 17 2010, 12:14)  подобного опыта у меня еще не было. Это и есть во-первых  slave реализовать самому минуя интерфейс ядра для spi - вообще не проблема если Вы работали с spi at91xxx и знакомы с ядром linux. В использовании для этого ssc я лично вообще смысла не вижу. PS С ssc я погорячился - нужно исходить из задачи, сколько данных, как они передаются - периодически, постоянно, блоками одинаковый длины или непрерывно и тд.
Сообщение отредактировал winner - Aug 17 2010, 09:51
|
|
|
|
|
Aug 17 2010, 13:14
|
Участник

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

|
Цитата(winner @ Aug 17 2010, 12:15)  Это и есть во-первых  slave реализовать самому минуя интерфейс ядра для spi - вообще не проблема если Вы работали с spi at91xxx и знакомы с ядром linux. В использовании для этого ssc я лично вообще смысла не вижу. Не могли об этом поподробнее рассказать? Цитата(winner @ Aug 17 2010, 12:15)  PS С ssc я погорячился - нужно исходить из задачи, сколько данных, как они передаются - периодически, постоянно, блоками одинаковый длины или непрерывно и тд. Пакеты, предположительно по 100 КБ, должны передаваться постоянно...
Сообщение отредактировал stas17 - Aug 17 2010, 13:16
|
|
|
|
|
Aug 18 2010, 07:18
|

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

|
Цитата(stas17 @ Aug 17 2010, 16:14)  Пакеты, предположительно по 100 КБ, должны передаваться постоянно... Зря вы здесь связались с линуксом, у атмела счетчик PDC только до 64 Kб а дальше надо успеть до окончания передачи пакета отработать прерывание и запрограммировать следующий дескриптор пересылки по DMA. Поскольку у Atmel-ов нет цепочечной обработки дескрипторов. Большие сомнения, что всегда из юзерспейса вы успеете обработать такие прерывания в срок не пропатчив свой линукс на риалтайм. Простой отказ от драйверов и прямое управление периферией не так прост как может показаться. Поскольку PDC может использоваться или затрагиваться еще кучей драйверов разной периферии, то придется профильтровать все драйвера на предмет конфликтов использования PDC. А это адская и никому не нужная работа. Проще выкинуть линукс, и взять что-то типа FreeRTOS.
|
|
|
|
|
Aug 18 2010, 08:09
|
Участник

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

|
Цитата(AlexandrY @ Aug 18 2010, 11:18)  Зря вы здесь связались с линуксом По большому счету я согласен - в linux нужно понимать что делаешь, здесь не прокатывает тупое кликанье мышью. К счастью. Цитата у атмела счетчик PDC только до 64 Kб а дальше надо успеть до окончания передачи пакета отработать прерывание и запрограммировать следующий дескриптор пересылки по DMA. В "стандартном" pdc два указателя - на текущий и на следующий буфер, никогда не задумывались - для чего это сделано ? Цитата Поскольку у Atmel-ов нет цепочечной обработки дескрипторов. Большие сомнения, что всегда из юзерспейса вы успеете обработать такие прерывания в срок не пропатчив свой линукс на риалтайм. Очевидно Вы не видели даташит на at91sam9g45 - там появился dma контроллер с поддержкой scatter/gather. Цитата Простой отказ от драйверов и прямое управление периферией не так прост как может показаться. Никаких проблем не вызвает прямое использование - даже наоборот. Цитата Проще выкинуть линукс, и взять что-то типа FreeRTOS. Проще купить готовый продукт.
|
|
|
|
|
Aug 18 2010, 09:13
|

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, а не на предположения о том что я не читал или не читал.
|
|
|
|
|
Aug 18 2010, 10:01
|
Участник

Группа: Участник
Сообщений: 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 ядра а общаться с контроллером напрямую в своем драйвере - достаточно чтобы ядро не пыталось параллельно с ним работать, для этого и нужно исключить из поля видимости ядра это устройство.
|
|
|
|
|
Aug 18 2010, 10:08
|
Участник

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

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

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

|
Цитата(AlexandrY @ Aug 18 2010, 15:02)  Сказано было по существу, что человек не смог совладать с HAL уровнем линукса под SPI с сделал программу напрямую обращающуюся к регистрам периферии. Это уже не драйвер, а костыль для преодоления границ юзерспейса. Перестаньте искажать чужие слова - лучше за своими следите и читайте даташиты иногда прежде чем заявлять что у атмел нет scatter/gather. Я управлял spi напрямую потому что мне нужна была скорость и spi был единственный скоростной интерфейс.
|
|
|
|
|
Aug 18 2010, 12:17
|
Участник

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

|
Цитата(AlexandrY @ Aug 18 2010, 16:03)  Не оговаривается только то, кто ничего не говорит. Иногда лучше молчать  Цитата Но ваше утверждение, что скорость в линуксе легче достичь отказавшись от драйверов противоречит вашему же утверждению что драйвера писать там очень легко. Ваша нелюбовь ко всему что связано с linux мне известна, но иногда раскрывайте глаза - легкость написания драйверов никак не связана со скоростью работы устроств. С spi так получилось что атмеловский контроллер не поддерживает CS обоих уровней, что для универсальной ОС как linux неприемлемо, поэтому в угоду универсальности атмеловские драйверы написаны далеко не оптимально с точки зрения скорости. Я бы еще закрыл на это глаза но там не оказалось того функционала который предусмотрен ядром linux а у атмел просто не был реализован.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|