图1:几种MCU内核对于同一测试代码所需闪存大小比较。
很多单片机应用开发工程师都有使用8或16位MCU器件的经历,可以说8位器件在中国仍是很多开发者的“最爱”,原因之一就是它们的低价和易用性。不过32位的大潮已经袭来,当低价和易用性也成为32位MCU的特性,一场替代革命由此拉开序幕。王朋朋分析了这其中的推动因素:1、如今新应用增加了新的功能和新的特性,因而需要集成更多的I/O口和外设;2、代码增大需要更多的存储器(或者说更高的存储器利用率);3、低端ARM芯片与中端16位和高端8位MCU的价格相当,并且仍不断下降;4、ARM使用统一的开发工具,购买和使用都很方便。对于第二点,王朋朋解释说,对于同一代码,ARM的RISC特性又使其所需的闪存空间与常用的8位MCU—8051相比要低的多,与其他8位MCU内核相差无几。(如图1)
也许有人会争辩道,8或16位MCU也在集成越来越多的功能和外围电路,以巩固自己的市场地位。笔者看来,撇开替代问题不谈,ARM内核的更高性能已经受到越来越多“较复杂”应用开发者的青睐,而且越来越多的半导体厂商推出了基于这一内核的芯片开发平台,因而演讲者所总结的以下一些经验非常值得借鉴:
图2:嵌入式实时操作系统选择举例。
1. ARM≠RTOS。开发项目采用ARM控制器后是否一定需要RTOS完全取决于该项目的复杂度。项目存在以下几种情况就需要考虑使用RTOS:并行的功能模块比较多;定时处理的功能比较多;程序的执行需要判断很多的条件参数或资源;需要规划代码的优先顺序;要保证多个模块的执行时间。
2. RTOS的选择。首先考虑RTOS的性能,如内核实时性、任务切换时间/调度机制和优先级数、中断响应时间;其次是软件组件和设备驱动程序的完备程度、开发工具易用性、移植性、标准兼容性等。再者就是要考虑技术支持力度、操作系统发送形式(源代码抑或二进制代码)、许可证发送形式等等。
她建议,对于源代码开放(uC/OSII、uLinux等)和商业软件(OSE、VxWorks)两个RTOS阵营,可分别针对不同的应用进行选择。(如图2)
3. 至于如何选择ARM控制器,所有用于评估8、16位架构的原则这时也同样适用,无外乎价格、内存(片上闪存/SRAM大小)、功能(片上外设是否满足系统要求、是否有升级空间)、功耗(如可选的省电模式)以及性能(速度、效率等)的考虑。