在过去十年,特别是在最近几年,对如何将“重量级”的主流操作系统(OS),如Windows、Windows CE和Linux用于医疗设备,开发人员的兴趣显著提升。推动因素有很多,如今的医疗设备用户希望医疗设备拥有多个高级接口,并且很多开发人员已经有在台式电脑和服务器上使用这些操作系统和相关工具的经验。就在不久前,如果想要选择一款功能丰富的操作系统,用于嵌入式医疗设备的开发,那么有两个典型的选项:微软Windows CE(有时是桌面Windows本身)或Linux(或其它Unix变体)。
在二者中,Windows CE的优势在于,它是一款完全集成的开发平台,从设备驱动程序一路到应用程序框架。有些开发人员可能不太喜欢Windows CE,但Windows CE可以一种快速而简单且难度最小的方式启动某个项目,这一点几乎很少有人会反驳。CE同样存在不足之处:使用需要支付版税,并且其代码库被微软公司控制。但值得注意的是,后者也会带来一些好处。
Linux和其它Unix变体具有免费和开放源码的优势,但一直以来,若要将它们用于嵌入式设备(尤其是那些配置有高级用户接口的设备),存在很大障碍。 Linux操作系统原本设计用于台式机/服务器,且典型分布包含有很多特性(要占用几兆字节空间和几个CPU周期),但嵌入式系统根本不需要或者极少用到这些特性。因此,一直以来,若要在Linux操作系统中启动某个嵌入式新项目,需要多名开发人员花上几周的时间来创建轻量级(lightweight)软件映像,带有所需的功能子集,并且有附加的供嵌入使用的资源。虽然手动搭建Linux映像可以优化事件,但结果仍然没有被完全优化—有许多用于台式机的重要代码不能被削减,并且它们不能高效地利用存储器、CPU和/或功率。
因此,在过去,要么选择容易上手的专利系统(Windows CE),或是选择需要开展大量工作才能启动的免费和开放的系统(Linux和Linux家族)。
谷歌的Android操作系统进入嵌入领域的时间相对短一些。从根本上讲,Android的目的是在Linux操作系统的基础提供一款功能全面的嵌入式系统框架。总的来讲,Android旨在使Linux /免费软件像Windows CE一样即开即用、易于使用。
谷歌在2007年11月首次发布Android,当时它被定位成一款针对智能手机的操作系统。Android已经取得明显成功:在不到三年的时间里,Android已经成为最流行的智能手机操作系统,全球有一半的智能手机使用Android操作系统。每年有10000万台Android手机进入市场。
开发人员后来迅速地意识到:除了手机之外,Android在嵌入式应用中也大有用武之地。当前的很多嵌入式设备和手机具有很多相同的属性:小尺寸液晶显示屏/触摸屏、丰富的图形用户界面、低功耗处理器、丰富的连接选项(蜂窝、无线、蓝牙,等)、电池供电、等等。
因为要考虑可靠性问题,在采用新技术这一块,医疗设备开发人员一直以来稍稍落后。在等到新技术成熟之后,再将其用于美国FDA监管的设备,这样做很重要。但是Android操作系统是杂交品种:虽然这项技术相对较新,但是Android是以Linux技术为基础的,而经过检验的Linux技术已经在行业中为人所熟知。
Android是什么?
Android是一款完整的操作系统和应用框架,设计用于ARM处理器。
Android在根本上使用的是Linux,但为了将其搭建成一款用于快速开发的完整框架,谷歌从以下多个方面对其进行了升级和扩展:
1. Android内核支持用于实现更高效电源管理的扩展,并对进程之间的通信进行了修改。
2. Android用自己的Bionic替换了Glibc库。Bionic库占用的容量小且速度快,并且Bionic库支持BSD授权而不是GPL授权,从而使用户不需要GPL授权。
3.包括有嵌入应用程序需要经常用到的多个库,如WebKit(网页渲染)、媒体框架、SQLLite和其它库。
4.有一个硬件抽象层,用于定义硬件驱动程序所需要的接口。
5.机器人运行环境,由Dalvik,优化用于嵌入式应用的Java虚拟机和用于应用程序开发的核心Java API组成。尽管Android的“主导模式”是在Java环境下开发应用程序,但也可以用C和其它语言来编写应用程序,然后使用本地开发工具包将其编译成本地ARM代码。
6. Android应用程序框架,用于实现Java Android应用程序的面向对象的标准结构。
Android是开源的,但设计目标是为了将商业开发人员与GPL更好地分隔开。Linux内核在GPL之下,但Android其余大部分的内容以更为较宽松的Apache授权进行发布,允许其在专有和开源开发中使用。简单来说,相比标准Linux,Android让授权变得更加简单和明了。
谷歌还开发了一套非开源的应用程序,包括Android Market和GPS套件。它们主要被用于手机。
要不要在我的医疗设备中使用Android?
给医疗设备选定操作系统,在很大的程度上和为任何其它设备选择操作系统是一样的:我们选择我们认为能够将医疗设备的价值在其生命周期内最大化的操作系统。需要考虑的因素包括:
产品能多快上市?
开发成本为多少?
这一选择将如何影响我们销售商品的成本?
授权费用为多少?
一旦我们的产品推向市场之后,维持技术性成本需要多少钱?
我们对我们的时间/成本估算有多大的信心?
如果是一个医疗项目,则还要包括以下一个额外的问题:
做这个选择,是否能得到一款风险能被病人和用户所接受的设备?
众所周知,医疗器械和其它大多数设备不同,因为医疗器存在重大风险,特别是病人而言。依据医疗设备对病人的危险程度以及FDA认为合理的监管审查力度,FDA将所有医疗设备划分为三大类。
I类设备的风险最小,包括像压舌板、绷带和基本的手术器械。 II类设备具有中等风险,包括心电图机、X光机、血液气体分析器和输液泵。III类设备的风险最高,包括植入式除颤器 ,人工心脏瓣膜和植入式小脑刺激器。
相比主要针对可靠性而设计的更小型、更方便测试的操作系统,重量级操作系统(如Android)基本上更容易出现故障。这倒不是说重量级操作系统必然经常出故障。对于许多设备而言,每年一次重新启动来修复软件锁定就可以了。因此,所以,考虑到重量级操作系统所具有的用户界面更好、上市速度更快以及其它优点,偶尔重新启动带来的不便可以被原谅。但是,对于植入式除颤器来说,每年重新启动一次可能是不行的。
依据通常的经验,Android和与之类似的操作系统适用于I类和II类设备,而III类设备通常需要使用具有高可靠性的更小型的操作系统。当然,每台设备的情况不同。不论是开发何种医疗设备,我们都要充分考虑和了解与操作系统相伴随的风险。
一个用于获得“两全其美”的方法是将处理任务分成两部分:用一个采用高可靠操作系统的处理器来执行核心功能,用一个采用重量级OS的处理器来处理没那么重要的任务。输液泵就是一个例子,一个采用高可靠性操作系统的处理器在输液过程中控制电机,而另一个运行Android的处理器则运行GUI、通信,等等。请注意,用到两个处理器的解决方案并不是一个立竿见影的灵丹妙药。需要充分考虑和详细规划。要确保医疗设备的安全性和可测试性。
用户众多的优势
如果你所设计的嵌入式设备选择使用Android,那么有成千上万部手机所运行的Android堆栈和你的嵌入式设备所运行的Android堆栈,在本质是相同的。有大量的用户在查找Android操作系统的漏洞,同时有庞大的开发社区致力于修复这些漏洞。尽管Android的可靠性不如轻量级专用操作系统,但和从零开始开发Linux堆栈相比,Android是一款经过彻底调试的系统。此外,目前有超过10万款支持Android的应用程序,其中有很多程序可以简化和加速开发过程。这就是说,Android开发并不是很复杂,有庞大的开发人员群支持Android。
对于那些对软件可靠性要求不高,且价格可以支持所需硬件的医疗设备,Android具有很强的竞争力。它在功能、资源需求和生产力之间做了很好的平衡,并且具有以规模庞大且繁荣的Linux产业链为基础的额外优势。