1. 概述
我们在讨论系统移植的时候,通常会提到一个概念:平台。平台可以是硬件平台,也可以是软件平台,软件平台通常指的就是操作系统。而按照应用领域的不同,我们又可以将软件平台细分为J2EE、.NET平台,如此等等。
衡量系统的可移植性要从两个角度来看待,一个是垂直的,一个是水平的。所谓的垂直移植性,就是如何将一个应用程序从某个平台的一个版本移植到另外一个版本。如将一个应用程序从win32移植到win64,或将操作系统从IA-32移植到IA-64 CPU等。所谓的水平移植性,就是如何将一个应用程序从一个平台移植到另外一个平台。如将一个应用程序从windows平台移植到Linux平台,或将操作系统从Intel平台移植到ADM等。
在这篇文章中,我们主要讲述了两类平台,一类是硬件平台,另外一类就是操作系统平台。我们将重点阐述C++应用程序在操作系统平台上的移植。
2. 硬件平台移植
对系统软硬件起到隔离作用,从而提高系统软件的可移值性及有效地利用人力资源、缩短开发周期和提高产品的可靠性。
硬件抽象层的特点
n 硬件抽象层具有与硬件密切相关性;
n 硬件抽象层具有与操作系统无关性;
n 接口定义的功能应包含硬件或系统所需硬件支持的所有功能;
n 接口定义简单明了,太多接口函数会增加软件模拟的复杂性;
n 具有可测性的接口设计有利于系统的软硬件测试和集成。
2.1. 参考设计
Windows操作系统的HAL模块,封装了对大部分硬件的底层数据交换和操作。
参考Windows操作系统的整体结构图: