在没有人机界面的情况下,应如何配置设备?

描述

我们越来越依赖可穿戴和互联技术,但在没有人机界面的情况下,应如何配置设备?

一个例子是我们现在用于视频会议的无线耳机。设备的初始设置具有挑战性,为了实现设备与手机或PC配对,按钮顺序有时看起来是随机的。把USB充电口连接到PC,然后在浏览器里进行配置,不是更简单吗?

另一个例子是打印机管理。通常使用USB电缆连接打印机到PC,通过主机端专用应用程序实现打印机配置,如WiFi或IP地址,纸张类型和打印质量等,同时显示状态信息。

我们在J-Link调试器中也使用相同的技术来管理IP地址等配置。

事实上,几乎所有具有USB充电口的物联网设备都可以从嵌入式Web服务器中受益,以改进和简化人机界面。

在产品中实现这种功能已经有一段时间了,然而传统的方法是在嵌入式控制器中添加web服务器,以及USB和TCP/IP协议栈,这需要相当大的处理能力、能耗,占用更多的代码空间和RAM资源。

如何减少代码和RAM占用,同时实现易用性?

剔除TCP/IP协议栈,利用USB批量连接,基于emUSB-WEB协议栈可以将网页传送到主机端的浏览器。一个简单的主机应用程序(SEGGER示例:https://www.segger.com/downloads/emusb-device/SEGGER_USB_Webserver_Windows.zip)可以轻松地将USB HTTP通信连接到浏览器。一旦连接到交互网页,即可通过主机浏览器显示配置,状态或测量数据等。

嵌入式应用可以充分利用浏览器的所有功能来调整大小,滚动和导航等,以增强用户体验。包括链接到云端资源(如图形和动画),为用户界面添加额外的维度,无需将它们嵌入到有限的代码空间中,并提供远程更新外观的机会。

如何工作?

USB web服务器由PC应用和嵌入式应用程序两部分组成。

PC应用程序负责打开一个socket,浏览器可以连接并通过USB转发浏览器请求到嵌入式应用。

嵌入式应用接收HTTP请求,并使用集成的web服务器处理。响应通过USB发送,由PC应用接收,并转发到默认浏览器。

设备识别

PC应用必须能够识别它与其通信的USB设备。

嵌入式控制器

因此,嵌入式应用程序必须提供具备下列特性的USB接口:

· USB class ID: 0xFF(特定于厂商)

· USB subclass ID: 0x57 (ASCII“W”)

· USB协议ID: 0x45 (ASCII“E”)

· 字符串描述符需包含" http "

浏览器连接是如何工作的?

PC应用和嵌入式应用程序之间通过USB Bulk通信,它必须包含至少一个USB Bulk IN和一个USB Bulk OUT端点。

枚举完成后,嵌入式应用程序开始监听来自PC应用的命令,这些命令包含一个8字节的头,描述数据包。

在读取报头后,嵌入式应用将数据传递给嵌入式web服务器。

协议栈结构

在下面的示例使用了SEGGER中间件, emUSB和emNET,也可以根据需要使用其他组件。

使用TCP/IP协议栈的典型配置如下所示。

嵌入式控制器

注意emNET协议栈通过USB实现IP连接。虽然这是一种可靠的技术解决方案,但其增加的复杂性和所需的资源可能不适合嵌入式应用。

使用USB web浏览器配置,如emUSB-WEB,嵌入式协议栈变得更简单,更小,看起来类似于只需要一个USB协议栈和嵌入式web服务器。

嵌入式控制器

节省代码和内存

如果我们看一下运行在SEGGER emPower评估板(基于Kinetis K66 Arm Cortex-M4 160Mhz MCU)在上的web服务器应用程序,示例下载:https://www.segger.com/downloads/emusb-device/Trial_emPower_emUSBD_USB_Webserver_GUI.zip

注意,项目没有针对缓冲区大小等进行优化,但给出了一个很好的参考。

我们可以看到代码减少了大约32%,RAM减少了大约38%。

嵌入式控制器








审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分