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

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

|
Есть два микроконтроллера связанных по одному из интерфейсов UART, SPI, I2C или еще каким либо последовательным интерфейсом. Обмен между ними достаточно скоростной, не менее 1 Мбит/c.
На физическом уровне все достаточно понятно, включаем DMA на обоих микроконтроллерах и отражаем принимаемые и посылаемые кадры DMA в память. Чтобы уменьшить накладные расходы процессорного времени на перезапуск, DMA включаем на постоянную работу по связному списку из указателей на два приемных буфера. Также и с передатчиком.
Но а дальше как?
Как упаковывать данные, какие хидеры им давать, как контролировать целостность чтобы все это занимало как можно меньше процессорного времени и полосы пропускания. Затем вопрос по программной архитектуре приемников. Делать ли общий конвейер в драйвере приемника куда бы копировались все пакеты или может быть создавать таблицу подписки для драйвера где все заинтересованные задачи регистрировали бы свои принимающие конвейеры или майлбоксы? Если таблица подписки то разумно ли драйвер нагружать функцией менеджера сообщений? Это будет замедлять драйвер, хотя будет легко добавить механизм приоритетности. Если делать общий конвейер, то все равно нужен менеджер сообщений, но в отдельной задаче. А это уже расход стека на дополнительную задачу...
Да, и речь идет о жестком риалтайме и малых микроконтроллерах типа Cortex-M4, т.е. никаких линуксов и стандартных API типа POSIX.
|
|
|
|
|
 |
Ответов
|
Jun 14 2013, 12:59
|
Местный
  
Группа: Свой
Сообщений: 294
Регистрация: 28-02-05
Из: Екатеринбург
Пользователь №: 2 925

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

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.
|
|
|
|
|
Jun 15 2013, 19:22
|

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

|
Цитата(ViKo @ Jun 14 2013, 21:04)  Я использую для связи между микроконтроллерами UARTы, без драйверов. Скорость 250000 bps. Любой из микроконтроллеров может начать передавать по собственному желанию. А почему именно UART-ы? Только из-за асинхронности? Или в расчете на большую помехоустойчивость, поскольку они сэмплируются по нескольку раз на бит? И почему вы считаете модель взаимодействия типа peer-to-peer ("Любой ... может начать ... по собственному желанию") достоинством? Это ведь сильно усложняет программирование и отладку.
|
|
|
|
|
Jun 17 2013, 09:03
|

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

|
Цитата(ViKo @ Jun 17 2013, 11:50)  У меня обмен между микроконтроллерами простенький, и протокол простенький. Но то, что любой из них может инициировать передачу, для меня важно. Не нужно ждать своего часа, чтобы сообщить желаемое. У вас используется пересылка без подтверждения? Иначе как вы отличаете подтверждение от асинхронного начала новой передачи? Это же дополнительные трудности при анализе пакетов и куча потенциальных ошибок. В таком стиле идет обмен с GSM модулями по AT командам (с асинхронными сообщениями), и все признают что это весьма трудный для работы способ.
|
|
|
|
Сообщений в этой теме
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 AndrewN Новелла увы, превратилась в устареллу, но попохвал... Sep 18 2013, 17:17
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|