打印
[牛人杂谈]

ARM的低功耗技术

[复制链接]
1773|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
功耗怎么样呢?关于向ARM 架构迁移的最常见问题是它是否会增加能耗。如果您研究一下基于ARM微控制器的最新产品,这个问题就会很清楚了,ARM Cortex-M 微控制器的能耗实际上低于许多16 位和
8 位微控制器。
ARM 微控制器本来就是为低功耗设计的,它采用了多项低功耗技术。例如,Cortex-M0 和Cortex-M3微控制器在架构上支持睡眠模式和Sleep-on-exit 功能(一旦中断处理完成,微控制器即返回到睡眠模
式)。
使用32 位总线由于减少了内存访问所需次数,从而降低了能耗。对于在内存中拷贝同样数量的数据,8 位微控制器需要4 倍的内存访问次数和更多的取指。因此,即使内存大小相同,8 位微控制器也要消耗
更多功率才能达到相同结果。
Cortex-M 微控制器的取指效率要比8 位和16 位微控制器高很多,因为每次取指是32 位,所以每个周期可取得多达2 个16 位的Thumb 指令,同时为数据访问提供更多总线带宽。对于同样长度的指令序列,
8 位微控制器需要4 倍的内存访问次数,而16 位微控制器需要2 倍的取指次数。因此,8 位和16 位微控制器比ARM 微控制器要消耗更多的能量。

沙发
小灵通2018|  楼主 | 2018-3-17 15:23 | 只看该作者

使用特权

评论回复
板凳
小灵通2018|  楼主 | 2018-3-17 15:24 | 只看该作者

使用特权

评论回复
地板
小灵通2018|  楼主 | 2018-3-17 15:25 | 只看该作者

使用特权

评论回复
5
小灵通2018|  楼主 | 2018-3-17 15:26 | 只看该作者
低功耗的总体优势
与8 位和16 位微控制器相比,ARM Cortex-M 微控制器可提供最佳的能效和更高的性能。ARM 处理
器为实现高能效而设计,应用程序可以充分利用这个优势通过多种方式来降低能耗。

使用特权

评论回复
6
小灵通2018|  楼主 | 2018-3-17 15:26 | 只看该作者
软件开发
任何微控制器,如果没有相应的应用程序支持,只不过就是一个硬件而已。一些嵌入式软件开发人员
可能认为ARM 微控制器的软件开发比较困难。事实上,为ARM Cortex-M 微控制器开发软件要比开发8
位微控制器产品简单得多。Cortex-M 的微控制器不仅可以采用100%的C 语言编程,而且具有多种增强
调试功能,方便定位软件中的问题。此外,互联网上还有很多实例和教程,其包括许多基于ARM 的微控制
器供应商网站以及包括在微控制器开发工具包之内的资源。

使用特权

评论回复
7
小灵通2018|  楼主 | 2018-3-17 15:26 | 只看该作者
从 8位或 16位微控制器向 ARM移植软件
与简单的8 位微控制器相比,ARM Cortex-M 微控制器在外设里通常有更多的寄存器。ARM 微控制器
的外设通常功能更多,因此可利用的编程寄存器也更多。但是别担心,ARM 微控制器供应商会提供设备驱
动程序库,只需调用少数几个函数就可以配置外设。
与大多数8 位或16 位架构相比,ARM 微控制器的编程更加灵活。例如,没有硬件堆栈限制,函数可
递归调用(局部变量存储在堆栈而不是静态存储器中),也不用担心特殊寄存器在中断处理程序中的保存问
题,它在中断入口由微控制器进行处理。例如,对MSP430 来说,您可能会在乘法处理过程中禁用中断,
而对于PIC,您可能会在中断处理程序中保存表指针和乘法寄存器。
有个小知识非常实用: 对于一个架构来说,正确使用数据类型非常重要,因为它能使代码长度和性能
产生很大差别,ARM 的微控制器和8 位/16 位微控制器的某些数据类型大小是不一样的。
如果应用程序依赖于数据类型的大小,例如,预计某个整数要在16 位边界溢出,那么,该代码就需
要修改,便于在ARM 微控制器上运行,数据大小差异的另一个影响是数组的大小。例如:
8 位微控制器应用程序对ROM 中的整型数组可定义为: const int mydata = { 1234, 5678, …};
对于ARM 微控制器,为避免不必要地增大,其定义应该改为: const short int mydata = { 1234,
5678, …};

使用特权

评论回复
8
小灵通2018|  楼主 | 2018-3-17 15:28 | 只看该作者

浮点指令的差异也可导致计算结果略有不同。由于8 位和16 位微控制器性能的局限性,双精度数据,
其实是作为单精度数据(32 位)来处理。在ARM 微控制器中,双精度数据类型是64 位,因此32 位浮点
(单精度)应使用浮点数据类型而不是双精度数据类型。这种差异也会影响数学函数。例如,下面取自
Whetstone 的代码在ARM 微控制器中将产生双精度数学函数:
X=T*atan(T2*sin(X)*cos(X)/(cos(X+Y)+cos(X-Y)-1.0));
若仅是单精度,程序代码应变为
X=T*atanf(T2*sinf(X)*cosf(X)/(cosf(X+Y)+cosf(X-Y)-1.0F));

使用特权

