我正在为不同的硬件(avr、arm7、tms55xx…)和不同的 rtose(freeRTOS、rtx、dsp/bios)编写嵌入式应用程序。他们每一秒都需要与 PC 或其他数字设备进行通信。有时交互逻辑非常先进。所以我对可以简化开发这些东西的通用方法(如状态机编程风格)、协议规范或库很感兴趣。
5 回答
我对 google在嵌入式系统上用于数据传递和 RPC 机制的协议缓冲区非常满意。它们比基于 XML 的系统轻得多,因为传输的数据是二进制编码的,并且对发送的数据进行解码需要最少的处理,这对链接嵌入式端的 cpu 使用来说是一个很大的优势。
有各种语言的现成库,但最重要的是用于嵌入式应用程序的 C。
打开JAUS。
它是反射性的、可组合的和标准化的(ish)跨语言跨平台工作。
提供比 Protocol Buffers 更多的框架(这是一个简洁的消息堆栈)它专注于机器人技术,但适用于控制系统。
理论上,JAUS 用户界面可以操作任何符合 JAUS 的设备,并且 JAUS 系统旨在组成一个系统系统。
如果这些事情没有意义,请忽略此建议。
这是 Embedded.com 上关于嵌入式系统和“轻量级”或最小实现的 CORBA 的文章。提到的商业解决方案适用于 QNX、VxWorks 和 LynxOS。以及Embedded.com 上关于 RPC 的另一篇文章(这篇文章由 TI DSP 培训师撰写,专门参考 DSP,因此可能与 DSP/BIOS 相关)。
我强烈建议您使用 Embedded.com 的文章搜索,可能有很多类似的文章您会发现有用的。
VxWorks 支持 RPC,QNX Neutrino也是如此。
“自己动手”一直是我的解决方案,其中标准合规性和系统间兼容性不是问题(即我的系统与我的系统通信)。只做你需要的事情是实现“轻量级”的最佳方式,也许是以牺牲灵活性和可维护性为代价的。
最近我们开发了:https ://github.com/EmbeddedRPC/erpc 给它机会;)
协议非常适合状态机,因此也许您可以使用非常轻量级的开源 QP 状态机框架 (state-machine.com)。适用于 AVR、MSP430、ARM7/ARM9、TMS320C28x、PSoC、HC08、M16C/R8C、H8、8051、PIC18、PIC24/dsPIC、ARM Cortex-M3/M0 等多种编译器的即用型 QP 端口和示例其他。