您现在的位置:首页 > 产业 > 技术 > 技术动态
技术干货:采用Renode 在无物理硬件的情况下运行真正的多节点 Zephyr设置
http://www.50cnnet.com 物联中国
日期:2018-03-22 17:08:07来源:中国网 点击:538
核心提示:作者:Michael Gielda Zephyr项目社区成员,Antmicro业务拓展及董事会成员如果你在工作中使用多节点物联网系统,你可能在构建实际网络时遇到过与测试、安全性、互操作性、复用性、产品周期管理以及代码质量相关的问题。为了解决这些问题,需要新的工具和工作流程,以便开发者围绕代码更有效地协作。这些工具和工作流程必...

作者:Michael Gielda  Zephyr项目社区成员,Antmicro业务拓展及董事会成员 

如果你在工作中使用多节点物联网系统,你可能在构建实际网络时遇到过与测试、安全性、互操作性、复用性、产品周期管理以及代码质量相关的问题。 

为了解决这些问题,需要新的工具和工作流程,以便开发者围绕代码更有效地协作。这些工具和工作流程必须增加测试范围并加深对运行在该设备上的软件和协议的理解,无论现在或是未来, 我们的家庭、办公室、工厂和城市都主要由这些设备来组成并支持。 

听起来很有前途?我们希望是的。它并不像听说的那样复杂。在这篇文章中,我们将解释Renode如何在你的日常研发中帮助你,而不是强迫你重写软件或放弃你所熟悉的工具集。 

Renode能模拟物理硬件系统—包括CPU、外围设备、传感器、环境及节点间的无线媒介。尽管开发你的物联网软件,包括使用你熟悉的流程,基于Zephyr实时操作系统的软件,然后在不同情况下使用Renode进行调试和测试。测试包括跨多个节点的协议和应用程序。你可以在具有完全确定性的联合虚拟环境中运行测试,并控制执行参数。 

例如,在2017年的欧洲嵌入式Linux大会(ELC)上,Renode和Zephyr团队联合展示了一个相当复杂的模拟无线设置。该演示展示了基于两种架构(x86和ARM)的节点且运行于两种不同的RTOS(Zephyr和Contiki)上,演示了采用Renode执行互操作性测试是多么的简单。 

在本文中,我希望重点讲一下重现一个简单的多节点设置有多简单。这个简短的教程能作为你采用Renode和Zephyr进行开发的起点。 

1、  安装Renode

Renode框架托管在GitHub上:https://github.com/renode/renode。你可以使用README文件夹下载并且安装它,但是最简单的方式是通过https://github.com/renode/renode/releases下载二进制发行版。所提供的预编译软件包中,为Linux提供deb和rpm软件包,为macOS提供dmg软件包,为Windows提供Zip压缩包。 

2、  启动Renode

本教程使用Renode的命令行界面,这是与Renode交互的多种方式之一。安装完成以后,运行renode命令。或者,查找Renode.exe二进制文件。一旦Renode启动,你将看到两个窗口:一个是Renode的智能记录仪(你能控制记录什么),另一个用于称为Monitor的命令行接口(CLI)。 

在此CLI窗口中,你可以创建和控制整个仿真环境。 

3、  脚本

虽然你可以交互式输入所有命令,但是把它们组合成可重复应用的Renode脚本是一个很好的想法,这些脚本通常具有.resc的扩展名。这些脚本可用于加载二进制文件,设置启动条件,准备环境,将机器连接到网络以及其它任务。

 本教程使用Renode包中提供的脚本:scripts/many-nodes/quark-c1000-zephyr/demo.resc scripts/many-nodes/quark-c1000-zephyr/quark_c1000.resc。关于脚本的详细信息请查看Renode安装目录中的注释文件(对于Linux、opt/renode/script是默认设置)。 

4、  加载我们的设置

教程设置包括两个英特尔Quark C1000节点,通过SPI与一个TI的CC2520无线模块连接。节点运行基于Zephyr演示的应用、echo_server和echo_client,对目标硬件进行常规编译。(提供的脚本采用在线托管的预编译二进制文件,但是你可以通过在脚本中更改相关的$BIN变量提供自己的二进制文件)。

 Renode中,点在虚3D间中被分配坐标。通过操纵无线媒介或者移动节点的最大范围,我们可以将它们放进或移出彼此的范围,形成不同的拓扑结构,构建各种复杂的路由场景。在这个简单的例子中,节点在彼此的范围内,我们不会移动它们或者使它们丢数据包。

 要运行一个脚本,请使用include命令(或简称为i)和加载脚本的路径,前缀为@符号,像这样:include @scripts/many-nodes/quark-c1000-zephyr/demo.resc 

脚本加载之后,你将看到两个新的终端窗口。这些是为每台机器打开的UART窗口。 