评论回复
9
小灵通2018|  楼主 | 2018-3-17 15:28 | 只看该作者
调试
对于一些用户来说,选择微控制器的关键要求之一是调试支持。ARM Cortex-M 微控制器支持全面调
试功能,包括硬件断点、观察点、寄存器访问和运行时内存访问。调试可采用JTAG 或串行线协议(两根
信号线),搭配标准的Cortex 调试连接器,方便将目标板连接到调试主机。
Cortex-M3 用户还可以通过跟踪支持实现额外的调试功能。Cortex-M3 支持选择性数据跟踪、事件
跟踪、异常跟踪和文本输出(仪器跟踪)。跟踪数据可以由串行线输出的单引脚接口进行收集,与调试主机
连接共享JTAG/串行线连接器。这样,与程序执行相关的有用信息可通过低成本调试硬件所捕获,无需额
外的跟踪硬件。许多基于Cortex-M3 的微控制器还支持嵌入式跟踪宏单元(ETM) ,它支持完整的指令跟
踪。此功能可以对应用程序代码的执行情况进行详细分析。由于Cortex-M0 和Cortex-M3 存在相似性,
可以通过指令跟踪在Cortex-M3 上开发和调试应用程序,然后进行少量的代码修改即可将应用程序移植
到Cortex-M0 上。

使用特权

评论回复
10
小灵通2018|  楼主 | 2018-3-17 15:29 | 只看该作者
从8 位微控制器向ARM Cortex-M 微控制器迁移可以得到更好的性能,降低复杂软件的开发成本,
还能够降低能耗和代码尺寸。迁移到16 位架构或其它32 位架构则不会获得同样级别的好处。
从8 位迁移到16 位架构只能解决8 位微控制器中出现的部分限制。16 位架构在处理大型内存(>64K
字节)时具有与8 位架构相同的效率低下的问题,并且通常基于私有架构,限制了设备选择性和软件可移
植性。其它32 位微控制器架构在中断特性、能效、系统特性和软件支持等方面也相对落后。一般情况下,
迁移到ARM 才能实现最大效益,包括降低成本和适应未来发展。
无论您的应用程序有何要求,您都可以轻松找到一个适合的ARM Cortex-M 微控制器产品。即便日
后您需要增强产品以实现更多功能和更高性能或更低能耗,ARM Cortex-M 微控制器的架构兼容优势还可
以让您在不同的ARM 微控制器产品之间轻松转换。
展望未来,随着更多Cortex-M 微控制器产品的推出,越来越多的嵌入式项目将迁移到ARM。从长远
来看,不难发现,ARM Cortex-M 成为微控制器的标准架构已是不争的事实。

使用特权

评论回复
11
小灵通2018|  楼主 | 2018-3-17 15:37 | 只看该作者
内存
ARM 微控制器具有32 位寻址,可实现一个4GB 的线性内存空间。该内存空间在结构上分成多个区,
每个区都有各自的推荐用法(虽然并不是固定的)。统一内存架构不仅增加了内存使用的灵活性,而且降低
了不同内存空间使用不同数据类型的复杂性。
8051 在外部RAM 内存空间上最高支持64KB 的程序内存和64KB 的数据内存。理论上,可以利用内
存分页来扩展程序内存大小。不过,内存分页解决方案并未标准化,换句话说,不同8051 供应商的内存
分页的实现并不相同。这不仅会增加软件开发的复杂性,而且由于处理页面切换所需的软件开销,还会显
著降低软件性能。
在ARM Cortex-M3 或M4 上,SRAM 区和外设区都提供了一个1MB 的位段区(bit band region)。
此位段区允许通过别名地址访问其内部的每个位。由于位段别名地址只需通过普通的内存存取指令即可访
问,因此C 语言完全可以支持,不需要任何特殊指令。而8051 提供了少量的位寻址内存(内部RAM 上
16 字节和SFR 空间上16 字节)。处理这些位数据需要特殊指令,而要支持此功能,C 编译器中需要C 语
言扩展。

使用特权

评论回复
12
小灵通2018|  楼主 | 2018-3-17 17:31 | 只看该作者
设备驱动程序和 CMSIS
微控制器厂商会以设备驱动程序库的形式提供很多外设控制程序代码。这类代码可显著缩短软件开发
时间。即使你不直接使用该设备驱动程序代码,它也可为设置和控制各种外设提供颇具价值的参考。
在一些ARM 微控制器厂商提供的设备驱动程序中包含CMSIS(Cortex 微控制器软件接口标准)。
CMSIS 是用于Cortex-M 微控制器的一套函数和定义。这些函数和定义是多个厂商共同采用的标准,它使
得在不同Cortex-M 微控制器之间移植软件变得更容易。
CMSIS 由以下内容组成:

使用特权

评论回复
13
小灵通2018|  楼主 | 2018-3-17 17:31 | 只看该作者
寄存器定义,包括NVIC 中断控制、系统控制块(用于微控制器控制)、SysTick 定时器(用于嵌入
式操作系统的24 位减法计数器)。
一些用于NVIC 中断控制的函数
一些实现微控制器核心功能的函数
标准化的系统初始化函数

使用特权

评论回复
14
643757107| | 2018-3-17 23:01 | 只看该作者
上面的图片我觉得比较的有点牵强。

使用特权

评论回复
15
xinpian101| | 2018-3-19 13:22 | 只看该作者
定义数据的时候很重要,类型不能导致系统多运行

使用特权

评论回复
16
xixi2017| | 2018-3-20 17:06 | 只看该作者
看你会用不会的了,现在增强版的8051也具备了多重休眠功能,用于降低功耗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

1540

帖子

4

粉丝