物联网(IoT)是一个跨越很多行业的技术发展趋势,包括可穿戴设备、智能电表、智能家电及汽车等设备。随着大家对联网设备及其提供信息的依赖不断增加, 服务时间、可靠性等因素对其成功和整个物联网生态系统起着关键作用。智能家电及车载信息娱乐音响主机代表了一大类同时需要互联性和高度可靠执行性的物联网系统。
智能家电如洗衣机有一个丰富的用户界面(UI),能够处理任何数量的指令。该设备可以通过智能手机进行遥控,连接输电网络,定点在电费比较便宜的非高峰时段洗涤。当然洗衣机必须能够很好、很可靠地执行一项功能 -- 洗衣功能。工业系统有更加严格的实时控制要求,保证实时控制和其他重要操作能够独立于更高级别的功能运行,这点很重要。
汽车行业也在投资联网汽车,如收集远程信息处理数据以及通过可更新和可下载的应用程序(Apps)提供车载信息娱乐系统(IVI)来满足消费者的期望。汽车制造商面临大量的审查以确保车载信息娱乐系统是安全的。应用程序下载不能干扰车载信息娱乐系统更关键的功能, 如后置摄像头的视频。在这种情况下,像 Android 操作系统可能是提供应用程序的可行性选择,而车载信息娱乐系统的核心系统可基于 Linux 平台。类似的通用操作系统工业环境还可能包括一个实时操作系统(RTOS)实行关键的实时控制功能,而 Linux,即通用操作系统(OS),可提供用户界面和监督数据通信。
在实时操作系统下通过使用 MMU/MPU 实现代码模块独立
一个实时操作系统与一个独立的模式,如 Mentor Graphics 的 Nucleus 实时操作系统,能够利用可在诸多系统芯片设备上应用的内存管理单元(MMU)来独立和保护代码模块。图1说明了实时控制任务如何可以共享内核的受保护存储区,而其他软件任务分为各自的受保护存储区。互联功能和远程更新共享相同的区域,而用户界面和其他应用程序任务被分配到另一个独立区域。独立应用子系统的方法可防止互联功能或用户界面应用子系统破坏内核或者实时控制操作。
用一个进程模式分离连接性和远程更新的控制。
使用实时操作系统优于通用操作系统的一个好处就是其内核的实时特性。实时操作系统提供严格的实时调度,保证优先级任务的运行。进程模式实时操作系统能保证确定的实时调度,并增加了存储保护。存储保护并不改变任务的优先级和系统反应。图2显示了应用程序(任务7)和远程更新任务在分开的独立存储区域能够在同一优先级执行而控制和连接任务可在更高的优先级执行。这在很大程度上有别于通用操作系统中程序的执行方式。在受保护的实时操作系统环境下, 开发人员可以自由地调整任务的优先级,而无需将其合并到一个共同的存储区域。
基于实时操作系统的进程模式还允许进程模块(一个共同的独立存储区域内任务和库功能的集合)在系统运行时不断加载和卸载。这除了能明显更新系统外,还可以允许开发人员不断地重新配置设备,使其具备不同的操作模式,切换不同的任务分离和优先级配置。
通过类型1的虚拟机 Hypervisor 实现多 OS 系统的应用
在今天嵌入式设备中具备的多核处理器可提供更强大的处理能力和连接选项。这些设备使多个操作系统的整合成为引进互联性的可行安全方法,同时确保更重要的功能的执行。即使是在非常注重安全的行业,如汽车业,消费者现在也期待车载信息娱乐系统可提供智能手机和平板电脑所具备的应用程序。
在物联网和车联网出现以前, 安全性和可靠性是通过物理分离实现的,通过同一或独立的面板上多个单独的处理器以确保设计的稳健性。有了现在的整合的嵌入式系统,引入连接性的一个推荐的方法是使用多个操作系统,由类型1 Hypervisor 实行分离,实际上分离和虚拟化设备资源,确保必要的汽车功能优先于连接应用程序的功能。
图3说明了一个 Hypervisor,如 Mentor Graphics 的 Hypervisor,如何被用于汽车信息娱乐系统,该系统的连接应用程序功能是 Android 的而其他车载信息娱乐系统则是基于 Linux 的。
一个 Hypervisor 不仅仅是如图3所示的简单分离,它还提供了一种机制限制周边设备进入特定的应用程序域。就车载信息娱乐系统而言,我们可能想要限制对车载 CAN 总线的使用,只允许车载信息娱乐系统接入CAN数据,而联网的 Android 应用程序接入数据只能通过进程间通信(IPC)和基于 Linux 车载信息娱乐系统应用程序。同时,我们想要 Linux 和 Android 都可以使用 本地的记忆卡查看媒体文件。图4说明了一个 Hypervisor 如何允许我们直接映射及准虚拟化外围设备。这使得开发者能够限制访问CAN总线及实现如记忆卡等其它资源的共享。
用一个Hypervisor来分离和共享外围设备。
在真实场景中测试可靠性
到现在为止我们已经说明了设计物联网系统的两种可能的方法,实时操作系统的使用和类型1 Hypervisor。当然多种不同的变更和理想的方法还要取决于具体的设备。然而所有连接系统都会受益于某种程度的测试以确保其实地操作的正确性。对连接设备的自动化安全峰值测试和压力测试就是一个例子,说明协议栈或过程控制功能的失败是可以检测的。此外,设备的功能性健康是可以在模拟攻击中确定的。应该执行的其他测试包括发送无效或分散的数据包,执行测试框架,探测已知的软件栈的漏洞。执行这些测试可以增加连接设备在实际应用中的鲁棒性。
可更新性设计
移动设备的用户熟知需经常性升级设备,修补漏洞,添加安全更新或增加设备性能 -- 所有这些都毫不费力地通过“空中下载技术”来完成。基于实时操作系统的进程模式和使用类型1 Hypervisor 都能促进嵌入式系统的设计,该系统可以一种安全的方式通过空中下载技术实现更新。通过分离可不断加载和卸载的应用子系统,这两种方法可随着时间的推移更新特定子系统,修复漏洞或在开发和实际应用时解决可靠性问题。
结论
物联网设备的广度和相关功能经常需要开发人员集成来自多种途径的代码,包括国内的,商业的和开源的。所有这些都会增加对物联网(IoT)联网设备的灵敏度和可靠性的负面冲击。使用包含进程模式的实时操作系统来分离应用子系统和使用类型1 Hypervisor 来整合多个操作系统对于在应用程序和系统中引进互联性是有效途径, 因后者在执行过程中需要较高水平或可靠性。
除了选择合适的系统架构和技术方法,设计师还必须及时添加额外的测试来确保正确的操作,考虑设备的整个操作生命周期,具备快速,无缝,尽可能轻松地更新设备软件的能力。
作者简介
Kamran Shah 是 Mentor Graphics 嵌入式软件部市场总监。他充当多个技术角色,包括产品营销,产品管理和研发。在他的整个职业生涯中,Kamran 引领了嵌入式系统开发领域的创新,包括异构目标 、 软件定义无线电系统和基于云的开发工具和服务。Kamran 获得了15项专利,于1999年毕业于德克萨斯 A&M 大学,取得计算机工程学士学位。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !