内容摘要 要点 嵌入式Linux帮助赢得主流手机设计成功 半导体厂商希望借助Linux来销售芯片 入门级硬件使得售价低于200美元的关键产品的实现成为可能 开放源虽能提供自由度却引起了IP版权问题 桌面操作系统采用类似Windows XP的界面
内容摘要 要点 嵌入式Linux帮助赢得主流手机设计成功 半导体厂商希望借助Linux来销售芯片 入门级硬件使得售价低于200美元的关键产品的实现成为可能 开放源虽能提供自由度却引起了IP版权问题 桌面操作系统采用类似Windows XP的界面
就在短短5年前的一次设计审 查会上,大家对我提出的考虑——将Linux用于嵌入式系统用户界面与管理控制的建议——反应冷淡。反对这一建议的理由包括:Linux不能快速响应实时事件、开放源代码界对软件支持的担心、以及对未来不可预测事情的顾虑等,评审组最终选择了Windows CE。当时,客观地讲,还没有完全适合嵌入式系统开发的主流操作系统派生产品,因此大多数设计均采用专用解决方案,如QNX Neutrino或Wind River公司的 VxWorks等。与此同时,主流产品界与开放源代码界正忙于利用其核心软件架构来满足占板面积小的嵌入式系统的需求。结果,在去年2月举行的3GSM世界大会上,像英飞凌 (Infineon)、飞利浦 (Philips)、三星 (Samsung) 及意法半导体 (STMicroelectronics) 等行业巨头,都公布了采用Linux的手机产品。在其他场合,飞思卡尔 (Freescale) 公司的软件子公司Metrowerks推出了适合汽车电子的Linux——主要用于车内娱乐设备。就在上个月,Xilinx公司发布了一个用于其免费下载Webpack FPGA开发环境的Linux端口,这预示着Linux操作系统正逐渐在工程领域得到同行的认可。那么Linux对嵌入式系统开发到底有多大用处?同样重要的问题是,它启动时又有多大难度?