仿真现在已经加载,但是没有启动。你可以使用开启或暂停,以及下一段中讲到的其他命令来控制它。 

简单命令

a)开始及暂停

要控制模拟是否运行,请使用开启和暂停。 

机器

在提供的脚本中,我们使用mach create命令来创建新机器。这会在监控器中切换文本。所有的后续命令都针对当前机器执行。

 要更换机器,请使用mach set命令。使用机器编号或名字,例如:mach set 1或者mach set servername。 

所有的机器能用match命令列出。要清除当前的选择,请使用mach clear。

 b)访问围设备

所有的外围设备都可以在监控器中访问,其中大部分方式和属性都开放给用户。要列出所有可用的外围设备,请使用peripherals命令。 

c)外设方法和属性

要访问外设,你必须提供它的路径。所有的外围设备都在sysbus中注册,所以请使用sysbus.uartB访问第二个UART或者使用sysbus.spi1.radio访问CC2520。在提供的大部分示例中使用sysbus,允许你删除sysbus. Prefix。键入一个外围设备的名字,将为你列出可用的方式、域和属性列表。该列表是自动生成的,并且大部分可访问的成员不是为终端用户所设计。该列表为每种成员类型显示了正确的Monitor语法示例。 

d)其它命令

为了查找关于内置Monitor的信息,请键入“help”并参考文档。运行帮助打印给定命令的帮助

 5、  调试检查

Renode提供很多方法来验证你的应用程序的行为,由于完全控制了环境,你可以通过对仿真应用程序完全透明的方式添加记录日志、挂钩事件,交互式代码调试等。由于这是一个简单的教程,因此只在下面列出少数调试选项,还有很多可用的选项。 

a)        函数名称记录

用程序卡住或运行错误时,检查函数用的跟踪是一个好方法。要在选择的机器中启用函数名称记录,请运行cpu LogFunctionNames true (使用false来关)。由于记录数据的数量可能太多而是无用的,你可以把以特定前缀开始的记录功能进行过滤,例如cpu LogFunctionNames true“uart_ qm_”只记录以uart_或qm_前的函数。 

b)        记录外设访问

如果你的驱动程序不能正确运行,查看与它控制的设备的通信会有所帮助。要启用CPU和UART外围设备间的每次交互日志,请运行sysbus LogPeripheralAccess uartB指令。该功能仅适用于直接在系统总线上注册的外围设备。 

c)        Wireshark

网络流量分析是每个多节点系统中的常见任务。由于Wiresshark是程序员选择的工具,Renode对它的支持既包括以太网也包括无线网络。有多种选项来选择记录哪种接口,但是观察IEEE 802.15.4网络的所有数据的最简单方法是运行LogWirelessTraffic命令。 

这个命令打开一个新的Wireshark窗口。如果关闭它,你可以通过运行host.wireshark-allWirelessTraffic Run重新打开它。

 d)       GDB (GNU Project Debugger)

作为一款流行的调试工具,GDB被用来分析运行于Renode的应用程序,它使用与OpenOCD相同的远程协议,因此它可以很容易地与大多数基于GDB的IDE集成,比如Eclipse。要在Renode中启动一个GDB 存根,请运行pu StartGDBServer 3333 (其中3333是一个示例端口号) ,并通过调用target remote :3333从 GDB进行连接。要开启仿真,你必须在Renode中启动并在GDB中继续。 

你可以使用GDB的大部分常规功能:断点、观察点、步进、读/写变量等,你也可以在GDB使用Monitor命令,将命令直接发到Renode CLI,以避免在两个控制窗口之间进行切换。 

我们希望这个简短的教程能帮助你开始使用Zephyr和Renode,它最近成为Zephyr推荐的开发者工具之一。

地址:https://www.zephyrproject.org/developers/developer-tools/。

在未来的文章中,我们将继续本教程,详细介绍更复杂的无线设置--敬请期待! 

RenodeTM是Antmicro的一个软件开发者框架,Antmicro是一家致力于构建软件驱动物联网系统的技术公司。如果你需要在Renode中实施你的平台及设置方面的帮助,在你的组织中采用持续集成工作流程,与现有工具集成或者构建自定义工具,或采用Renode方式进行物联网系统开发服务集成,请通过邮箱contact@renode.io联系他们。

关于Zephyr

Zephyr 项目是一款小型且可扩展的操作系统,尤其适用于资源受限的硬件系统,可支持多种架构;该系统高度开源,对于开发人员社区完全开放,开发人员可根据需要对该系统进行二次开发,以支持最新硬件、工具和设备驱动程序;该系统高度模块化平台,可轻松集成任何架构的第三方库和嵌入式设备。


出处:中国网
郑重声明:本文仅代表作者个人观点,与物联中国(www.50cnnet.com)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
分享到:
  • 资讯
  • 产业
  • 服务
  • 应用