摘要:
在标准微控制器的世界中,ARM体系结构在32位嵌入式RISC领域有着极大的影响力。就像在8位世界中8051的广泛应用一样,在32位微控制器领域里ARM得到了特别的青睐,并几乎成为了事实上的标准。
关键字:ARM;32位微控制器
在标准微控制器的世界中,ARM体系结构在32位嵌入式RISC领域有着极大的影响力。就像在8位世界中8051的广泛应用一样,在32位微控制器领域里ARM得到了特别的青睐,并几乎成为了事实上的标准。
对系统性能需求的提高和嵌入式功能的发展是促使设计者向32位处理器转变的一个原因;但是这种转变最大的驱动力还是来自于8位微控制器在其进化过程中自身面临的诸多局限和挑战。
虽然8位微控制器将继续领导标准产品市场,但是很多公司为了延长8位体系结构生命周期的做法,给设计工程师在开发产品时带来了越来越多的困难。8/16位解决方案的供应商近十年来以惊人的速度增加芯片上的外设、提高时钟速度并扩展架构。
这虽然提高了性能,但使设计者的工作更困难、更昂贵。设计者现在必须面对每个新的衍生芯片的开发工具,处理一系列不可预知的调试问题。而随着芯片时钟的提高,其速度超过了在线仿真器的能力,在线仿真很难再对它们进行调试。为了解决这一两难境地,程序使用越来越多的存储器,但是这种存储器的增长是建立在一个十分低效的架构上面的。
价格/性能比的变化
从整个系统角度出发,8位微控制器的传统优势棗价格,也在衰退。夏普微电子的单片机市场经理 Terry Thomas说:“虽然一个8位的单片机能够处理家电的传统控制功能,运行电子游戏,用于一些PDA中,但如果你想使用一些新的市场要求的附加功能,如接入因特网,大屏幕显示等,就必须在PCB上增加额外的芯片。”然而这些功能在32位构架的芯片上可以方便、低成本地用软件实现。
甚至在芯片与芯片的之间的单价直接对比上,竞争也开始如火如荼。在最近的嵌入式系统会议期间,几家公司同时展示了各种各样的基于ARM内核的32位标准单片机。今天我们可以找到各种价格的ARM芯片。一个拥有ARM核的单片机平均价在4~5美元之间,这比先前平均8.50美元的价格有了很大的降幅。直逼传统的51单片机。
各种市场力量汇聚在一起,是设计经理们需要认真考虑一下向32位构架跃迁的时候了。通常有两个问题是他们比较关心的:第一,是否能得到高质量的调试与开发工具;第二,如何避免选用的体系结构因为各种原因而失去强有力的工具支持。这些问题曾经是所有面向32位体系结构的开发人员面对的重要障碍。然而随着基于ARM内核单片机的引入,所有问题均迎刃而解。
我们现在可以很方便地找到很多用于ARM内核标准单片机的开发工具,而更多的开发工具将在不久之后出现。另一个令人放心的理由是ARM在ASIC/SoC嵌入式市场上如此高的份额,这除了意味着ARM的体系结构拥有庞大的开发人员团体外,还可以肯定第三方的开发工具商将积极跟进行业的领导者,并支持ARM。
向ARM 转移
随着工具的发展和对ARM构架越来越多的支持,设计者需要理解8位与32位ARM开发环境的区别,以及调试和开发工具如何处理它们。扩展的指令集,存储器构架和片上调试环境是最先需要熟悉的。ARM 欧洲市场部经理Bruce Beckloff说“许多构架上的差异已经被开发工具所掩盖了,现在高效的C编译器和强大的开发工具将使这一转变变得十分容易。”
虽然容易,但并不是不费吹灰之力。学习新的指令集依然很重要,当我们要编写紧凑、具有严格时间要求的代码时,我们仍然要依靠它们。在移植代码时我们需要理解寄存器组,程序跳转方案和指令级的中断处理概念。但是在向ARM的转移过程中我们已经可以看到很多新的手法了。
对于大多数的应用而言,问题的本质不是有没有程序的移植工具或高效的交叉编译器。相反,设计者想要知道的是32位工具是否能在和他们团队正在使用的8位工具相同的环境下工作。
当工程师们努力学习新的构架时,熟悉的图形界面和相似的运行环境对方便他们的学习是一个关键。大部分供应商都注意到了这一特点的重要性。Ashling微系统总裁Michael Healy表示“我们的32位调试器与8位的调试器具有相似的外观和使用感受”。然而在图形界面之外两者却十分不同。与8位开发工具控制在线仿真器所不同,32位开发工具与片上调试端口通信。
存储器管理
32位存储器模型与8位有着本质的不同。在8位世界中,8051的存储器空间最多为64KB,这使我们几乎不会去认真考虑是否使用MMU。达到2MB空间的程序通常采用Bank切换方式的存储器。
32位构架历来善于支持大型应用程序和完整的操作系统,它更倾向于将程序储存于片外的RAM,在高速缓存中执行程序并使用MMU来处理整个过程,而这对于许多老练的8位开发者是一个陌生的模型。编译器确实有用,但处理高速缓存下如此多种分支和异常的复杂性,将给那些习惯于零等待内存操作的开发者带来一些麻烦。
芯片商开发出一个巧妙的方法用于解决这一问题。当认识到芯片制造工艺的进步使得片上的大容量闪存并不会花费太多的功耗时,飞利浦半导体推出了基于ARM7TDMI-S内核的LPC2100系列芯片,其内部拥有128位宽的零等待闪存。飞利浦使用128位的闪存接口以弥补闪存50ns的访问延时。如果直接使用32位的数据总线传输数据,它将比10ns延迟的RAM慢,然而拥有128位的带宽则意味着每周期可以多传输3倍的数据,从而提升有效带宽。使用飞利浦低功耗的闪存单元和低功耗的0.18μm工艺,128位闪存数据通道使得存储器访问的瓶颈消失了。开发者可以就像为8位或16位单片机编程一样编写程序,代码存储并执行于闪存中。编译器和连接器无缝地拼接代码,并将变量和数据存储于RAM中。飞利浦单片机市场经理Geoff Lees表示“这一配置对实时嵌入式应用非常理想”。
调试技术
设计师转移到32位架构的最大区别在于代码调试的工具和技术。8位单片机的特点是使用在线仿真器(ICE)调试,它随着不同新产品的发布变得越来越复杂。为了满足性能的需求和价格要求,8位单片机供应商已经衍生出许多不同的片上外设,存储器选项和引脚数量。
该策略衍生出大量不同的单片机,每一种均需要不同的ICE。调试工具提供商采用灵活的策略来降低复杂性,复用他们基本的ICE平台。然而开发团队依然难以决定使用何种衍生芯片,并购买相应的调试工具。
然而当他们进入32位设计领域时,设计者将有更丰富的片上调试工具以供选择。学习的道路依然艰难,但如JTAG、ARM嵌入式ICE-RT和嵌入式Trace Macrocell(ETM)将最终指明走出8位衍生芯片泥沼道路的方向。
这些技术对于SoC和ASIC的ARM开发工程师非常好理解,但对于刚转向32位的系统设计者来说需要一些解释。以ARM7DTMI为例,该内核包含 EmbeddedICE-RT技术,这项技术允许在调试中产生中断,从而使得中断服务程序(ISR)得到执行。这种实时能力是对EmbeddedICE技术的加强。EmbeddedICE是一种基于JTAG的ARM的内核调试通道,它处理典型的ICE功能,例如条件断点,单步运行。因为这些设备都在片上,EmbeddedICE-RT技术将避免使用笨重的、不可靠的探针接插设备。嵌入在芯片中的调试模块与外部的系统时序独立,它可以直接运行在芯片内部的时钟速度。
在8位世界中,背景调试模式(BDM)技术被广泛地用于实时指令追踪以控制寄存器、总线和存储器。相对应的ARM工具是ETM (Embedded Trace Macrocell)。触发点和过滤功能由调试软件配置并通过标准JTAG接口传输到ETM上。利用已有可编程的跟踪器,追踪端口可配置为4位、8位或16位数据总线宽度。就像8位仿真工具一样,在仿真时外设和中断程序依然能够继续运行。
ARM的中断向量控制器(VIC)对很多人来说是一个不太熟悉的技术。实时嵌入式系统中往往有大量的中断源,确定它们的优先级并有效地加以处理是十分重要的。VIC对于管理中断是一种非常理想的方案。从结构(图2)上来看,它将中断控制器移到了AMBA AHB总线上;从功能上看,它支持最多32个标准中断,16个IRQ向量中断,硬件中断优先级控制和链式控制器等一些其它特性。
关于工具
毫无疑问,我们值得向ARM 32位构架转变。在转变之前,我们可以预见到ARM注定会成为一个被广泛采用的32位结构体系解决方案。但与8位世界一样,嵌入式应用依旧对成本敏感