首页  产品资讯  解决方案  技术支持与服务   走近中嵌   联系我们  

32 位嵌入式系统——IT 从业人员的机遇与挑战

嵌入式实时操作系统应用分析
 
 

32 位嵌入式系统 ——IT 从业人员的机遇与挑战

作者:李驹光
 

     近几年来,随着人们对嵌入式设备越来越高的应用需求,以 32 位嵌入式微处理器和嵌入式操作系统为核心的嵌入式技术逐渐深入到各个应用领域,虽然以 8 位机为代表的低端嵌入式技术也在不断的发展,但由于其体系架构的局限性,已无法满足当前和未来高性能嵌入式系统的应用与发展需求。同时,激烈的市场竞争和技术竞争,要求产品的开发周期越来越短,显然,传统的嵌入式软、硬件技术和开发手段已远远落后于时代的需求。

1 、我国嵌入式技术及应用现状

     自上个世纪七十年代提出嵌入式系统的概念以来,嵌入式系统以其高性能、低功耗、低成本和小体积等优势,获得了飞速的发展与广泛的应用,然而,由于受到当时硬件水平的制约,嵌入式系统的软件开发方式与以 PC 为代表的通用计算机系统的软件开发方式一开始就完全不同。当时的嵌入式系统硬件平台一般都是基于 8 位机的简单系统,系统的硬件设计者通常也是系统的软件开发者,编程语言绝大多数也以汇编语言为主,硬件设计者在进行硬件系统的设计时,同时会考虑程序如何编写,而在进行程序设计时,也会考虑与硬件的配合,因此,嵌入式系统的设计开发人员一般都非常了解系统的底层软、硬件细节。

     由于软、硬件条件的制约,这些系统一般都用于实现一个或几个简单的数据采集与控制功能,程序结构多使用简单的控制循环,配合中断服务来实现对外界请求的相应,不采用操作系统,所以,系统开发者对通用计算机基于操作系统的软件开发工具和技术的理解与掌握比较有限。而与此同时,另一大批人则对以 Microsoft Windows 、 Linux 为代表的操作系统技术深深着迷,醉心于在这些操作系统上的应用程序开发,他们感兴趣的东西是如何使用诸如 VB 、 VC 、 Java 之类的高级编程语言,在操作系统平台上实现更复杂和更精彩的应用,而不太关心系统的更多的硬件细节。传统的观点一般将前者归类为硬件开发人员,而后者通常被称之为软件程序员。这两大群体在很长一段时间几乎也是井水不犯河水,各自有着不同的开发应用领域。
    然而,随着计算机软、硬件技术的飞速发展和人们的应用需求越来越高,特别是随着以 ARM 、 PowerPC 、 MIPS 等为代表的高性能嵌入式微处理器普遍使用,使传统意义上的嵌入式系统的概念发生了很大的变化。以基于 8 位机的嵌入式系统为例,当应用系统随着需求的增加变得越来越复杂、使用范围变得越来越广泛时,系统每增加一项新的功能,都会带来应用软件结构的变化,甚至需要完全重新设计,而这种问题在基于操作系统的通用计算机上就小得多,显然,没有操作系统的支持已经成为传统的嵌入式系统的最大的缺陷,但由于 8 位机系统有限的运算能力和存储容量,不足以支持操作系统的运行,因此,在很长一段时间以来,人们尽管已经意识到这个问题的存在,但也没有更好的解决办法。
     自上个世纪九十年代以来,嵌入式系统的设计提出了 “ 片上系统 ” ( SoC , System on Chip )的概念,目前,嵌入式系统的硬件设计已进入以 SoC 为核心的阶段,显然, SoC 为高性能的嵌入式系统开发的提供了功能丰富的硬件平台,而这些平台强大的运算能力和存储能力,足以支持复杂嵌入式操作系统( EOS , Embedded Operating Systems )的运行。
     嵌入式操作系统的发展是伴随的嵌入式微处理器性能的不断提高而逐渐发展起来的,最近几年来,嵌入式操作系统的应用领域不断扩大,其原因主要是嵌入式系统软件开发复杂度的增加,同时,高性能的嵌入式微处理器的推广使用,为嵌入式操作系统的可靠运行提供了硬件平台的保障。目前,在嵌入式系统中使用的操作系统种类也非常繁多,其中,市场份额占有比较高的有 Linux 、 Windows CE 、 VxWorks 、 QNX 、 eCos 、 uC/OS II 等。嵌入式操作系统主要可分为两大类,一类是商业级的嵌入式操作系统,这类操作系统一般都经过较长时间的使用,且都由一些大公司开发与维护,在性能或服务上都有较好的保证,如 Windows CE 、 VxWorks 、 QNX 等,但这类操作系统一般价格比较昂贵,且都不公开核心代码,这就与嵌入式系统用户定制性较强、升级换代快等特点相违背,因此其应用范围受到了很大的限制。另一类则是源代码开放的嵌入式操作系统,如 Linux 、 eCos 、 uC/OSII 等,尽管这类系统在技术支持和服务上有所欠缺,且对开发人员有较高的要求,但由于用户可定制性好、具有可持续开发的优势,从目前看来,其应用范围反而比商业嵌入式操作系统广泛得多。

2 、 IT 从业人员面临的机遇与挑战

     随着信息技术、网络通信技术的高速发展,嵌入式技术会深入到越来越多的应用领域,与实际应用紧密结合且技术高度分散的嵌入式技术,为我们国内一大批优秀的硬件系统工程师和软件设计人员,提供了新的舞台和发展空间,同时也为我国的 IT 技术发展提供了难得的历史机遇,因此,提高我国整体的嵌入式技术开发与应用水平,掌握一定的核心开发技术,既是我国 IT 技术发展的需要,也是广大 IT 从业人员的责任。
     众所周知,任何一门技术的发展,人才的培养是关键,嵌入式技术的发展也不例外。对于我国嵌入式人才的培养,一方面可以充分利用我国的高等教育资源,在工科高校的相关专业加强嵌入式系统的教学,为我国嵌入式技术的发展提供大量优秀的后备人才,而另一方面,鉴于目前我国有一大批高素质的 IT 从业人员,他们通过一定的培训和学习,就可以很快成为嵌入式技术开发的主力军。从目前的情况看来,我国 IT 人员结构不太适合嵌入式技术发展的需要,即精通低端 8 位系统设计开发的应用技术人才和纯粹的软件编程人员相对过剩,而真正掌握软硬、件技术相结合的高端 32 位嵌入式系统开发的人才却比较少,整个 IT 从业人员的结构呈两端大、中间小的哑铃结构。
    如何在较短的时间内解决我国高端嵌入式人才缺乏的现状?笔者认为,比较行之有效的方法是除了加大在工科高校培养嵌入式应用人才的力度以外,更主要的是注重对现有 IT 从业人员的转型,由于他们都有多年的 IT 从业经验和较高的专业素养,很快就可以成为行业应用的骨干力量。但目前的实际情况是,绝大多数的 IT 从业人员还没有认识到转型的必要性或对自身转型的是否成功没有太大的把握。在笔者所接触的 IT 从业人员中,持此种观点的人非常多。
     对于传统的 8 位机硬件工程师,他们一般都具有较深厚的硬件功底,有丰富的开发与应用经验,对微处理器的结构有比较深入的了解,同时也具有相当的底层软件开发技能,他们的这些优势,在 32 位高端嵌入式系统的设计与开发中也是必须的,因此,对于他们来说,转型所面临的问题,从很大程度上讲还不是技术层面上的,而是对嵌入式技术发展趋势的认识问题。有相当一部分工程师并不认为在嵌入式系统的设计中,推广使用 32 位高性能嵌入式微处理器是必要的,甚至在一些比较复杂的应用中,还坚持使用 8 位机完成,一片不行用两片,两片不行用四片 … ,导致在以往的嵌入式设备中,复杂的多机系统比比皆是,这样的系统,无论是从软、硬件开发的复杂度、可靠性,还是从系统的性价比方面考虑,都是不尽如人意的。还有一部分工程师也尝试将 32 位高性能嵌入式微处理器应用到自己的设计中,但由于对嵌入式操作系统及应用软件的开发过程了解得不够深入,不太愿意使用嵌入式操作系统,软件的开发仍然采用传统的 8 位机开发模式,显然,这样的开发模式不但不利于实现复杂的应用功能,同时也没有充分发挥 32 位高性能嵌入式微处理器的固有优点,因此,对于传统的 8 位机硬件工程师来说,设计方式的转型,从很大程度上是思想的转型,而跟踪嵌入式技术的最新发展方向,及时更新自身的知识结构,并不需要花太大的代价。
    而对于传统的软件设计人员来说,他们一般都具有比较深厚的应用程序开发能力,对软件开发流程、软件质量保证等,也有较深入的了解,但他们对系统底层硬件结构的认识就相对欠缺,同时,随着高级应用开发工具的不断发展,他们几乎已经完全不关心系统的硬件结构了,因此,他们对嵌入式应用系统的软件开发有一种排斥的心态,对自身是否能进行这方面的工作持怀疑态度。但由于目前基于 32 位高性能微处理器的嵌入式系统无论是从运算能力、还是存储能力,都足以支持一个复杂现代操作系统的运行,正是操作系统的引入,使得嵌入式系统的应用程序开发与通用计算机平台的程序开发有很大的相似之处,也给广大的传统的软件设计人员提供了新的舞台和发展机遇。但是,嵌入式应用的开发又不完全等同于纯粹应用软件的开发,需要和底层硬件联系,因此,要求软件开发人员必须具备一定的硬件知识,对硬件系统的工作原理有大致的了解。以目前广泛使用的嵌入式操作系统 Linux 为例,嵌入式 Linux 的内核与运行于通用计算机平台的 Linux 具有完全一致的内核版本,运行于通用平台 Linux 上的应用程序,只需要修改与硬件相关的代码,就可以直接移植到嵌入式系统中运行。

