来源:EEWORLD
时间:2014-09-18
过去数年间,关于微控制器平台标准化的讨论不计其数,其目的是为了让不同MCU供应商产品间的转移更为容易,且在设计上无需做重大更动。然而,外围设备才是移转的真正核心,但所有讨论并未涉及外围设备的部分。
工程师在着手新设计之前会先审视功能需求,依此来决定采用什么电路以及控制这些电路所需的MCU内建外围。例如,工业级的人机接口设备需要支持LCD、按键、触控式屏幕与机器的通信、LED以及喇叭/蜂鸣器等,这些功能都需要MCU上的某些外围,例如用于通信的CAN控制器、用于触控式屏幕的ADC以及用于蜂鸣器的PWM计时器。
外围具备的功能越多所需的外部电路就越少,在某些情况下,还能减少需要撰写的程序码量。举例来说,在目的相同的情况下,采用PWM驱动方式较使用特殊蜂鸣器模式来得简单许多。
核心很重要,但对于设计人员来说却是抽象的。核心必须满足两个基本条件:速度上是否能执行为建立用户体验所需的软件功能,以及是否能有效率地执行所有任务。只要能满足基本条件,核心类型并不那么重要。
当然,核心还与韧体/软件相关。旧有程序码是工程师必须考虑到的问题,例如,使用现成程序码能节省多少工作量。然而,这个问题与核心并没有直接相关,而是与外围有关。大多数32位元MCU程序码采用C语言编写,能重新编译至任何核心,然而,每家MCU制造商的外围特性和程序设计模型均专属于自家产品,这是程序码难以转移的主要原因。
为了让工程师使用起来更方便,MCU制造商会提供一个韧体程序库,包含设置和使用各种MCU内建外围的程序码。不同制造商操作外围的方式并不相同,甚至特性上也有所不同,将应用程序从一MCU转移至另一MCU并非简单的事。
ARM一直以来都在为简化应用程序的移转而努力,定义了Cortex微控机软件接口标准(CMSIS)的韧体抽象化层标准,采用Cortex-M系列核心的MCU生产商其韧体程序库均已采纳了此一标准。遗憾的是,这个标准仍不能克服迁移外围遇到的困难,也就是说程序码的移植没有捷径。
由于MCU制造商不愿简化其产品到其它供应商产品的可移植性,只能由设计工程师来达成此一目标。透过实现一个抽象化层,由该层创建硬件(即MCU外围)和应用程序码之间的标准程序设计接口来实现。
可使用的方法有两种:方法一为开发一个中介层或封套资料,进而实现MCU制造商外围程序库和您的程序码间的转换。这是快速的解决方案,但会在命令和资料路径中添加较多程序码。方法二为定义一个标准的函数和变量命名机制,并将其应用于所有外围程序库。此种方法不必添加程序码却很费时,取决于外围设备用法的复杂度。
实现可移植性是件大工程,在开发过程的一开始就必须列入考量。除了韧体/软件兼容性,还有接脚兼容的问题。MCU供应商的产品转移往往要重新布置PCB,而且还需要电容和稳压器等不同的外部元件。无论使用何种核心,在32位元MCU供应商的产品间转移均都极为困难,这一切取决于外围和相关的韧体程序库,而MCU制造商透过提供韧体程序库和应用说明来使设计过程尽可能地简单。
此外,他们也努力减少元件在系列间的迁移工作,却不愿意让转移到竞争对手的解决方案变得过于容易。如此一来,这便成为设计工程师要解决的问题,应该要在每一个专案开始前即评估成本和益处。