嵌入式系统 Linux
Fujitec 是一家全球制造商和供应商,提供全系列的电梯、自动扶梯和其他垂直运输设备。我们几乎所有的产品都以某种形式或其他形式使用嵌入式计算机。为了了解其影响,需要注意电梯业务的一些特点
产品的寿命非常长,大约为 20 年或更长。
电梯服务的安全性和可用性是用户的决定性因素,特别是对于中高层建筑。
在整个生命周期内持续的服务和维护至关重要;通常,法律甚至有此要求。
为了满足长期、无中断服务和嵌入式计算机的可维护性要求,我们最近开始研究使用免费提供的 Linux 操作系统和 GNU 工具的可能性。
过去,我们已经出货了几款使用 Linux 的产品。这里我们将仅介绍其中一款产品——用于群控器的监控显示器(见图 1)。
另一个应用,用于编辑电梯轿厢内滚动消息的用户界面系统,如图 2 所示,但我们没有空间详细介绍。(请注意日文字符——Linux 在日本也能很好地工作。)
为了从整体上了解情况,我们需要了解一些关于电梯的事实。如果一栋建筑有 2 部或 3 部以上的电梯,它们通常以群组方式工作,共享客流量。一组电梯连接到“主管群控器”,该控制器在用户之间共享每部电梯的服务,同时试图让每位用户都感觉自己拥有私人电梯。
现代电梯群控器相当复杂;它必须实时运行困难的最优调度算法。最新的 Fujitec 型号使用神经网络进行在线学习和优化。如果没有合适的工具,执行安装和测试任务的支持人员将无法理解电梯群组正在发生什么。
对于维护检查、升级和偶尔的故障排除,GSP(群组监控面板)具有图形显示器,显示电梯的状态。此监控显示器是我们第一个 Linux 应用的目标。
图 1 显示了监控显示器的图形屏幕。每部电梯的信息,例如当前楼层、行驶方向、门状态、已注册的呼叫等,都用图形符号表示。此屏幕设计经过多年的发展,现在我们的技术和维护人员都非常熟悉。
我们使用定制设计的组件构建了大部分原始监控显示系统
带有定制图形软件的定制图形板
与我们的时序控制器、CPU 板通用的控制软件
使用我们专有协议的串行接口,用于与群控器通信
多频 VGA 显示器(唯一的商业部件)
选择这些组件是为了给我们带来以下优势
在电梯、机房环境中独立运行
实时响应
长期供应和维护
低成本
即使我们看到了定制设计方法的几个问题,并希望转向成熟的、流行的平台,但在最近之前,这还是不可行的。
对于硬件,我们的首选将是 IBM 兼容 PC,可能是 PC/104 卡的形式。然而,主要的商业操作系统(首先是 DOS,然后是 Windows)由于许多原因而不适用。它既不具备实时能力,也不可靠,而且特定版本不可能从其供应商那里获得长期支持。
尽管有很多替代方案,例如优秀的 Lynx OS,但它们都不能满足我们所有的要求,尤其是长期稳定性和可用性标准。
随着 Linux 的出现,这一切都改变了。
在过去的几年中,Fujitec 的几位工程师开始熟悉 Linux。虽然我们最初只是将其作为一种爱好,但 Linux 的更广泛适用性逐渐对我们变得清晰起来。
我们采用 Linux 进行产品开发的动机有几个方面
系统完整源代码树的可用性,没有任何使用、分发或修订的限制,对我们至关重要。它可以确保我们有某种方法在 5 年、10 年、15 年...后的站点维护我们的系统。如果我们想用商业系统保证同样的事情,这很容易变成一场噩梦。我们可以想象,当我们在 2010 年(如果供应商仍在营业)向他们询问 1997 年系统的错误修复时,他们会目瞪口呆地盯着我们。但是,当我们拥有源代码时,维护就变成了“困难”而不是“不可能”,就像使用内部定制系统一样。
额外的好处是免除了某些专有操作系统的基于版税的许可系统的管理;更不用说节省的许可费了。
多年来,我们一直使用 Unix 进行系统开发。在 PC 平台上使用其他系统经历了一些相当令人沮丧的体验之后,我们的开发人员非常渴望回到类 Unix 环境。
即使在 Unix 系统中,Linux 也感觉独一无二:它轻巧、快速、几乎可以在任何平台上运行,包含所有自由软件的最新版本,并且现在非常引人注目,甚至非计算机人士也开始谈论它。回到主流感觉真好。
然而,并非一切都尽如人意。由于 Linux 本质上是 Unix,因此在我们可以将其部署在嵌入式控制器中之前,需要修复一些问题。
理想情况下,我们希望使用基于 ROM 的系统,例如 D. Bennett 在 1997 年 1 月的Linux Journal文章“从 EPROM 启动 Linux”中描述的系统。然而,在我们的案例中,我们需要 X11、Tcl/Tk、库、字体等,因此我们不得不使用基于硬盘的系统。这意味着我们必须考虑磁盘缓冲区刷新、清理和混乱关机后的恢复等问题。
Linux 不是一个“硬”实时系统,尽管人们已经在致力于实时补丁。(请参阅 M. Barabanov 和 V. Yodaiken 在 1997 年 2 月的Linux Journal文章“介绍实时 Linux”。)对于我们当前的应用,这并不是直接的问题,但如果我们希望 Linux 控制电梯轿厢,我们将需要保证的响应时间。
安装必须做到万无一失,特别是对于重新安装或升级。我们发现我们定制的程序有效,但仍需要改进。
图 3 显示了监控系统的顶层框图。我们正在使用带有 XFree86 用于图形的 Slackware 3.0 发行版。应用程序使用 GNU C 编译器(版本 2.7.2)编译。在另一个应用的部分,我们还使用 Tcl/Tk 作为我们的图形用户界面 (GUI)。
许多软件部分,尤其是 X11 图形,都是从我们现有的 Unix 应用(在 SunOS 4.1 下)移植过来的,没有任何问题。我们的大部分劳动都花在了文件系统问题上,以使系统可安装且稳定。
我们的设计基于 UMSDOS 文件系统,该文件系统驻留在 MS-DOS 兼容的主机文件系统之上,例如 Microsoft Windows。决定使用 UMSDOS 考虑了预装 Windows 系统的普及这一现实。虽然在 Linux 启动并运行后通常不会使用 Windows,但我们不希望完全删除它或给 Linux 自己的磁盘分区。
使用 UMSDOS,整个 Linux 系统从 Windows 方面看起来像一个 MS-DOS 目录树。这一事实使我们可以选择从 Windows 进行安装和一些受限制的文件维护,使用 CD-ROM 或软盘。然而,我们发现从软盘启动 Linux 并通过以太网链接将系统流式传输到硬盘更快更简单。网络安装对于台式 PC(使用 D-Link 袖珍适配器 DL620)和笔记本电脑(使用 Megahertz (US Robotics) PCMCIA 网卡)都完美无缺。
我们用于制作安装软盘的代码,每个软盘分别用于服务器(主机)和客户端(目标)机器,可以通过匿名 ftp 在 ftp://ftp.linuxjournal.com/pub/lj/listings/issue41/0133.tgz 获取。通过从软盘启动两台联网的 PC 并回答几个关于 X11 驱动程序、显示器尺寸等问题,安装几乎完全自动化。由于我们有这些软盘,带有我们应用的 Linux 文件系统可以从一台 Windows PC 克隆到下一台。
除了安装之外,我们系统的一个主要问题是硬盘的崩溃恢复。由于我们无法保证有序关机,因此我们必须处理“断电”式关机后的清理工作。我们使用以下技术
对磁盘的写入受到限制;大多数部分都设置为只读,并且没有交换文件。
在启动时,rc.local 脚本在可写目录上运行 umssync 程序,以修复可能的不一致性。
自动删除先前运行中可能产生的垃圾。
对于紧急重新安装,硬盘上维护了完整 Linux 系统的第二个干净副本,它用于手动替换损坏的系统。
将来,我们将使用 RAM 磁盘用于临时文件,并且我们希望最终将系统装入 EPROM。
我们已将系统安装在笔记本电脑和台式计算机上。对于笔记本电脑,DSTN 彩色显示器的视角相对较窄,但可以使用。
该系统已内置到群控器面板中,并在现场条件下进行了测试。我们还在研究实验室中进行了测试,方法是将其连接到电梯模拟器,该模拟器模拟重负载:8 辆电梯,32 层楼,所有电梯都在不断移动。所有这些都证明对我们的系统来说是一项相当容易的任务。串行接口、图形或监控数据的日志记录都没有问题。在最重的负载条件下,我们可以登录系统并运行其他程序,甚至重新编译应用程序,而不会对性能产生任何影响。响应是即时的,并且很明显,该平台可以处理更苛刻的应用。
我们测试了断电和恢复能力,并检查了系统可以承受几乎任何滥用。
作为未来的发展方向,我们正在考虑一个具有 ROM 中的启动/根文件系统和只读挂载硬盘的系统,用于大型应用程序和库。由于我们希望在硬盘上放置一个普通的 Linux 文件系统,因此我们需要开发内核补丁,让系统从小型根文件系统启动,并在初始化期间切换其部分(/bin、/lib 等)。
最终,我们希望将我们的测试扩展到工业级 PC 系统,并检查 Linux 在严格环境条件下持续运行的可用性。这将为将更关键的监控、安全和控制任务转移到 Linux/PC 平台开辟道路。
Sandor Markon 毕业于布达佩斯技术大学,并获得京都大学电气工程博士学位。自 1979 年以来,他一直在日本大阪的 Fujitec 工作,从事电梯控制的计算机应用。目前的兴趣包括神经网络、强化学习、使用 Java 进行互联网编程以及自由软件的工业应用。可以通过电子邮件 markon@rd.fujitec.co.jp 与他联系。
Kenji Sasaki 毕业于京都大学工学部。自 1976 年加入 Fujitec 以来,他主要从事控制、系统开发和通信工作。目前的兴趣包括 Java、Linux 和互联网。可以通过电子邮件 kjsasaki@rd.fujitec.co.jp 与他联系。