3 、共同努力,促进我国嵌入式应用水平提高

    笔者多年来一直从事嵌入式系统的教学与研究工作,也经历了一个对嵌入式系统的软、硬件开发从 8 位系统到 32 位系统的认识与转型过程,在今后相当长的一段时间内,我国的高端嵌入式应用人才还会比较缺乏,因此,如何让目前的一部分 IT 从业人员、特别是软件开发人员向嵌入式应用领域转型,具有重大的意义。

    让我们共同努力,促进我国嵌入式应用技术水平的提高。

 

嵌入式实时操作系统应用分析

作者:吴金华
 

     随着 EOS(Embedded Operation System, 嵌入式操作系统 ) 在工业控制领域内的广泛应用,操作系统的实时性成为一个日益被关注和重视的问题。当前主流的 EOS 一般可分为两类, 一类是商业级的嵌入式操作系统,这类操作系统都由知名公司开发与维护,在技术支持与服务上都有较好的保证,如 VxWorks 、 QNX 、 WinCE 等,但这类产品一般使用许可证比较昂贵,且不公开核心代码,这就与嵌入式设备的用户定制性较强、升级换代快等特点相违背。另一类则是逐渐兴起的源码开放的嵌入式操作系统,如嵌入式 Linux 、 eCos 等,由于这类系统具有用户可定制性好、费用低廉等优势,从目前看来,它们已成了嵌入式操作系统应用的主要推动力。

