Существуют ли легкие аналоги 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/