《嵌入式操作系统史话》之二:嵌入式OS 的“摩托”系
扫描二维码
随时随地手机看文章
靠摩托罗拉起家的OS-9
摩托罗拉自1974年发布第一款MC6800 --8位微处理器到1979发布的MC68000(简称68K)-16/32位CPU之后,其芯片因为即可以使用在计算机系统中,也可以使用在嵌入式系统,很快成为当时行业的标准。最早开发嵌入式OS的公司,许多都是借助摩托罗拉的市场起家的, 比如VRTX(Reday System公司开发-- 后被Microtec Research公司收购),Psos(ISI公司开发-后被Windriver公司收购),LynxOS等,其中OS-9 (Microware公司开发)的经历值得特别说一说。
OS-9 是一个实时、基于进程、多任务和多用户的操作系统,它很像Unix的一个实时版本(类似技术的嵌入式OS还有LynxOS和QNX等)。OS-9的开发始于80年代初,最初是支持MC6809 微处理器的一个称为BASIC09项目,后来随着MC6809支持64KB存储器扩展到2MB,OS-9组件逐渐丰富起来,比如GUI,这使得它不仅使用在摩托罗拉的寻呼机上,见图1所示,还应用在一些早期个人电脑上,比如TRS-80 Color Computer(俗称CoCo)见图2 所示。这样的OS和图形技术在当时还是非常领先的『2』 。
图1:基于OS-9 的摩托罗拉寻呼机(图片源自嵌入式系统编程杂志)
图2:基于MC6809/OS-9的CoCo计算机
OS-9在80年代初开始支持68K,80年后期重新改写成方便移植的内核(基于C代码),该内核可以广泛的支持X86,PPC、68K、MIPS和ARM。
OS-9 内核在结构上很有特色,既不是微内核(它的效率要更高),也不是单片结构(它的架构更加安全和可靠)。OS-9的内核、文件、驱动和应用都是OS-9的一个单独逻辑存储模块。每个模块由自己单独的头、数据/代码和CRC。这样这些逻辑模块很容易在保证高可靠性基础上动态的创建和维护。
OS-9 支持POSIX 的线程和API,因为具备实时性和Unix 应用兼容性这2个特点,OS-9在支持摩托罗拉VME和CPCI总线的工业计算机方面更具有特色。
2001年Radisys (一家北美的工业计算机公司)收购了Microware,它希望提供一站式的解决方案,比如提供与Intel 合作的网络处理器IXP1200 的解决方案等。但是因为没有长期的发展策略和资金支持,OS-9的发展和技术服务在后期基本处于停滞状态,2013年3家Microware经销商用从Radisys 手里购买了OS-9的资产,成立了Microware LP,继续为OS-9用户提供技术支持和服务『3』。
提供完整方案的飞思卡尔
2003年飞思卡尔从摩托罗拉独立之后,一直致力于提供一站式解决方案,飞思卡尔不仅继续加大力量与著名的嵌入式OS公司合作,比如Montavista的嵌入式Linux和风河公司的Vxwork RTOS,还自己投入人力成立软件研发中心,专门负责开源Linux 在PowerPC芯片移植和优化工作。2004年飞思卡尔在通讯基站上大量使用的StarCore DSP芯片上推出了免费SmartDSP OS软件套件,套件内包含了CodeWarrior IDE(该工具产品也在若干年后被飞思卡尔收购)『4』。
今天许多用户都会在使用飞思卡尔MCU的时候,看到了或者使用到一个MQX的RTOS。它原来是Precise 软件技术公司1989 年开发的一款RTOS,与OS-9技术路线不同,它是一款微内核的RTOS,它具备多任务可抢占特性,经过裁剪可配置为低至6KB 的ROM。除了内核外还有文件、TCP/IP和USB模块等组件,支持68K、Coldfire、PPC、ARM等CPU。MQX以率先采用开放源代码和免版税商业模式在业内著名。2000 年MQX 被ARC 公司收购(一家销售可配置处理器核的公司)。
2009 年飞思卡尔收购了MQX,并在官方网站上提供开放了其源代码,使其成为开源RTOS,并允许用户可以在基于飞思卡尔的芯片上免费使用这个软件。MQX 的应用主要是面向智能电子系统『5』。今天,你在购买飞思卡尔半导体的MCU开发板的时候,你将可以免费获得包括已经优化好的MQX RTOS和CodeWorrios的IDE开发工具,不仅帮助降低研发和生产的成本,还加快了产品上市的时间,这对用户来说都是一大福音。
参考资料:
『1』 Motorola 维基百科http://zh.wikipedia.org/
『2』 http://en.wikipedia.org/wiki/OS-9
『3』 http://www.microware.com/
『4』 Rober Oshana DSP for Embedded and Real-Time Systems Newnes 2012
『5』 MQX维基百科http://zh.wikipedia.org/