基于虚拟处理器嵌入式中间件
摘要:嵌入式中间件是使嵌入式应用独立于具体软硬件平台的核心软件环境。本文介绍可以被完全移植的基于虚拟处理器的嵌入式中间件;讨论基本虚拟处理器的嵌入式中间件移植模型以及移植实现;给出采用虚拟处理器技术的嵌入式中间件Intent在PowerPC/PSOS平台上的应用实例。
关键词:嵌入式 中间件 虚拟处理器 Intent
引言
嵌入式中间是在嵌入式应用程序和操作系统、硬件平台之间嵌入的一个中间层,通常定义成一组较为完整的、标准的应用程序接口。它主要为嵌入式应用软件的开发提供跨操作系统和跨硬件平台,层次化、模块化和可扩展的接口,同时,根据嵌入式应用的编程特点提供必要的编程工具。
借助嵌入式中间件,应用程序可以独立于操作系统和硬件平台,使产品的开放性和可移植性更强。有了中间件以后,应用程序不仅可以运行于不同硬件平台,也可以在不同的操作系统上运行,从而在提高开发效率、减少开发成本的同时能够跟上技术的发展,使应用的开发变得更加简捷。
1 基于虚拟处理器的嵌入式中间件
1.1 虚拟处理器
可移植性通常指将某一个操作系统的应用程序移植到新的平台或处理器上。嵌入式中间件的功能是使应用独立于操作系统,独立于硬件平台,所以要求能够建立在不同的操作系统和硬件平台上,与支持具体的应用与平台无关。因此,嵌入式中间件自身必须具有高度的可移植性,使它能够被完全地移植到不同的软硬件平台上,包括库以及所有其它部分。基于虚拟处理器(Virtual processor)的嵌入式中间件,通常将所的代码编译到一个虚拟处理器而不关心具体的目标硬件平台来实现这一特性。嵌入式中间件被设计成运行在一个虚拟的处理器上,一个理想的32位RISC(精简指令集计算机)小端(little-endian)系统。javascript:window.open(this.src);" style="cursor:pointer;"/>基于这种系统编写代码时,就像在真正的处理器上编写一样。当将应用代码转换成准备在目标处理器上执行的本地代码时,只需要一个翻译器;因而,无论是将嵌入式中间件移植到一个新的处理器、一个新的平台还是兼而有之,都只需要编写不同的界面接口即可实现其完全的移植。
1.2 移植模型
基于虚拟处理器的嵌入式中间件自身具有完全的可移植性,能够提供通用的驱动,支持在不同的平台上运行。影响基于虚拟处理器的嵌入式中间件可移植性的因素可抽象为三个组件,即翻译器、CPU隔离接口和平台隔离接口。利用翻译器(translator),应用代码可以被转换为相应的本地代码而运行。翻译器将应用代码映射为对等的本地代码,包括指令选择、寄存器分配和指令调度。由于嵌入式处理器的模式可能不同,所以嵌入式中间件应能提供基于小端(little-endians)处理器和大端(big-endians)处理器的翻译器,以使所有代码和数据,包括文件和网络通信数据,都可以在不做任何修改的情况下,从一个小端处理器的系统搬移到其它大端处理器的系统中;同时,翻译操作可根据静态或动态地执行。
此外,基于虚拟处理器的嵌入式中间件的可移植性还依赖于另外两个组件。其一是CPU隔离接口CII(CPU Isolation Interface),它将操作系统与处理器的细节隔离。CII包含了实现FIXUP(定位)操作的函数及其它与CPU相关的操作。另一个组件是平台隔离接口PII(Platform Isolation Interface)。通过提供一个抽象的中间层,PII将操作系统和设备驱动程序与Platform的细节隔离。PII提供一套函数,可以“虚拟地”访问中断、异常、内存管理、时钟等等。由此抽象出来的基于虚拟处理器的嵌入式中间件结构如图1所示。
最值得注意的就是,基于虚拟处理器的嵌入式中间件这一抽象模型的建立,可以通过PII和CII提供一种十分有效的机制,可以使中间件在“Hosted Mode(宿主模式)”下运行于操作系统上。运行于宿主模式的嵌入式中间件,其平台隔离接口(PII)中部分函数的实现,包括用于设置或访问中断、异常、时钟等函数,均须借助“宿主操作系统”提供的接口实现。
1.3 移植实现
嵌入式中间件环境的建立过程是将一个系统(中间件)移植到另一个系统——硬件平台+实时操作系统的过程。基于虚拟处理器的嵌入式中间件的移植实现可分为两步:①移植到一个新的处理器,需要编写翻译器以及CPU隔离接口CII;②移植到一个新的平台,需要重新实现平台隔离层PIL(Platform Isolation Layer)。平台隔离层指所有的使中间件适合一个具体平台而编写的代码。这一层由平台隔离接口PII和平台具体的设备驱动程序所组成。
1.3.1 处理器移植
处理器的移植涉及到对翻译器、CPU隔离接口的代码重新实现。
(1)翻译器
在进行处理移植时,真正需要实质改变的代码是翻译器。不同的处理器有着特定的翻译器。一个翻译器可以为任一类型处理器而创建。或者是一个数字信号处理器(DSP),一个微处理器或者一个微控制器。
(2)CPU隔离接口
CII是一个集合名词。它包含在内核和处理器之间提供接口的代码以及搜集中间件在其上运行的处理器信息的代码。中间件内核自身不需重新编写。
CII的接口包括独立处理器指令集的接口、任务切换期间调度程序和处理器之间起中介调停作用的接口以及用于栈操作