【发布时间】:2011-01-14 00:08:43
【问题描述】:
我正在为嵌入式 ARM 平台开发服务器应用程序。 ARM 板连接到系统将持续轮询的各种数字 IO、ADC 等。它目前正在运行一个 Linux 内核,其硬件接口被开发为驱动程序。这个想法是有一个客户端应用程序,它可以连接到嵌入式设备并在更新时接收感知数据并向设备发出命令(关闭传感器 1、重新启动传感器 2 等)。假设对感官设备的访问是通过典型的 ioctl 完成的。
现在我的问题与在嵌入式设备上运行的服务器应用程序的设计/架构有关。起初我想使用像libevent 或libev 这样的轻量级C 事件处理库。应用程序将优先考虑传感器轮询事件(然后在轮询完成后将信息发送给客户端)并在收到客户端命令时处理它们(通过典型的 TCP 套接字)。服务器通常只有一个连接,但最多可能有十几个,但不会有数千个连接。这是设计这样的东西的最佳方法吗?在我列出的两个事件处理库中,哪个更适合嵌入式应用程序,还是有其他替代方案?
正在考虑的另一种方法是多线程应用程序,其中传感器轮询在读取传感数据的优先/阻塞线程中完成,每个客户端连接在单独的线程中处理。感官数据被更新为某种缓冲区/数据结构,连接线程处理将数据发送到客户端并处理客户端命令(我想你仍然需要在这些线程中使用一个事件循环来监视传入的命令) .是否使用了任何库或典型的包来帮助设计这样的应用程序,或者这是您必须从头开始的东西?
您将如何设计我想要完成的任务?
【问题讨论】:
标签: c linux embedded client-server arm