Существуют ли легкие аналоги CORBA/RPC для встроенных программ?

Я пишу встроенные приложения для различного оборудования (avr, arm7, tms55xx…) и разных rtoses (freeRTOS, rtx, dsp/bios). И каждая секунда должна общаться с ПК или другим цифровым устройством. Иногда логика взаимодействия очень продвинута. Поэтому я интересуюсь общей методологией (например, стилем программирования конечного автомата), спецификацией протокола или библиотекой, которая может упростить разработку таких вещей.

5 ответов

Решение

Я был очень доволен буферами протокола Google во встроенных системах для передачи данных и механизмами RPC. Они немного легче, чем системы на основе XML, поскольку передаваемые данные кодируются в двоичном формате, а декодирование отправляемых данных требует минимальной обработки, что является большим плюсом при использовании процессора на встроенной стороне канала.

Есть легкодоступные библиотеки для различных языков, но самое главное C для встроенных приложений.

OpenJAUS.

Это отражающий, компонуемый и стандартизированный (ish) Работает кросс-кроссплатформенный.

Предоставляет гораздо больше инфраструктуры, чем Protocol Buffers (который представляет собой аккуратный стек сообщений). Он сфокусирован на робототехнике, но работает для систем управления.

Теоретически пользовательский интерфейс JAUS может работать с любым JAUS-совместимым устройством, а системы JAUS предназначены для объединения в систему систем.

Если эти вещи не имеют смысла, пожалуйста, игнорируйте это предложение.

Недавно мы разработали: https://github.com/EmbeddedRPC/erpc Дайте шанс на это;)

Вот статья на Embedded.com на CORBA о встроенных системах и "легких" или минимальных реализациях. Упомянутые коммерческие решения предназначены для QNX, VxWorks и LynxOS. И еще одна статья о RPC на Embedded.com (эта статья написана инструктором TI DSP и специально ссылается на DSP, поэтому может иметь отношение к DSP/BIOS).

Я настоятельно рекомендую вам воспользоваться поиском статей на Embedded.com, вероятно, есть много похожих статей, которые вы найдете полезными.

VxWorks поддерживает RPC, как и QNX Neutrino.

"Roll your own" всегда было моим решением, когда соблюдение стандартов и межсистемная совместимость не являются проблемой (т.е. мои системы общаются с моими системами). Выполнение только того , что вам нужно, - лучший способ добиться "легкости", возможно, за счет гибкости и удобства обслуживания.

Протоколы естественным образом подходят для конечных автоматов, поэтому, возможно, вы могли бы использовать очень легковесные платформы конечных автоматов с открытым исходным кодом QP (state-machine.com). Готовые к использованию порты QP и примеры для различных компиляторов доступны для AVR, MSP430, ARM7/ARM9, TMS320C28x, PSoC, HC08, M16C/R8C, H8, 8051, PIC18, PIC24/dsPIC, ARM Cortex-M3/M0 и многих других. другие.

Примечание: я работаю на http://state-machine.com/

Другие вопросы по тегам