首页 > 新闻中心 > > 正文

利用BIOS定制实现嵌入式产品的差异化

更新时间: 2005-11-01 00:00:00来源: 粤嵌教育浏览量:4627

  BIOS定制是实现嵌入式产品差异化特性的有效途径,本文将讨论与创建这些定制BIOS相关的问题,包括快速引导、用户界面和功能,以及固件应用能力等。

    许多基于x86的嵌入式解决方案都依赖针对台式计算机设计的BIOS,通过对BIOS进行配置可实现更高效的、富有成本效益的设计,以满足专用硬件和软件的需求。

    在台式机、服务器以及笔记本电脑中常见的BIOS(一种专为IT应用而设计的BIOS)已被设计成使这些设备能像通用计算机一样工作,因此人们能以同样的方式来使用这些设备。而诸如网络设备和自助式信息服务终端(如kiosk设备)等基于x86的嵌入式产品,则需要像设备而不是像通用计算机那样来工作。嵌入式设备需要使设备具有独特功能的固件,这正是BIOS可发挥作用的地方。嵌入式固件(即用在x86架构上的BIOS)正是实现嵌入式设备差异化的基础。

    为嵌入式系统定制BIOS有两种方法:一种方法是花费大量的时间和精力将台式机和/或服务器的BIOS改造成可满足嵌入式系统的要求;另一种方法则是采用一种专为嵌入式市场设计的BIOS。后一方法有助于简化为嵌入式系统创建定制BIOS的全过程,这既可尽量减少工作量和风险,又能提供强大的固件能力。

    用BIOS实现嵌入式产品差异化

    差异化是嵌入式产品获得成功并走向具有竞争优势的新方向的一个关键因素。表1列出的是用BIOS实现产品功能差异化的一些方法。本文将讨论与创建这些BIOS有关的问题,这些BIOS的特点包括:可配置成只包含标准IT BIOS的一部分特性;可定制成包含专用平台设置屏幕、溅射效果屏幕(splash screen)设置(包括多媒体)以及诸如FPGA初始化代码等专用代码;可实现亚秒级快速引导的目标;提供增强的固件应用能力,比如高可用性监控和引导安全性等。 

    大多数台式机或服务器系统都要求将所有的BIOS初始化功能集成到系统中,包括即插即用(PnP)、功率模式(APM)、配置和电源接口(ACPI)、PCI设备枚举与资源分配、增强硬盘驱动器(EDD)、系统管理BIOS(SMBIOS)、系统管理总线(SMBUS)以及其它功能等。在使用通用IT BIOS的情况下,这些功能必须全部被构建到系统的BIOS中,以便系统能支持所有需要这种支持的软硬件插件。

    但对大多数嵌入式应用来说,这些功能组件很多都是一些只会增加设备加电自检(POST)时间和消耗ROM空间的非必要功能。Embedded BIOS 2000等可配置BIOS则能提供800多种配置选项,这些选项用来控制将哪些功能组件包含在BIOS构建过程中。特定设计不需要的任何功能组件都不会包含在BIOS二进制代码中。

    定制BIOS的用户界面和功能

    嵌入式设备很少需要标准的BIOS用户界面。如果设备是从内部硬盘驱动器上引导,则它既不需要配置成从闪存或CDROM上引导,也不需要提供用于非标准CPU或存储器时钟的选项。另外,若专用硬件(如ASIC)需要在引导时进行初始化和配置,则还需要在核心BIOS中包含这种代码。

    取消设置屏幕可让BIOS用户界面采用新的形式,如无头设计、通过与远程终端程序相连的RS232串行电缆实现的菜单或类似台式机的POST,以及借助以太网的远程登录对话,甚至一种可在装载OS时显示由OEM定义的图形、动画和声音的图形化准操作系统(pre-OS)环境。

    构建定制的用户界面需要BIOS核心功能的支持,这样用户界面就能在恰当时候得到控制权。另外,BIOS键盘和视频调用需要被路由到新设备(例如远程登录)上并进行适当处理。

    初始化专用硬件不但需要定制代码,而且初始化序列也很重要,例如配置ASIC需要在PCI设备枚举之前进行。对BIOS用户来说,能在BIOS引导序列的恰当时候插入定制代码是非常必要的。如果所有的BIOS代码都以源代码的形式提供,则嵌入式BIOS用户就能在引导序列的任何点上调用其初始化代码。此外,可以将这种代码进行打包,这样就无需将定制代码集成到核心BIOS代码中,从而可将它从一个平台移植到另一个平台。

    快速引导

    设备从上电到功能可用的这段时间的长短,将影响用户对设备性能和可靠性的看法。引导时间超过1秒的设备看起来就像没有响应或者响应缓慢。优化BIOS引导时间并不容易,因为在BIOS加电自检过程中,有许多步骤需要优化。

    实现快速引导的一种概念是使用微软的简单引导标记增强(simple boot flag enhancement),它能决定引导时执行哪些POST组件。当然,还可在其它地方减少引导时间。

    利用速度标记,简单引导标记以简单的形式被用来控制引导速度。在引导过程中,BIOS在非易失性存储器中设置引导速度标记,然后再执行一组完整的诊断测试。在引导末期,BIOS将控制权交给OS,如果OS引导没有任何问题,它便会清除引导速度标记。在下一次重启时,BIOS会看到引导速度标记已经被清除,然后它会进行一组较短的诊断测试,从而减少引导时间。如果BIOS或OS检测到任何硬件配置的变化和/或故障,则它们将互相协调以确保在下一个引导周期中执行一组完整的诊断测试。

    尽管引导速度的提高主要归功于采用简单引导标记,但在其它许多方面也可提高引导速度,包括:视频ROM扩展(大约需要1至3秒);到屏幕的任何其它BIOS输出,包括POST及PCI消息等(大约需要100毫秒);不需要BIOS但需要由OS激活的硬件初始化,如鼠标及键盘等(大约需要数秒钟);由于大多数嵌入式系统具有固定的硬件配置,所以还可利用特定目标的优化(如经过优化的内存初始化和PCI枚举)来进一步提高引导速度。

    通过使用简单引导标记、消除硬件初始化并使用特定目标的优化,目前许多平台的引导时间都已可达亚秒级。在个别平台上,从复位到OS加载的时间可小于100毫秒。

    增强的嵌入式固件应用能力

    嵌入式系统开发商正日益寻求通过增加更多的特性,来使产品有别于竞争产品的方法。固件是增强这种特性(特别是那些需要单独运行平台OS的特性)的理想地方,其中一个例子就是高可用性监控与引导安全性。

    如果自助式信息服务终端采用独立于OS运行的固件,它便能以许多方式检测出故障情况,然后采取记录故障、通过网络发送电子邮件或者重启等纠正措施。尽管这是一种可见性故障,但无头(headless)设备也同样容易受到攻击。

    固件是实现这种监控的理想地方,该监控独立于OS并以系统管理模式(SMM,x86处理器架构的第四种模式)与OS并行运行。例如,Firmbase SMM操作环境具有自己的32位SMM操作环境,以便运行用Windows工具构建的可移植可执行程序。Firmbase应用程序驻留在ROM中的BIOS旁边,在这里它们独立于OS运行,即使OS已经崩溃或丢失。这使BIOS成为对系统故障进行检测和响应的高可用性监控解决方案的实现地方。

    某些情况下,固件可帮助解决终端用户篡改设备的问题。投票机、游戏机,甚至机顶盒等都需要一系列建立在应用层软件、固件本身以及平台之间的信任。如果没有这种信任,用户就可以在硬盘驱动器上修改关键文件,或者用另一块主板来扰乱轮询结果或欺骗主机。通过与运行在Windows或Linux OS下的应用程序、以及运行在SMM并独立于OS的固件建立可重复性的加密握手,无论是应用程序还是固件都能够禁用系统,以免系统进行误操作。

    过去,将硬件与应用程序绑在一起是应用程序员的工作。如今,无论是扩展系统的系统管理接口(SMI)处理程序来执行握手,还是授权在固件层具有日志、远程管理以及OEM级配置的引导时间安全应用程序,都变得更加安全和简单。

    还可通过另外一些方式使用BIOS,以使产品在固件级上具有差异化并获得竞争优势。在解决BIOS的功能配置、用户界面、快速引导以及增加专用功能等问题后,还可考虑其它许多方面。例如,可用ROM、RAM、闪存或USB存储器棒等固态媒介来代替硬盘;内置诊断可集成到BIOS中以助于实现自动制造;内置调试程序可加快电路板的推出过程;此外,专用加载程序(比如那些用于Windows CE与EFI的加载程序)还可为未来技术改进提供内置路线图。

    由于嵌入式系统之间存在广泛的应用差异性,所以没有一个单一的BIOS能对它们全部适用或者有效。为能直接开发并高效地、富有成本效益地配置嵌入式设备,用开发商定制硬件和软件应用的相同方式来定制固件的能力还有待进一步提高。

免费预约试听课