特点
- 多个外设之间数据处理和交换。
- 首先设计要稳定可靠不丢数据。
- 及时维护设备就绪断开,尽量保持设备的就绪。
- 考虑多个设备,多通道同时工作。
- 条理清晰层次分明,容易开发。增加功能变得简单。
- 能周期定时处理数据的能力。
需求
大部分嵌入式设备核心工作是通过各种外设采集处理数据,发送处理好的数据。网络传输(DTU)的功能是这方面的典型案例。比方一个非常简单的例子,一个串口收到的数据,转发到多个网络目的地。
这种需求的难点和复杂性在哪里呢?
多种外设,使用外设之间差异性很大,具体表现为,初始化,设置不同,连接建立就绪不一样,设备就绪断开表现不一样。
在linux中把大部分的外设都抽象为设备,对于设备的读写轮询基本一致。这方面没有难度,但是各种设备的数据传输能力大小存在差异,简单处理会导致数据丢失。
采集数据处理很多时候需要周期,定时处理。
方案
实现多设备多通道数据集中处理收发有多个进程来实现。
实现该功能的进程分成两类,多个对应单个设备的单设备进程。一个数据集中处理的服务进程。单设备进程和之间用。
整个方案化繁为简,非常容易扩展。非常合适与多种设备之间