首先,必需将硬实时操作系统与软实时操作系统区分开,前者可保证不会错过最后期限并能准确地了解工程的进度,后者则通常需要在一个特定时间范围内才能完成任务。像QNX、VxWorks及其他一些开发环境——如LiveDevices公司的Realogy套件及Volcano公司的汽车联网系列产品等,均可处理需要有充分确定性响应时间的关键任务(参考文献1)。但据EDN编辑Warren Webb最新报道,目前有许多可用来满足实时需求的商业性Linux产品,如LynuxWorks公司用于补充其LynxOS产品的BlueCat Linux以及即将推出的Red Hat Embedded Linux,是坚持Red Hat的Linux 与将Linux及VxWorks融合在一起的全球最大商用RTOS供应商Wind River公司共同协作的结果(参考文献2)。而最近进行的一系列发布,如General Dynamics Advanced Information Systems(通用动态高级信息系统)选择LynuxWorks公司的安全应急LynxOS-178 RTOS来开发美国陆军未来战斗系统 (FCS)的基础设施等,则表明这些进展意味着巨大的商机,
尽管这些系统都与Linux兼容,但它们还是不可避免地采用了专用软件来满足客户的需求。例如,MontaVista公司对Linux内核进行了修改以满足其运营商级产品的如下需求,即增加大量预占点来将最坏情况下的延时从大于100ms缩短至小于1ms,以适应在电信基础设施中使用。此外,由FSMLabs公司提供的RTLinuxPro,将Linux作为一个在硬实时操作系统内核监控下的空闲线程来运行,在一个典型x86平台上可保证最坏情况下的中断延时为13ms,并允许无缝访问Linux环境。欧洲市场的兴趣来自意大利软件开发商Koan,Koan公司的Klinux采用由Polytechnic of Milan航空航天工程系RTAI项目开发的实时应用接口 (RTAI) 内核扩展来提供硬实时响应。在获得免许可的开放源代码条件下,Koan正致力于将其系统移植到包括x86、ARM、PowerPC及Xscale架构的处理器上,这些产品主要用于工业控制。
让我们回到消费电子市场,信息娱乐与手机应用的迅猛发展预示着嵌入式Linux会更加广泛地用于对任务苛刻程度与实时响应没有那么严格要求的设备中。当然,Linux已经在可靠性与安全性方面获得了很好的声誉,正因为如此,移动电话运营商Orange与意法半导体公司最近决定对嵌入式Linux系统的研发进行联合投资,该操作系统用于在意法半导体公司基于ARM的Nomadik处理器上运行的一个安全电子手机付费程序。但Linux传统的反应时间迟缓已经在很多场合妨碍了它的应用,这是由于它原有内核的非预占性设计而造成的,其运行任务会停止中断,并且其调度程序采用了一种公平算法来保证所有任务均分享一部分处理器时间,而不考虑任务的优先级。这种内核还依靠任务之间的页面交换,因此不能在必需适应异步事件的系统中对时序进行准确地预测。此外,它还要求用存储器管理单元 (MMU) 来进行存储器保护以及方便多任务处理。
当前的2.6版内核进一步减少了延时并拥有许多嵌入式友好特性,包括构建用于不需要用户界面的设备的小占板面积内核选项。在从过渡版2.5开始发布的内核中,系统核心是所谓的O(1)调度程序,它增加了内核预占、任务优先级与一个专用时间限制程序。基于Linux 的电话系统制造商Digium公司总裁Mark Spencer声称,无需对内核进行额外的修改,Linux操作系统的性能就能胜任软实时应用,他说:“大多数先进PC平台可处理多达每秒1000个硬件中断,这对于Digium公司的Asterisk系统核心部分的时分多路复用总线来说已经足够”。他认为Linux 的一个重要优点是它能适应从小型嵌入式平台直至超级计算机的升级,并且还能与PC开发并行进行。他说:“一开始,PC只运行字处理软件与电子表格软件,但它们很快便开始取代小型机并在计算领域占优势。与此相似,Linux正变得无处不在,现在其产品出现在各种不同的应用领域中”。Spencer坚持认为Digium公司应继续开发它的开放源代码Asterisk产品,而且公司还可以将许可授给第三方以进行专用软件开发,这代表了Linux商业合作的运营模式,他说:“我们刚刚推出了Asterisk商业版,并正在开发更多的PBX基础设施硬件,包括一种回波消除卡”。
另一个硬件方面的考虑是Linux对32位机的要求。在http://elks.sourceforge.net上已有一个目标瞄准8086型架构的16位项目,但随着32位芯片的推出(例如Atmel公司基于ARM7的AT91SAM7S系列闪存微控制器,其批量售价约为3美元),除历史溯源外,再进行16位机开发已没有什么意义。当然,Linux本身在386机上的开发历史表明,它可以方便地移植到386嵌入式空间。但也存在对ARM及PowerPC架构的广泛支持,且还有很多项目涉及到含有MMU的MIPS与32位 Renesas Super-H器件等目标机器。uClinux项目 (www.uclinux.org) 允许在缺少MMU的机器上运行Linux,这对于嵌入式空间来说非常关键——在此领域常常对多任务处理没有多少要求。与当前许多显得相当平静的其他Linux项目不同,uClinux无疑是充满活力且运行良好的项目。实际上, 2.6版内核包含了该项目的一些特点,其结果是现在可以在缺少MMU的芯片上运行该操作系统,例如Analog Device公司的Blackfin、ARM7TDMI、飞思卡尔公司的68k/ColdFire与QUICC产品、英特尔公司的i960及NEC公司的V850E等。如果您必须采用16位机,则有一个正在进行中的项目——瑞萨公司的H8S/2100(参见http://sourceforge.net/projects/h8-uclinux/)。
低成本开发系统
这一切都显得非常伟大。但目前可用的选择使得从事Linux并非是一件简单的事情。因为所有嵌入式开发都必须先有一个主机,然后还需要有一个Linux桌面安装程序(参见附文“Linux是否已进入黄金时期?”)。如果这种选择很复杂,则选择一个嵌入式平台更加困难。例如,在www.linux.org上搜索英语版嵌入式Linux 会得到不少于27种用于各种平台的版本。对于桌面环境来说,这是完全可行的,且Linux界的精神就是——自由地下载可用的文件并编译您自己的安装程序。那些工作时间较少且更直接关注开发的工程师,更有可能从现成开发平台上受益,此外还采用有广泛的选择。例如,Koan提供了一套包括软件、文档及该公司开发环境/工具包在内的售价299欧元启动软件。另一个相反的极端是,uClinux专业开发商Arcturus Networks公司则提供了一个用于住宅网关与路由器的参考平台以及用于Atmel公司AT91-ARM7TDMI及Freescale公司ColdFire与DragonBall架构的开发套件,售价从495美元至1295美元不等。
对于有兴趣将Linux运用于像嵌入式控制与信息娱乐控制台等各种应用开发的工程师来说,Analog Devices公司 (ADI) 最近公布其ADSP-BF533-Stamp开发套件是一条非常令人感兴趣的消息。该产品售价低于200美元,包含一块目标线路板、一张装有uClinux软件的光盘 (CDROM) 以及一个通用输入电源,只需增加一条标准直通串行电缆和一台PC主机,系统就完整了。线路板容纳有一个ADSP-BF533 Blackfin 500 MHz处理器以及一个看似足够大、排列成4组16×4的128MB SDRAM(图1)。当多媒体电话需要有和PC一样多的存储器时,该存储器余量可为软件编写员提供足够的应用程序开发空间。例如,三星公司刚刚推出了一款4 Gb闪存,它将四个1Gb的裸片组合到一个11mm×13 mm的封装中。该1.8V器件能够支持108 Mbps的数据读取速率,比传统的NAND闪存器件快4倍,同时还支持10Mbps的写入速率,比标准NOR闪存快60倍。该公司计划于今年7月份开始大批量生产该产品。

