JavaScript和嵌入式系统:它们是否合适?

嵌入式系统无处不在。 他们运行您的洗碗机,控制您家中的温度,确保您的汽车发动机正常运行,并在紧急情况下帮助您制动。 嵌入式系统是执行非常特定的预定义任务的硬件和软件的组合。 电子设备本身通常封装在其控制的设备内。 他们通常配备传感器和执行器来执行任务。 有些具有用户界面,但大多数没有,或者也许只有几个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浏览器的功能来创建设备本身无法产生的体验。 为了能够提供任何服务,至少必须满足两个条件:

  1. 系统将需要具有某种类型的网络连接。
  2. 系统必须能够通过该网络连接接受并响应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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式web服务器boa框架的基础上, 使用C语言cgi, 或者Python脚本, 结合HTML + javascript + ajax 的嵌入式web系统的开发实例 html 中使用javascritp + ajax 从C语言生成的cgi文件的get, set 一些值. boa服务器的相关配置参数说明: http://www.cnblogs.com/liuweiqiang/p/3859130.html boa安装包文件名: boa-for-hi3516a.tar.gz boa.conf 文件的保存路径: cat /etc/boa/boa.conf boa可 执行文件的路径: /usr/local/bin/boa, 可以设置为: 系统启动的时候, 这个进程自动启动 boa.conf 文件的重要参数 保存html文件的目录 DocumentRoot /www 可以将这个目录, 设置为samb共享文件夹的目录, 方便修改调试 修改完成以后, 肯定要重启boa进程的 保存python脚本, 或者C语言cgi文件的目录 ScriptAlias /cgi-bin/ /var/www/cgi-bin/ 说明: cgi-bin/ 后面的斜杠, 一定要加上 可以将这个目录, 设置为samb共享文件夹的目录, 方便修改调试 修改完成以后, 肯定要重启boa进程的 html文件文件中, 调用python脚本的时候, 指定的路径, 需要有: /cgi-bin, 比如: var url = "/cgi-bin/getuser.py"; 这个是python 或者 var url = "/cgi-bin/output.cgi"; 这个是C语言 说明: 如果发现, html文件, 修改了, 可是在浏览器中, 查看html源代码的时候, 这个代码, 还是旧的, 那么可以通过清空"IE浏览器", "360浏览器"的浏览记录 以上, javascript 可以调用python 同样, 也可以调用C语言生成的cgi文件(其实, 就是可执行文件) C语言 + Html 例子 C语言 CGI实例 http://blog.csdn.net/ajrm0925/article/details/8810342 http://blog.csdn.net/liang890319/article/details/6277900 http://blog.csdn.net/gnefniu/article/details/42432657 上传文件: http://blog.csdn.net/yu_xiang/article/details/7996670 查找文件 find . -type f -name "boa.conf" -print -mount find . -type f -name "boa" -print -mount 四、嵌入式web服务器boa的配置和使用 嵌入式web服务器boa的配置文件为boa.conf, 在boa-0.94.13目录下面,复制该文件到文件 系统的/etc/boa目录下面,打开boa.conf,修改为如下内容: Port 80 User root Group root ErrorLog /dev/console AccessLog /dev/null ServerName SoftEmbed.com DocumentRoot /www DirectoryIndex index.html KeepAliveMax 1000 KeepAliveTimeout 10 MimeTypes /etc/mime.types DefaultType text/plain CGIPath /bin:/usr/bin:/usr/local/bin ScriptAlias /cgi-bin/ /www/cgi-bin/ 几个重要配置参数如下: DocumentRoot: 存放html文档的主目录; DirectoryIndex: 默认返回的html文档; ScriptAlias:cgi脚本虚拟路径对应的实际路径,/www/cgi-bin/为cgi脚本存放的实际路径; 其他配置选项的意义请参考相关资料。 复制boa可执行文件到/usr/sbin目录中, 启动boa进程 重新制作文件系统,系统启动后,在客户端浏览器上输入开发板的ip 地址,例如: http://192.168.0.218, 就可以看到显示的测试网页了,如下图所示 CGI getenv函数的参数详解: http://www.cnblogs.com/ser0632/p/5498228.html s = getenv("环境变量名"); 取得环境变量内容 putenv改变或增加环境变量 int putenv(const char * string); setenv(改变或增加环境变量) http://www.jb51.net/article/71940.htm

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值