嵌入式市场正在发生一场大革命:现在大多数新的微控制器都基于ARM架构,特别是流行的Cortex-M3和Cortex-M4处理器。
许多设备都将基于Cortex-M3和Cortex-M4微控制器,可能只使用一个小电池甚至能量收集作为电源。
今天使用基于ARM Cortex-M3和Cortex-M4处理器的设备是很简单的,因为有大量的开发工具、调试实用程序和许多示例项目可用。
然而,编写高效的应用程序可能需要对硬件架构和软件模型有深入的了解。
提供深入了解流行的软件开发工具以及基于Cortex微控制器软件接口标准(CMSIS)的广泛编程示例。
它还涵盖了Cortex-M4处理器的数字信号处理(DSP)功能和用于与模拟世界接口的CMSIS-DSP库。
一般来说,ARM Cortex-M处理器被视为精简指令集计算(RISC)处理器。
但是随着处理器技术的进步,大多数RISC处理器的指令集也变得越来越复杂,以至于传统的RISC和CISC处理器之间的边界定义已经不再适用。
Cortex-M3和Cortex-M4处理器处理器之间有很多相似之处。
大多数指令在两个处理器上都可用,并且处理器具有相同的NVIC,MPU等程序模型。然而,它们的内部设计存在一些差异,这使得Cortex-M4处理器在DSP应用中提供更高的性能,并支持浮点运算。
因此,两个处理器上可用的一些指令可以在Cortex-M4上以更少的时钟周期执行。
Cortex-M3和Cortex-M4处理器基于ARMv7-M架构。两者都是为微控制器设计的高性能处理器。
由于Cortex-M4处理器具有SIMD,快速MAC和饱和算术指令,因此它还可以执行一些传统上由单独的数字信号处理器(DSP)执行的数字处理应用程序。
Cortex-M0、Cortex-M0 +和Cortex-M1处理器基于ARMv6-M,它的指令集更小。Cortex-M0和Cortex-M0 t在门数方面都非常小,最小配置只有大约12K门2,是低成本微控制器产品的理想选择。Cortex-M0t处理器具有最先进的低功耗优化,并具有更多可用的可选功能。
ARM不制造微控制器。
ARM芯片设计师设计需要的处理器和各种组件,并将这些设计授权给各种芯片设计公司,包括微控制器供应商。
通常我们称这些设计为“知识产品”(IP),其商业模式称为IP 许可。
在典型的微控制器设计中,处理器只占用一小部分硅面积。其它区域由存储器、时钟生成(例如锁相环)和分布逻辑、系统总线和外设(硬件,如I/O接口单元、通信接口、定时器、DAC、ADC等)占用。
虽然许多微控制器供应商使用ARM Cortex-M处理器作为它们的CPU,但存储器系统、存储器映射、外设和操作特性(例如时钟速度和电压)可以在不同产品之间完成不同。
这使得微控制器制造商可以在其产品中添加其它功能,并将其产品与市场上的其它产品区分开来。
这本书重点是Cortex-M3和Cortex-M4处理器。
对于完整的微控制器系统设计的细节,例如外设细节,内存影视和I/O引脚分配,仍然需要阅读微控制器供应商提供的参考手册。
当一家公司获得Cortex-M处理器设计许可后,ARM会用一种名为V erilog-HDL(硬件描述语言)的语言提供处理器的设计源代码。然后,这些公司的设计工程师添加它们自己的设计模块,例如外设和存储器,并使用各种EDA工具将整个设计和各种其它形式转换为晶体管级芯片布局。
市场上有各种各样的Cortex-M单片机产品。这些范围从低成本,现成的微控制器产品到芯片上的高性能多处理器系统。
在为产品选择微控制器设备时,有许多因素需要考虑。例如:
关于如何选择最好的微控制器并没有什么黄金法则。所有这些因素都取决于您的目标应用程序以及您的项目情况。
一些因素,如成本和产品可用性,可能会因时而异。
低功耗
Cortex-M处理器设计也针对低功耗进行了优化。
目前,许多Cortex-M微控制器的功耗低于200mA/MHz,其中一些远低于100mA/MHz。
此外,Cortex-M处理器还支持睡眠模式功能,可与各种先进的超低功耗设计技术一起使用。
性能
Cortex-M3和Cortex-M4处理器可以提供超过3 CoreMark/MHz和1.25 DMIPS/MHz(基于Dhrystone 2.1基准)。这使得Cortex-M3和Cortex-M4微控制器可以处理许多复杂和苛刻的应用。或者,您可以使用慢得多的时钟速度运行应用程序,以减少功耗。
微控制器内部有许多不同的东西。
在许多微控制器中,处理器占用的硅面积不到10%,其余的硅模被其他元件占用,如:
虽然这些组件中的一些对程序员是直接可见的,但其它一些对软件开发人员可能是不可见的(例如,用于制造测试的支持电路)。
用于系统管理的外设和控制寄存器可以从内存映射中访问。
为了方便软件开发人员,大多数微控制器供应商为它们的微控制器提供C头文件和驱动程序库。
在大多数情况下,这些文件是用Cortex微控制器软件接口标准(CMSIS)开发的,这意味着它使用一组标准化的头文件来访问处理器特性。
为了将程序代码下载到微控制器,并执行诸如停止和单步进之类的调试操作,您可能需要一个调试适配器来将PC上的USB连接转换为微控制器使用的调试通信协议。
大多数C编译器供应商都有自己的调试适配器产品。例如,Keil?拥有ULINK产品系列(图2.2),IAR提供I-Jet产品。大多数开发套件还支持第三方调试适配器。请注意,不同的供应商可能对这些调试适配器有不同的术语,例如,调试探针、USB-JTAG适配器、JTAG/SW仿真器、JTAG在线仿真器(ICE)等。
一个带有USB调试适配器的开发板的例子:
软件开发流程取决于使用的编译器套件。如果正在使用集成开发环境(IDE)的编译器套件,软件开发流程通常包括: