2017年5月3日, 汽车

Java on VxWorks using Micro Runtime

作者:Ka Kay Achacoso

KaKay-photo

VxWorks Micro Runtime (MRT)是在VxWorks实时操作系统(RTOS)上运行Java字节码的Java引擎。对于运行在多个平台上的应用程序,运行在VxWorks上的相同应用程序代码也可以运行在Linux、Android、iOS和Windows上。

VxWorks Micro Runtime由英特尔软件和服务集团(SSG)、物联网集团(IOTG)和风河集团(Wind River)合作开发。Java引擎针对Intel硬件进行了高度优化。它是专为物联网(IoT)设备设计的。Intel管理引擎由相同的Micro Runtime引擎驱动。通过在Intel硬件上运行VxWorks上的Micro Runtime,应用程序可以利用VxWorks的实时特性和Java引擎的性能优化。

Java 3理查德·道金斯方库

Java的一个很大的优势是3理查德·道金斯Java社区可用的聚会库。开发人员可以很容易地选择技术实现,其中一些实现已经经过了开发人员社区的多次迭代审查。作为测试,我选择了两个常见的物联网终端设备技术库。

第一种技术MQTT适用于发布-订阅模型。ag亚博真人MQTT代理运行在服务器上。MQTT订阅者向ag亚博真人代理订阅特定主题的消息。MQTT发布者将特定主题的消息发布给代理。通过这种方式,MQTT发布者可以将数据传输给MQTT订阅者。ag亚博真人

Eclipse Paho Java客户端是MQTT客户机库。使用这个库,VxWorks Micro Runtime应用程序可以在连接到MQTT服务器(比如在Linux上运行的蚊子)时发布消息或订阅消息。ag亚博真人

下面是在VxWorks Micro Runtime上运行的Eclipse Paho Java MQTT发布者。MQTT客户机仅使用与库一起提供的示例应用程序,将消息发布到代理,一个单独的订阅者接收该消息。ag亚博真人

>已连接到代理。
消息发布到代理。

我在带有Intel Core i7处理器的迷你itx板上运行这个Java应用程序。Micro Runtime Java引擎支持所有Intel现代夸克、Atom、Core和Xeon处理器,以及NXP i.MX6处理器。

在VxWorks MQTT发布器上执行很无聊。更有趣的部分是MQTT订阅者可以对已发布的消息做什么。ag亚博真人通过对Java客户机进行一些修改以发布更有趣的数据,我可以使用任何免费的MQTT订阅者来查看我的数据。ag亚博真人图1是映射出VxWorks数据的TeleMecha iPhone应用程序的屏幕截图。

图1 TeleMecha

图1所示。运行Eclipse Paho ag亚博真人Java MQTT发布库的VxWorks MRT应用程序发送的数据的TeleMecha MQTT订阅者视图

完全相同的Java类字节代码文件无需修改就可以在Oracle Java SE上运行。我应该在这里指出,VxWorks Micro Runtime并不直接使用jar文件和类文件。相反,从jar文件和类文件派生的JEFF格式的文件作为VxWorks Micro Runtime引擎的输入。JEFF格式是ISO标准。由于其紧凑的大小,它是嵌入式Java的一种流行的字节代码格式。您可以获得关于JEFF文件格式的信息在这里

图2

图2。VxWorks Micro Runtime引擎和Oracle JVM对MQTT示例中的应用程序使用相同的类文件

作为一个Java应用程序,我首先在我的Windows主机开发笔记本上运行MQTT发布者,然后花了一些紧凑的迭代来调整应用程序。一旦应用程序代码稳定下来,在Oracle Java虚拟机(JVM)上使用的Java类文件就被构建成一个jeff文件,在VxWorks上无需进一步调整即可运行。将应用程序从Windows平台移动到VxWorks平台的过程工作得很顺利。

测试的第二项物联网技术是用于访问云中的许多服务的rest式web服务。Resty是一个简单的HTTP REST客户端,用于调用REST api。https://beders.github.io/Resty/Resty/Overview.html。使用Resty客户端库,我能够使用VxWorks Micro Runtime从Markit On Demand获得当前的股票价格http://dev.markitondemand.com/MODApis/。JSON格式的响应被解析为提供股票价格信息。在Oracle Java SE上运行应用程序和在VxWorks Micro Runtime上运行应用程序一样容易,而且它们产生了相同的结果。