Stamp开发板包括4MB闪存和一个CPLD(大规模可编程逻辑器件),CPLD扩展了处理器的异步存储器空间以满足这一最大闪存容量。在处理器异步存储映射空间中还有各种外围器件,例如一个10/100 Mbps以太网端口等。其他较为明显的硬件包括三个按钮开关与LED指示灯(CPLD可将其映射到GPIO空间或断开它们)以及一个可表现ADI公司ADP3025控制器芯片能力的多级开关模式电源。两个允许访问Blackfin及CPLD的JTAG接口的接头,是对访问微控制器外围器件的正常范围接头的补充(图2)。这些外围器件包括两个串口、一个SPI端口及一个并口/GPIO接口、三个定时器、一个实时时钟与一个红外设备接口。这些功能块都安装在一个尺寸为178mm×127 mm的四层板上。目前有一个可用的ADC子板,而正在开发的硬件(已能免费获得其原理图)还包括一个音频编解码器卡和一对视频编码器与解码器卡。

配发的CDROM中包含了该系统的文档,包括原理图与CPLD文件以及各种软件组件。一本130页的用户手册包括Analog Devices和Arcturus Networks公司介绍uClinux并说明Stamp板的文件。它还包括一些指导性资料但当前处于测试之前的阶段(版本0.5.4)。如果要更新,可查看位于http://blackfin.uclinux.org上的用户组页面,这也是寻求支持的入门网站。CDROM上软件内容包括预构建内核图象与源代码、用于Blackfin的工具链端口、一个免费发行的JTAG工具、U-Boot加载程序以及一个Cygwin环境的Blackfin端口。单页快速启动指南可满足用户希望了解如何使用该系统的愿望。首先要完成的任务是利用HyperTerminal(超级终端)等程序来建立PC到线路板的通信连接。只需遵循少数几条指令,并给线路板加电,运行一些内存检查程序,并默认从板上的闪存引导内核,uClinux命令壳 (shell) 屏适时地出现在HyperTerminal视窗中。
为避免在主机上安装Linux(在此评测示例中是一台在NTFS格式驱动器上运行SP2的Windows XP专业机),用户可安装Cygwin——一种面向PC类似Linux的环境(www.cygwin.com)。正如其主页上所预先警告的,Cygwin不是一种在Windows上运行原始Linux应用程序的途径,也不能让Windows了解Unix功能:“如果您希望在Windows上运行您的应用程序,则您必须从源代码重新构建此应用程序”。但这种限制在嵌入式前后关系中是没有什么联系的,对目标的任何改动都需要重新编译。此外,该套件附带的Cygwin指令还估计此端口的速度比原始Linux版本的速度大约慢3倍。Cygwin也不是一种轻量级安装,它几乎要占去1G字节的磁盘空间。但Cygwin的Blackfin端口包括工具链和uClinux内核,从而避免了下载以及在Linux主机上构建这些组件的要求。尽管主用户手册提供了逐步指令来说明如何在Linux盒上构建工具链,但首次用户可能会得到这种方法阻碍任务进行的“恐吓”。
运行的Cygwin的安装程序解压并安装一个原始系统。安装程序还将安装免费软件AnyEdit文本编辑程序,它可以在Windows Cr-Lf(回车/换行符)与Linux Lf行尾结束符之间转换(首次用户要了解的其他问题还包括Linux使用正斜杠来说明路径方向而不是像Windows那样使用反斜杠)。点击Cygwin uClinux桌面图标可打开系统的命令行界面窗口,它基于Linux标准的“bash”(猛击)壳, Bourne-again-shell替换了完全在Unix环境中使用的壳。接下来,Cygwin指导用户执行make程序来根据目标板定制环境。此步骤出现在配置屏幕的“processor type and features(处理器类型与特点)”子菜单下,并默认执行用于Stamp目标板的正确选项。首次使用时,请不要改动这些屏幕,也就是说,只需在出现SnapGear配置屏时简单选择Save & Exit(保存/退出),然后再调用make命令。这会触发一个冗长的原程序来构建系统,并为Stamp板配置工具链,在2.4 GHz奔4处理器上会花费15分钟以上的时间。但不要忘记保存浏览SnapGear屏幕选项供以后使用,因其可以用替代参数来执行快速内核重建。
安装程序结束时将一个简称为linux (而不是linux.dxe)的文件存放在…/mClinux-dist/linux-2.6.x/目录下。此文件为一个可执行及可链接格式 (ELF) mClinux内核映象,用户可通过U-Boot加载程序将其下载并从Stamp板的SDRAM上运行。Cygwin安装文档虽未明确告诉您这么做,但此时系统已为首次在Stamp目标板上使用它做好了准备。接下来最好马上查看用户手册中U-Boot的HyperTerminal部分,该部分内容介绍了如何下载并运行最新编译的内核映象。这是新用户可采取的确保系统工作的最省事方法,但从测试PC的57,600 kbps Kermit协议串行链路上下载6.3MB的文件大约需花费1.5个小时。当返回HyperTerminal屏幕时,在等待足够长时间后,输入bootelf 0x1000000,应得到一个新的正耗尽SDRAM的uClinux实例,以确认系统安装正确(图3)。
由于串行链路速度很慢,因此必须使用以太网通信。这就需要用一根标准以太网RJ-45电缆连接至局域网 (LAN),或用一根交叉电缆直接连接至主机。在这里文档未明确指出以下内容,即只有当你调用U-Boot命令(例如tftpboot)时才会激活以太网连接——此时板上以太网活动LED灯会闪亮,就像LAN交换机上监视LED闪亮一样。尽管看起来很清楚,但由于这种操作不符合标准LAN惯例,因此会带来很多麻烦。在最终搞清楚情况以前,需要交换电缆,尝试以太网交叉接线,然后再确定以太网控制器的片选线,同时插接网络。同样,插接只能从目标机至服务器方向进行,从相反方向插接会超时,因为在目标机上没有隐含运行、用于完成信号交换的进程。Linux老手总是将这些问题看成是新手的入门经历,因此必须做好刻苦钻研的准备才能得到结果,且实际上,目前已推出了几款近乎完美的商业产品。
LAN连接要求在主机上运行TFTP(简单文件传输协议)Server,例如手册上介绍的免费提供给个人使用并与Windows相兼容的TFTP Turbo软件。其他替代方案包括由网络管理专业公司SolarWinds.Net提供的Free TFTP Server(免费TFTP服务器),这是一个可免费下载的软件。当运行bootelf命令以加载及运行内核映象时,正确的安装与配置可在测试PC上将6,491,055字节的下载时间缩短至大约18秒。如果怀疑,可检查标头信息来察看当前正运行的映象的时间戳,但不要用U-Boot的save命令来保存任何环境变量,直到确认它们能正确工作为止,因为此步骤会使系统内存闪烁。从一个坏的Flash状态进行恢复要求用户通过Stamp板的JTAG接口重新对内存进行编程,该接口使用低成本并口调试头。ucLinux/Blackfin门户网站上提供有硬件原理图与软件文件,但目前的用户手册没有该过程的详细说明,因此这里需特别注意。
此时,用户即拥有了一个完全可以工作的uClinux开发系统。然后,用户可从命令行或SnapGear图形界面(用户手册中详细介绍的一个程序)来重新编译内核以减小命令行所占的位置。德国慕尼黑ADI公司在欧洲工作的DSP系统与应用工程师Michael Hennerich——同时也是uClinux/Blackfin项目的一名领导架构师指出,默认根文件系统大小约为4MB,同时默认内核配置又占用了大约1MB。用户可以调整这些占用范围来适应其应用需求。Hennerich还指出,U-Boot加载程序用于压缩及解压缩闪存内核映象的工具可节省多达5倍的闪存,代价是略微增加了引导时间。并且他还称赞Blackfin的动态功率管理功能,它可以对用于低功耗及小占板面积系统的处理器进行进一步的优化。尽管内核编译允许对默认497 MHz处理器内核和124 MHz系统时钟的时钟频率进行静态改动,实际中的应用程序可以在便携式电子设备上动态地修改时钟频率与内核电压来节省功率。Hennerich称,发布正式基准测试结果还为时尚早。但他又说,他自己对MP3解码的测试表明只需5%的处理器负荷,因此在便携式设备上对功率管理进行研究大有作为。
[1] [2]
编辑 webmaster