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

 
 
> Экономичный и быстрый протокол для обмена между микроконтроллерами с RTOS, Ищу идеи по реализации
AlexandrY
сообщение Apr 5 2013, 08:35
Сообщение #1


Ally
******

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



Есть два микроконтроллера связанных по одному из интерфейсов UART, SPI, I2C или еще каким либо последовательным интерфейсом.
Обмен между ними достаточно скоростной, не менее 1 Мбит/c.

На физическом уровне все достаточно понятно, включаем DMA на обоих микроконтроллерах и отражаем принимаемые и посылаемые кадры DMA в память.
Чтобы уменьшить накладные расходы процессорного времени на перезапуск, DMA включаем на постоянную работу по связному списку из указателей на два приемных буфера.
Также и с передатчиком.

Но а дальше как?

Как упаковывать данные, какие хидеры им давать, как контролировать целостность чтобы все это занимало как можно меньше процессорного времени и полосы пропускания.
Затем вопрос по программной архитектуре приемников.
Делать ли общий конвейер в драйвере приемника куда бы копировались все пакеты или может быть создавать таблицу подписки для драйвера где все заинтересованные задачи регистрировали бы свои принимающие конвейеры или майлбоксы?
Если таблица подписки то разумно ли драйвер нагружать функцией менеджера сообщений? Это будет замедлять драйвер, хотя будет легко добавить механизм приоритетности.
Если делать общий конвейер, то все равно нужен менеджер сообщений, но в отдельной задаче. А это уже расход стека на дополнительную задачу...

Да, и речь идет о жестком риалтайме и малых микроконтроллерах типа Cortex-M4, т.е. никаких линуксов и стандартных API типа POSIX.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Fujitser
сообщение Jun 14 2013, 12:59
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 294
Регистрация: 28-02-05
Из: Екатеринбург
Пользователь №: 2 925



Сериализацию тут зачем-то вспомнили, это вообще из другой оперы. Мне кажется, тут все достаточно просто: если контроллеры расположены на одной плате, то между ними можно организовать быстрый обмен по SPI или через параллельный интерфейс. Если это разные платы (или разные устройства), то в зависимости от дальности/помехоустойчивости/цены - I2C, RS232, RS485, 1-wire, CAN или еще 100500 вариантов, вплоть до Ethernet.
А какой заголовок прикрутить к кадру данных, какая разница, по сути...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 14 2013, 15:15
Сообщение #3


Ally
******

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



Цитата(Fujitser @ Jun 14 2013, 15:59) *
Сериализацию тут зачем-то вспомнили, это вообще из другой оперы. Мне кажется, тут все достаточно просто: если контроллеры расположены на одной плате, то между ними можно организовать быстрый обмен по SPI или через параллельный интерфейс. Если это разные платы (или разные устройства), то в зависимости от дальности/помехоустойчивости/цены - I2C, RS232, RS485, 1-wire, CAN или еще 100500 вариантов, вплоть до Ethernet.
А какой заголовок прикрутить к кадру данных, какая разница, по сути...


Вариантов не так много на самом деле.
1-wire, RS232, RS485 и CAN названные здесь не к месту.
Они все требую внешних драйверов которые в пределах платы совсем не нужны.
А вот заголовок любой не прилепишь без глубокого планирования функциональности.
Потому что если ошибетесь и напишите протокол, то потом смена структуры заголовков будет сложнее чем прилепить гигабитный Ethernet.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 14 2013, 18:04
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(AlexandrY @ Jun 14 2013, 18:15) *
1-wire, RS232, RS485 и CAN названные здесь не к месту.
Они все требую внешних драйверов которые в пределах платы совсем не нужны.

Я использую для связи между микроконтроллерами UARTы, без драйверов. Скорость 250000 bps. Любой из микроконтроллеров может начать передавать по собственному желанию.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 15 2013, 19:22
Сообщение #5


Ally
******

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



Цитата(ViKo @ Jun 14 2013, 21:04) *
Я использую для связи между микроконтроллерами UARTы, без драйверов. Скорость 250000 bps. Любой из микроконтроллеров может начать передавать по собственному желанию.


А почему именно UART-ы? Только из-за асинхронности?
Или в расчете на большую помехоустойчивость, поскольку они сэмплируются по нескольку раз на бит?

И почему вы считаете модель взаимодействия типа peer-to-peer ("Любой ... может начать ... по собственному желанию") достоинством?

Это ведь сильно усложняет программирование и отладку.

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AlexandrY   Экономичный и быстрый протокол для обмена между микроконтроллерами с RTOS   Apr 5 2013, 08:35
- - Shamil   Цитата(AlexandrY @ Apr 5 2013, 14:35) Как...   Apr 5 2013, 09:57
|- - AlexandrY   Цитата(Shamil @ Apr 5 2013, 12:57) Для на...   Apr 5 2013, 10:49
|- - Shamil   Цитата(AlexandrY @ Apr 5 2013, 16:49) Это...   Apr 5 2013, 12:04
- - SyncLair   интересная задача -- на мой взгляд, она сводится к...   Apr 5 2013, 20:01
|- - AlexandrY   Цитата(SyncLair @ Apr 5 2013, 23:01) инте...   Apr 6 2013, 19:27
- - DASM   Может не в тему, но возникла что-то подобное на Те...   Apr 6 2013, 08:09
|- - Axel   Цитата(DASM @ Apr 6 2013, 11:09) ... заде...   Apr 6 2013, 10:08
- - DASM   Но у нас сопряжение с ПЛИС идет, надо глядеть доку...   Apr 6 2013, 10:54
|- - Axel   Цитата(DASM @ Apr 6 2013, 13:54) Но у нас...   Apr 7 2013, 03:31
- - DASM   Сдается мне, что автор не вопрос задавал, поскольк...   Apr 6 2013, 19:33
|- - AlexandrY   Цитата(DASM @ Apr 6 2013, 22:33) Сдается ...   Apr 7 2013, 11:54
- - vshemm   В такой постановке задачи нет связи между минимиза...   Apr 7 2013, 17:44
- - juvf   Цитата(AlexandrY @ Apr 5 2013, 14:35) Ест...   Apr 15 2013, 03:09
|- - AlexandrY   Цитата(juvf @ Apr 15 2013, 06:09) Наприме...   Apr 17 2013, 08:43
|- - denyslb   Цитата(AlexandrY @ Apr 17 2013, 11:43) По...   Jun 29 2013, 01:34
- - PheeL   Хочу посоветовать обратить внимание на систему соо...   Apr 17 2013, 09:10
|- - rsv   Цитата(PheeL @ Apr 17 2013, 13:10) Хочу п...   Apr 17 2013, 16:42
|- - AlexandrY   Цитата(rsv @ Apr 17 2013, 19:42) А там ес...   Apr 17 2013, 17:46
- - DASM   суть сего топика в виде статьи для журнала будет н...   Apr 26 2013, 21:09
|- - AlexandrY   Цитата(DASM @ Apr 27 2013, 00:09) суть се...   Apr 28 2013, 12:12
- - kikos   Цитата(AlexandrY @ Apr 5 2013, 12:35) Ест...   Jun 6 2013, 10:31
|- - Axel   Цитата(ViKo @ Jun 14 2013, 21:04) Я испол...   Jun 15 2013, 17:00
|- - ViKo   Цитата(AlexandrY @ Jun 15 2013, 22:22) А ...   Jun 17 2013, 08:50
|- - AlexandrY   Цитата(ViKo @ Jun 17 2013, 11:50) У меня ...   Jun 17 2013, 09:03
|- - ViKo   Цитата(AlexandrY @ Jun 17 2013, 12:03) У ...   Jun 17 2013, 09:24
- - AndrewN   Новелла увы, превратилась в устареллу, но попохвал...   Sep 18 2013, 17:17


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:55
Рейтинг@Mail.ru


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