嵌入式系统无处不在。 他们运行您的洗碗机,控制您家中的温度,确保您的汽车发动机正常运行,并在紧急情况下帮助您制动。 嵌入式系统是执行非常特定的预定义任务的硬件和软件的组合。 电子设备本身通常封装在其控制的设备内。 他们通常配备传感器和执行器来执行任务。 有些具有用户界面,但大多数没有,或者也许只有几个LED可以告诉它正在做什么。
嵌入式系统功能
嵌入式处理器的处理能力通常取决于它们必须执行的任务。 处理器的范围从简单的8位或16位处理器(如PIC,AVR,MSP和H8等系列)到功能更强大的32位系统(如ARM Cortex或SuperH)。 由于价格降低,ARM内核变得越来越受欢迎,而简单的处理器对于大批量产品而言最为有趣。 它们的时钟频率通常不是很高-尽管32位系统通常以更高的速度运行,但它们通常在8至25 MHz之间。 当然,有些应用甚至在+ 500MHz时应用了更高功率的处理器,例如ARM7 / 9或MIPS。
嵌入式操作系统的列表很长,但是嵌入式系统通常不使用OS。 通常,一个简单的“任务调度程序”就足够了,因为它们的任务相对简单,并且不需要真正的OS就能负担所有的开销。
今天的问题是:在这些嵌入式系统上,我们可以使用JavaScript做什么?
一些启用JavaScript的选项
有一些项目旨在使用JavaScript对嵌入式系统进行编程。 我们都是JavaScript爱好者,我们当然可以看到其中的一些好处。 这些系统都实现了JavaScript解释器,并提供了针对硬件特定功能的API。
我要提到的第一个系统是Tessel 。 它由一块基板组成,该基板可以扩展有硬件模块,您可以通过网站购买这些模块。 基板设备齐全; 它具有WiFi模块和足够的可用内存。 扩展模块也非常有趣-摄像头,蓝牙LE,GPRS,micro SD和相当多的传感器。 唯一不幸的是,大多数产品都缺货或已预订。 但是,不要让它破坏您的乐趣。 他们的文档看起来非常好,并且有很多代码示例可供选择。 另一个优点是,软件包管理是使用npm完成的。
然后是Espruino委员会 。 与Tessel一样,它由CortexM3处理器提供动力,将为您提供出色的性能。 该项目的主要区别是没有扩展板可用。 但是,您可以通过连接电子设备将事物连接到系统。 这听起来像是一个消极的观点,但不一定如此。 有很多针对特定IC的库。 它们主要用于传感器和显示器。 在此系统上,内存可能是个问题,因为您必须使用处理器的嵌入式RAM。
JavaScript是正确的选择吗?
我觉得有必要提出这个问题-在嵌入式系统上运行JavaScript是一个不错的选择吗? 如果您是一个业余爱好者,或者想尝试技术,而JavaScript是您的本事,那我就说吧。 这两个项目都有创造有趣应用程序的潜力。 但是,如果您要寻求专业的解决方案,我会说:不(确实是用大写字母表示)。 嵌入式系统应该是可靠且可预测的。 用解释器上运行的代码无法保证正确的时间和响应时间。 内存管理是另一件事,在内存很少的系统中可能至关重要。
JavaScript和Web界面
JavaScript是为嵌入式设备提供Web界面的理想方法。 JavaScript可以利用Web浏览器的功能来创建设备本身无法产生的体验。 为了能够提供任何服务,至少必须满足两个条件:
- 系统将需要具有某种类型的网络连接。
- 系统必须能够通过该网络连接接受并响应HTTP请求。 当然,HTTP请求可以由其他系统代理。
大多数嵌入式处理器都有一个嵌入式以太网控制器或与外部控制器接口的家族成员。 大多数嵌入式操作系统都将TCP / IP作为库提供。 在其他情况下, 轻量级TCP / IP堆栈是一个很好的选择,可以轻松集成。 这些贡献包括一个HTTP服务器示例。 查看WebSockets是否可用或可以在平台上实现也可能很有趣。
最好使用Ajax调用来完成系统与浏览器之间的交互。 它们相对简单,来自服务器的响应也可以很简单。 这减少了嵌入式设备必须完成的工作量。 它要做的就是用参数解析请求的URL,在其配置中设置值或返回请求的值。
我们可以使用许多流行的JavaScript库(例如jQuery,AngularJS等)之一来实现此目的。只需构建基本页面,然后让该库执行请求处理以填充值并处理表单。 如果还有更多要显示的内容,那么可能会有一个结构化的方法来创建使用MVC方法的应用程序。 Angular是我的选择。
其他注意事项
安全是一个问题。 大多数嵌入式系统没有大量的库和运行SSL / TLS的功能,因此一个重要的问题应该是是否可以接受。 接下来,您可能需要进行身份验证。 Ravi Kiran在SitePoint上写了一篇非常不错的文章,内容涉及在AngularJS中实现身份验证 ,我建议您在需要时进行验证。
如果可能的话,您还希望从嵌入式系统提供服务。 如果您不这样做,那么同源策略将遇到问题。 如果系统的可用空间有限,或者Web应用程序很大,则可以为其使用某种形式的内容交付网络。 仅在系统上托管初始HTML文件,并从CDN中获取JavaScript,CSS和图像。 这也使您以后可以更轻松地更新Web应用程序。
结论
您绝对可以在JavaScript上运行嵌入式系统。 我提到的项目的硬件看起来非常有前途。 有很多可能性。 您对嵌入式系统和JavaScript有什么经验和想法?
From: https://www.sitepoint.com/javascript-embedded-systems-good-fit/