•  嵌入式 Linux 操作系统

     嵌入式 Linux 系统是标准 Linux 在嵌入式领域的延伸,其特点和功能与标准 Linux 几乎完全相同。 Linux 系统的稳定性和健壮性已经在真实世界中得到了证明,在工业控制领域也有许多非常成功的应用。但是,在针对一些有较强实时性要求的特定工业应用中, Linux 系统仍然暴露 出 了许多技术缺陷。其主要原因是因为 Linux 系统起初是为 PC 开发的,在功能和性能选择上更多的兼顾了 PC 应用的特点,追求系统的功能完备性和整体性能最优。这一点在 Linux 系统的调度策略上表现的尤为明显,如任务之间采用的是基于 分时技术 ( time-sharing ) 的调度策略,而且不支持内核态抢占式调度,这样系统就无法保证紧急任务总是会被优先执行,且调度延迟不确定,是随机可变的。

     因此,有相当多机构和公司都在研究如何提高 Linux 实时性能,并取得了一些富有成效的成果。同时,开源社区也做着同样的事情,那就是 Linux 2.6 版本的开发。开源社区采用的实时化思想是直接对 Linux 内核的调度机制和算法进行修改和优化。 Linux 2.6 内核开发大约是从 2001 年开始,经过三年左右的开发,在 2004 年发布了稳定版本,经过了这几年的测试与改进,已经在桌面 PC 和服务器领域内得到了大量使用,在嵌入式系统上的应用也在不断发展中。 Linux 2.6 版本中与实时性相关的改进主要体现在以下几个方面。

⑴ 调度计算的分散性。 2.6 版本中采用了由 Ingo Molnar 实现的调度算法,该算法将进程优先级的计算分散在多处进行,而不是集中在一个统一的调度函数中,这样不仅提高了计算效率,还减小了 CPU 因集中调度计算所消耗的时间,并且使调度器的时间开销是与系统负载无关,是 O(1) 恒定的。

⑵ 抢占式内核的支持。 2.6 版本中提供了对抢占式内核的支持,而 2.4 内核是不支持内核抢占的。支持抢占式调度是实时操作系统的标志之一,这也是早期 Linux 系统应用于实时应用时最为诟病的地方。

⑶ 系统同步机制的改进。 2.6 内核中则对系统中同步机制的使用进行了优化,大大减小了因同步机制引起的时间消耗。

⑷ 更细的时间粒度。在 2.6 内核中,定时器的频率被定义为 1000Hz ,而 2.4 内核中为 100Hz 。

     虽然, Linux 2.6 系统仍然不是严格实时系统,但它的实时性能得到了很大提高却是个不争的事实,有关文献采用统计的方法对 Linux 2.6 和 2.4 内核中任务响应和中断响应的进行了 310 万次测试,然后对平均响应时间和最坏响应时间进行了对比,下图 (a) 和 (b) 给出了时间比较结果。从结果可以看出 2.6 内核的实时响应能力要远高于 2.4 内核,差距至少在十多倍以上。这一结果更增强了用户将 2.6 内核应用到各种非严格实时应用中的信心。

        

                  a 平均响应时间                                                              b 最坏响应时间

     中嵌科技多年来一直关注 Linux 系统在工业控制领域的应用,所提供的全系列嵌入式产品已全部支持基于 2.6 内核的嵌入式 Linux 系统,并针对不同工业应用的实时性要求进行深入的应用研究。

•  eCos ( Embedded Configurable Operating System ,嵌入式可配置实时操作系统)

     eCos ( Embedded Configurable Operating System ),嵌入式可配置操作系统,是 Cygnus 公司 1998 年推出的嵌入式实时操作系统解决方案。 eCos 的一个主要设计目标是实现系统的高度可配置能力,为实现这一目标,它将系统分为不同的软件组件。这些软件组件具有可重用性,根据实际应用的需要,通过其独特的配置工具可以选择使用相应的组件,同时对每一个选择使用的组件,用户还可以对每个选项进行更细致的配置,可以增加或删减组件的某些功能,从而实现完整的嵌入式操作系统。使用这种方式最后产生可执行的 eCos 映像文件非常紧凑,只包含应用所需的特定功能,这样使得 eCos 系统与许多传统的 RTOS 相比、系统的运行速度更快,稳定性更高。

     除了高度可配置能力之外, eCos 所追求的目标还包括移植性和兼容性,因此 eCos 采用了与 Linux 类似的模块化设计,将不同功能的软件分成不同的组件,这些组件具有可重用性,分别位于系统的不同层次。下图是 eCos 系统的层次结构图。

