嵌入式开发需要的不仅仅是处理器
2010-10-18FanieDuvenhage
Fanie Duvenhage
摘要:嵌入式系统工程师们在花大量时间试图找到最适合应用的完美器件。然而令他们失望的是,现有器件总是缺少其他器件所具备的一项或多项重要功能,因而在设计时总是要权衡利弊而无法实现完美。绝大多数情况下,完美器件只是一个梦想。
关键词:嵌入式开发;处理器;MCU;编译器
对于处理器和单片机,选择标准变得更加抽象和复杂。由于单片机可编程,正常的电气参数选择标准必须要考虑器件执行某项具体任务时的速度和效率。从表面上看,单片机性能取决于处理器内核,但事实上并非完全如此。处理器性能的确与处理器内核息息相关,但同时它还取决于其他因素,包括集成度、支持处理器内核的外设、采用的开发工具、要执行的任务、工程师发挥特定单片机性能的技巧以及系统成本,等等。图1中的几个示例显示了在不改变处理器内核的前提下,采用编译器技术所带来的不同效果。
因此对于单片机而言,工程师心目中理想的器件不仅需要具有正确的电气特性和集成外设,还要有一个处理器能在规定时间内执行应用程序中最复杂的计算。工程师熟悉的单一最佳开发工具平台必须能支持这个器件,这样工程师既能够更快地熟悉器件,又能够更快地学习如何充分利用开发工具。最后,这个器件应该符合工程师负责的所有应用的成本目标。遗憾的是,这种理想的器件是不切实际的。
持续变化的需求
一个典型项目会因多种因素变得复杂化,比如开发进度表、可用资源以及开发前项目的确定程度等。所有工程师都熟知“需求漂移”这个术语,也非常明白营销部门其实并不清楚需求变化对剩余的设计工作会产生什么影响。
需要进行大量的工作来避免在项目开始后出现过多变化。问题通常都会归咎于缺乏预见和规划,因此会花更多时间制定更完善、更详细的规范,来描述硬件和软件需求。这就产生了全面的项目计划,需要在项目进展过程中进行跟踪。
计划和追踪对于项目的按时完成极为重要,但是在这个不断变化的世界里、不太可能预测到所有实际可能出现的变化:竞争对手以更低的价格推出功能优异的竞争产品:上年度产品遇到生产问题需要立即处理,从当前项目中撤走工程资源:经济危机席卷全球、优先级已经从“若有更好”的功能转变为成本优先。诸如此类的例子数不胜数,惟一不变的事实是需求在不断变化。
适应变化
与其减少变化,不如来适应不断发生的变化。这样就形成了开发平台向能支持更加灵活的可编程器件转变的趋势。硬件变化必须更新印刷电路板(PCB)或更换元器件,与之相反,软件变化一般能够更快、更容易地实现。而且,软件在产品发布后还能进行功能升级或修正,并能通过事后对应用程序进行定制实现产品的多样化。
但是,要获得灵活性就必然要付出代价。可编程解决方案通常比等效的功能固定硬件解决方案更加昂贵。为了更快地上市、解决生产过程中发现的问题以及系统现场升级,通常值得付出额外的物料清单(BOM)成本。然而,与日俱增的开发环境复杂性常常被忽视了、或者至少是被低估了。例如,TechInsights最近一项研究表明,当前开发趋势不仅要在单个设计中采用多个处理器,而且要在同一设计中采用多个不同的处理器。
这加重了嵌入式系统工程师的负担,他们必须熟悉可编程器件的开发流程,还要精通多种单片机和处理器及其相关开发环境。
既能执行所有任务又能得到单一开发环境支持的低成本单器件理想解决方案并不现实。更实际的做法是,至少标准化一些能够满足设计人员大多数需求的器件。由于通常关注的焦点都是单片机的处理器内核,因此对单个处理器内核进行标准化就成了最接近单器件理想的选择。使用标准内核可使应用在不同供应商的器件之间轻松转换,这种想法进一步增强了内核标准化的说服力。遗憾的是,选择单片机所涉及的因素远不止一个处理器内核这么简单,必须要对整个开发生态环境有更全面的认识。
完整的开发平台
根据有限的需求来标准化特定处理器内核是一种不错的策略,但几乎所有单片机供应商或处理器内核开发商都提供一系列的处理器架构。事实证明,没有一个独立架构能满足所有要求,特别是在考虑成本的情况下。事实上,根据对工程师的调查,开发工具在选择标准中排名最高。芯片性能在选择标准中排名第二。尽管处理器内核是一个重要因素,但却不是惟一的因素,有时甚至不是主要因素。成本因素在重要性上排位第三,它与器件性能不可兼顾,引发了传统的成本与性能取舍之争,这是任何单一器件或处理器内核都无法调和的矛盾。
除软件环境、性能及成本这些显而易见的选择标准外,外设、操作系统支持、可用代码资源、硬件工具及功耗等其他一些标准紧随其次,重要性不分先后。
问题的关键不是选择某种单一器件或特定处理器内核,而是在仅熟悉一个或少数几个开发环境的条件限制下进行选择,从而缩短学习周期。拥有能够发挥某种器件优势的工程技巧和能力是获得优化设计的主导因素、因此在某个特定开发生态系统中成为专家,将会获得更佳的结果。
因此,标准化的重点应关注完整的生态系统,而不仅是处理器架构。进一步来说,开发人员应考虑这个生态系统内所支持的产品范围,以及能否在不影响整个生态系统的情况下更换元器件,比如编译器、器件或处理器内核、外设、软件库等等。
无论是为应用中的主流32位单片机编写软件,还是为执行系统基本电源管理的小型8位外设单片机编写软件,开发环境都应保持相同。如果当前16位单片机需要升级为性能更高的32位单片机,器件外设的差异不能太大。
选择器件需要考虑的另一个因素是,出现新产品后能否重复使用现有代码。约有90%的工程师会重复使用以前的代码,其中大部分代码均为内部开发。大多数工程师使用c或C++,进行嵌入式开发,这使固件从8位升为32位或者从32位降至16位单片机的过程总是异常困难,如果最初开发代码时并未考虑器件间的转换,问题就更加突出。因此、包括库、硬件工具和器件系列在内的开发生态系统应该尽量实现这种无缝转换。
其他选择标准包括是否提供与整个器件系列保持大体一致的优质文档。是否提供单人解决同一系列所有器件问题的支持,并始终通过此人向设计团队传递客户需求的变化,也是一个需要考虑的因素。
总结
变化是永恒的。应对变化的最好策略是迎接变化并做好规划。标准化有助于降低和适应需求变化带来的影响。不过,单片机平台上的标准化不应该只限于处理器内核。换句话说,标准化的不应该只是处理器内核,而是整个开发生态系统。选择标准还应包括以下因素:
·软件开发环境;
·开发生态环境中兼容器件的范围,包括性能和成本构成;
·不同产品外设之间的兼容性;
·在生态系统中支持器件的硬件开发工具;
·文档一致性;
·所提供的支持以及与支持联络人建立良好的关系;
·最重要的是,能否在生态系统内部转移以适应变化并重复使用现有代码和IP。