收到的值= {" Change ":0.32, " ChangePercent ":0.895104895104896,
“ChangeYTD”“ChangePercentYTD”:-0.551419906258624:36.27,“高”:36.25,
“LastPrice”:36.07,“低”:35.74,“MSDate”:42825年,“成分股市值”:170935730000,
“名称”:“IntelCorp”、“开放”:35.75,“状态”:“成功”、“符号”:“intel”,
" Timestamp ": " Fri Mar 31 00:00:00 UTC-04:00 2017″," Volume ":21438385}

公司:英特尔(intc . o:行情)
象征:intel
价格:36.07美元
时间:2017年3月31日星期五00:00:00 UTC-04:00

Java本地接口

在VxWorks上运行Micro Runtime具有使Java应用程序能够利用VxWorks的实时属性的优点。一个子系统可以作为C应用程序运行,Java本地接口(JNI)可以用于从C上下文切换到Java上下文。

下面的振动传感器应用演示了在VxWorks Micro Runtime JNI的使用。一套灵敏的加速度计和应变计安装在桥梁上进行结构测试。一个用C编写的VxWorks实时应用程序从传感器读数计算震动的震级和频率。Micro Runtime Java应用程序使用JNI访问这些计算。使用现成的3理查德·道金斯party库,Java应用程序将震动计算发布到MQTT代理,我可以在我的手机上可视化该数据,或者进一步分析该数据以作出预测。

Micro Runtime应用程序使用Resty客户端库访问OpenWeatherMap web API来检索盛行风速和风向,并补偿一些风的运动。

图3

图3。振动检测VxWorks Micro Runtime应用程序框图

结果是我的TeleMecha MQTT应用程序上的一个图表,显示了与一辆过桥的汽车对应的振动峰值。在这种特殊的物理设置中,只使用了一个加速度计,并在当地的桥上放置了几分钟。

图4 telemecha

图4。从VxWorks Micro Runtime发布到MQTT代理的桥接振动数据

在VxWorks上,查询同一位置的风速时,显示出一些轻微的风。

收到价值={“基地”:“站”,“云”:{“所有”:75},“鳕鱼”:200年,“coord”
37.77:{“纬度”:“朗”:-122.24},“dt”:1491600900,“id”:5322737,“主要”:
{“湿度”:82年,“压力”:1012年,“临时”:16.08,“temp_max”:18日“temp_min”:13},
“名称”:“阿拉米达”、“sys”:{“国家”:“我们”、“id”:439年,“消息”:0.0055,“日出”
: 1491572606,“日落”:1491619112,“类型”:1},“可见性”:16093年,“天气”
:[{“描述”:“小雨”、“图标”:“10 d”、“id”:500年,“主要”:“雨”},{“描述”
:“雾”、“图标”:“50 d”、“id”:701年,“主要”:“雾”}],“风”:{“度”:210年,“速度”:6.2}}

时间:17日4月7日下午2:35
地点:阿拉米达
温度:16.08摄氏度
风速:6.2米/秒
这里展示的Micro Runtime应用程序利用JNI来访问实时功能3理查德·道金斯利用物联网库进行高效代码重用,并在多个平台上部署相同的应用程序以实现快速开发。

在VxWorks Micro Runtime上调试

VxWorks集成开发环境是Wind River Workbench,一个基于eclipse的开发、调试和测试VxWorks应用程序的工具。为了调试Java应用程序,Workbench连接到在VxWorks上执行的Java引擎。连接之后,我就可以设置断点、遍历Java代码、读取变量值和计算表达式。

图5

图5所示。远程调试VxWorks Micro Runtime应用程序

通过使用VxWorks Micro Runtime java引擎和Wind River Workbench开发环境,该应用程序组装起来相当简单。使用Java编程语言的好处在较短的开发时间内是显而易见的。

您可以在以下网址找到VxWorks Micro Runtime产品信息http://www.windriver.com/products/product-overviews/Micro-Runtime-Product-Overview/

以前的Wind River荣获2017年美国商业奖Stevie®铜奖得主
下一个可预测的性能是OpenStack电信部署成功的关键