eCos 的层次结构图

     eCos 操作系统遵循的许可证与 GPL 兼容,而且比 GPL 更自由,用户可以在产品开发中免费的,自由的使用 eCos 操作系统,包括其开发工具;除涉及到对 eCos 系统本身的修改以外,用户的应用程序可以不公开,这一点既显著减少了开发者的开发成本,又最大限度的保护了开发者的利益。

     eCos 是一个适合于深度嵌入式应用的实时操作系统,提供了普通嵌入式应用中所需要的全部功能,对嵌入式系统开发中涉及到的许多特定技术需求也有很好的支持。

⑴ eCos 的调度内核是一个嵌入式硬实时内核,并且内核设计时在调度策略选择、防止优先级反转、中断与异常的处理模式、中断处理的最短延迟以及内存分配方式等方面都做了许多精巧的设计,使其在系统的实时性能上有了良好的表现。

⑵ eCos 的硬件抽象层 HAL ( Hardware Abstraction Layer )通过向其他组件提供标准的 API 函数的机制,屏蔽了底层的 CPU 架构与平台的特定信息。这样用户只需编写少量代码就能方便地将 eCos 移植到自己的特定平台上,因此提高了 eCos 的移植能力,迄今为止 eCos 已经成功地移植到了 ARM 、 Fujitsu FR - V 、 Hitachi H8/300 、 Intel x86 、 Matsushita AM3x 、 MIPS 、 NEC V8xx 、 PowerPC 、 Samsung CalmRISC16/32 、 SPARC 、 SPARClite 、 SuperH 等平台上。

⑶ ISO 标准 C 库和 math 库支持,兼容各种常见 C 函数和数学函数调用。

⑷ 支持 POSIX 和μ ITRON3.0 两种类型的兼容层,使许多在不同平台和系统上开发的应用程序可以比较容易的移植到 eCos 系统上。

⑸ 支持完整的 TCP/IP 协议栈,以及上层的各种常用标准协议,便于嵌入式设备的网络连接。

⑹ 支持多种外部设备,包括标准串行设备、以太网控制器、 Flash 存储器、 USB 设备、 LCD 显示设备以及 PCI 设备等。

⑺ 支持 GDB 调试。 eCos 系统中内嵌了 GDB stub ,通过使用 GDB stub 与 GDB 主机进行通信,用户可以在不使用仿真器的情况下,通过串口或网络对嵌入式目标系统上应用程序进行调试。

⑻ 支持多种文件系统,尤其对 JFFS2 文件系统支持良好。

      因此,与绝大多数嵌入式实时操作系统相比较, eCos 在系统可配置性、源码开放性以及功能方面的某些特性上具有较为明显的优势,这也是 eCos 取得成功的主要原因。

     可以认为, eCos 和 Linux 是一脉相承的嵌入式操作系统,首先,它们的功能都非常强大,均包含了嵌入式应用的几乎全部功能,并在不同应用领域相互补充,其次,它们都是遵循 GPL 协议源代码开放的系统,保证了应用系统的可持续开发,最后,它们都遵循 POSIX 标准,保持了良好的兼容性,基于 Linux 的应用程序几乎可以加不改动,直接在 eCos 平台上运行。

     中嵌科技多年来一直跟踪高性价比 RTOS 的发展,并在不同应用领域进行深入的应用研究, eCos 具有比其它 RTOS 更适用于嵌入式工业控制的特点。目前,中嵌科技已成功将 eCos 成功移植到诸如 AT91SAM7 系列、 AT91SAM9 系列、 AT91RM9200 、 EP93XX 系列等多款工业级嵌入式 微处理器上,实现了完整的 TCP/IP 协议栈、 RAM/ROM/JFFS2 文件系统,以及诸如 RS232/RS485 串行接口、 RTC 、 SPI 、 IIC 、 CAN 、 WatchDog 、 ADC 、 DAC 等常用外设的支持,并成功应用到多个工业控制系统。

 
 
 联系我们 | 隐私保护 | 责任声明 |
Copyright(C) 2005-2009  EmsysChina Co.,Ltd.  All rights reserved.  中嵌科技 版权所有