微控制器

微控制器(Microcontroller,简称MCU)是一种小型计算机系统,通常被用于嵌入式系统中,用于控制各种电子设备和系统。它是一种集成电路(IC),包含了处理器核心、内存、输入/输出引脚、定时器、计数器、串口通信和其他外设,用于执行特定的任务。

能同电脑的性能是天渊之别的,无论从空间资源上、内存资源、工作频率,都是无法与之比较的。PC 机编程基本上不用考虑空间的占用、内存的占用的问题,最终目的就是实现功能就可以了。对于单片机来说就截然不同了,一般的单片机的Flash 和Ram 的资源是以KB 来衡量的,可想而知,单片机的资源是少得可怜,为此我们必须想法设法榨尽其所有资源,将它的性能发挥到最佳,程序设计时必须遵循以下几点进行优化:

1.使用尽量小的数据类型

能用unsiged就不用signed;
能用char就不用int;
能不用floating就不用。
能用位操作不用算数。

2.使用自加、自减指令

通常使用自加、自减指令和复合赋值表达式(如a-=1 及a+=1 等)都能够生成高质量的程序代码,编译器通常都能够生成inc 和dec 之类的指令,而使用a=a+1 或a=a-1 之类的指令,有很多C 编译器都会生成二到三个字节的指令。

3.减少运算的强度

可以使用运算量小但功能相同的表达式替换原来复杂的的表达式。

(1) 求余运算

N= N %8 可以改为N = N &7

说明:位操作只需一个指令周期即可完成,而大部分的C 编译器的“%”运算均是调用子程序来完成,代码长、执行速度慢。通常,只要求是求2n 方的余数,均可使用位操作的方法来代替。

(2) 平方运算

N=Pow(3,2) 可以改为N=3*3

说明:在有内置硬件乘法器的单片机中(如51 系列),乘法运算比求平方运算快得多, 因为浮点数的求平方是通过调用子程序来实现的,乘法运算的子程序比平方运算的子程序代码短,执行速度快。

(3) 用位移代替乘法除法

N=M*8 可以改为N=M<<3
N=M/8 可以改为N=M>>3

说明:通常如果需要乘以或除以2n,都可以用移位的方法代替。如果乘以2n,都可以生成左移的代码,而乘以其它的整数或除以任何数,均调用乘除法子程序。用移位的方法得到代码比调用乘除法子程序生成的代码效率高。实际上,只要是乘以或除以一个整数,均可以用移位的方法得到结果。

如N=M*9可以改为N=(M<<3)+M;

(4) 自加自减的区别

例如我们平时使用的延时函数都是通过采用自加的方式来实现。

void DelayNms(UINT16 t)
{
UINT16 i,j;
for(i=0;i
define MAX(A,B) {(A)>(B)?(A):(B)}

说明:函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。大家要知道的是,函数调用是要使用系统的栈来保存数据的,如果编译器里有栈检查选项,一般在函数的头会嵌入一些汇编语句对当前栈进行检查;同时,cpu 也要在函数调用时保存和恢复当前的现场,进行压栈和弹栈操作,所以,函数调用需要一些cpu 时间。而宏函数不存在这个问题。宏函数仅仅作为预先写好的代码嵌入到当前程序,不会产生函数调用,所以仅仅是占用了空间,在频繁调用同一个宏函数的时候,该现象尤其突出。

1.适当地使用算法

假如有一道算术题,求1~100 的和。

作为程序员的我们会毫不犹豫地点击键盘写出以下的计算方法:

UINT16 Sum(void)
{
UINT8 i,s;
for(i=1;i<=100;i++)
{
s+=i;
}
return s;
}

很明显大家都会想到这种方法,但是效率方面并不如意,我们需要动脑筋,就是采用数学算法解决问题,使计算效率提升一个级别。

UINT16 Sum(void)
{
UINT16 s;
s=(100 *(100+1))>>1;
return s;
}

结果很明显,同样的结果不同的计算方法,运行效率会有大大不同,所以我们需要最大限度地通过数学的方法提高程序的执行效率。

2.用指针代替数组

在许多种情况下,可以用指针运算代替数组索引,这样做常常能产生又快又短的代码。与数组索引相比,指针一般能使代码速度更快,占用空间更少。使用多维数组时差异更明显。下面的代码作用是相同的,但是效率不一样。

UINT8 szArrayA[64];
UINT8 szArrayB[64];
UINT8 i;
UINT8 *p=szArray;
for(i=0;i<64;i++)szArrayB[i]=szArrayA[i];
for(i=0;i<64;i++)szArrayB[i]=*p++;

指针方法的优点是,szArrayA 的地址装入指针p 后,在每次循环中只需对p 增量操作。在数组索引方法中,每次循环中都必须进行基于i 值求数组下标的复杂运算。

3.强制转换

C 语言精髓第一精髓就是指针的使用,第二精髓就是强制转换的使用,恰当地利用指针和强制转换不但可以提供程序效率,而且使程序更加之简洁,由于强制转换在C 语言编程中占有重要的地位,下面将已五个比较典型的例子作为讲解。

例子1:将带符号字节整型转换为无符号字节整型

UINT8 a=0;
INT8 b=-3;
a=(UINT8)b;

例子2:在大端模式下(8051 系列单片机是大端模式),将数组a[2]转化为无符号16 位整型值。

方法1:采用位移方法。

UINT8 a[2]={0x12,0x34};
UINT16 b=0;
b=(a[0]<<8)|a[1];

结果:b=0x1234

方法2:强制类型转换。

UINT8 a[2]={0x12,0x34};

UINT16 b=0;

b= (UINT16 )a; //强制转换

结果:b=0x1234

例子3:保存结构体数据内容。

方法1:逐个保存。

typedef struct _ST
{
UINT8 a;
UINT8 b;
UINT8 c;
UINT8 d;
UINT8 e;
}ST;
ST s;
UINT8 a[5]={0};
s.a=1;
s.b=2;
s.c=3;
s.d=4;
s.e=5;
a[0]=s.a;
a[1]=s.b;
a[2]=s.c;
a[3]=s.d;
a[4]=s.e;

结果:数组a 存储的内容是1、2、3、4、5。

方法2:强制类型转换。

typedef struct _ST
{
UINT8 a;
UINT8 b;
UINT8 c;
UINT8 d;
UINT8 e;
}ST;
ST s;
UINT8 a[5]={0};
UINT8 p=(UINT8 )&s;//强制转换
UINT8 i=0;
s.a=1;
s.b=2;
s.c=3;
s.d=4;
s.e=5;
for(i=0;i

define Perror(FUN) printf(“Err:%s %s %d: %s\n”, FILE, func,LINE,FUN) 类linux的perror函数实现,这里加了出错的文件位置,所在函数,引发出错调用的函数FUN。

宏中#和##的用法
define STR(s) #s
define CONS(a, b) int(a##e##b)
printf(STR(vck));//输出vck
printf(“%d\n”, CONS(2,3));//2e3 输出2000

来源:玩转单片机

围观 415

微控制器(MCU)为半导体行业最为重要的一个产业链之一,近年来愈发受到关注。2016年的MCU行业也是新闻不断,令人出乎意料的收购也是很多。小编在本文中将和大家一起来回顾2016年MCU行业的变化,一起展望2017年MCU的行业发展方向。

亚太地区市场潜力巨大,汽车电子已成兵家必争之地

1

IC Insight已经给出了2016全年的半导体销售TOP2,因为本文主要是做MCU的行业分析,因此抛去晶圆厂TSMC、Global Foundries0和UMC,再抛去内存厂商SK Hynix和Micron,然后抛去专门做消费电子处理器的厂商Intel、Qualcomm、Apple、Sony、Toshiba和Ncidia,前20大半导体厂商中MCU厂商排名为Broadcom、TI、Toshiba、NXP、MTK、Infineon、ST、Renesas、ONSemi这9家。在这几家之中,MTK的年增长率最高,达到了29%,然而也主要是得益于其在手机平板市场上的应用广泛,在微控制器市场主要是集中在开源应用中。其余的微控制器厂商中,排名也在情理之中,并未有出人意料的增长。

因此2016年微控制器厂商的大概排名应该为Broadcom、TI、NXP、Infienon、ST、Renesas、ONSemi。然而其实从通用微控制器的产品线收益来看的话,排名未必如此准确。

2

上图是从IHS iSuppli 在2016年3月21号提供的 通用微控制器厂商的2015年市场排名。可见其实Renesas和Microchip是最大赢家,虽然2016年的数据IHS尚未公布,大胆臆测一下应该还是这两家拔得头筹。两家同为汽车电子半导体行业的龙头老大,而从2015到2016以来汽车电子市场增长迅速,因此这两家的2016年微控制器产品线的收益必然十分可观。

前几年MCU厂商一窝蜂地冲向物联网,而现在看来汽车电子的投入回报比似乎更加可观。

3

上表为2015~2017年全球各地区半导体市场规模及增长率情况,可见亚洲市场车增长率为1.4个百分点,并不如美国2.3个百分点高。美国还是最大的半导体市场,但是单独从汽车电子行业来看,根据下图中IC Insights的数据来看,亚太市场增速最为迅猛,超过美国4个多百分点。

4

因此其实对于MCU厂商而言,亚太市场(尤其是中国)和美国市场将会是其在2017大施拳脚的重点区域。

预测2017年,汽车电子和物联网仍然将是微控制器厂商的必争之地,MCU厂商将持续加投亚洲市场。

物联网给MCU提出了更高的安全要求

伴随着物联网的汹涌来袭,安全问题愈发地引起人们关注。为了守护物联网应用产品的资讯安全及功能安全,产品制造商可以导入四大类防护机制,分别是加密记忆体、具备安全防护功能的韧体、在MCU程式码中加入加密函式库或采用专门的安全MCU来扮演安全元件(Secure Element)。就安全防护能力来说,安全MCU的防护等级最强,对绝大多数软/硬体骇客攻击手法都有对应的防御能力。但对产品制造商而言,因为要导入额外的晶片与韧体,因此必须投入对应的成本跟开发资源,形成一定的导入障碍。 安全MCU的概念已经成为厂商在进行系统设计时选型的重要考虑因素。

针对安全这一行业需求,MCU厂商纷纷推出了自家的安全MCU产品,而令人意外的是IP厂商ARM也推出了新一代的安全微控制器架构Cortex-M23和Cortex-M33。网路安全厂商Fortinet日前公布针对2017年网路威胁的趋势预测。当中也提及,如果物联网装置的制造商无法让设备变得更安全,一旦消费者对安全有所疑虑而不愿购买产品时,则可能会对数位经济造成毁灭性的冲击,而为因应联网装置的安全需求,未来安全MCU的需求也可望大幅提升。

譬如意法半导体近期针对物联网安全亦提供一系列的STSAFE解决方案。

STSAFE是安全验证晶片产品系列,为资讯安全市场提供统包式解决方案。其产品家族包含STSAFE-A(适用于小型设备或节点,如印表机、手机配件等)、STSAFE-J(适用于闸道器,如智慧电网集中器)与STSAFE-TPM(适用于电脑或伺服器)。其中高整合度的STSAFE-A统包解决方案,包含MCU芯片、嵌入式软体、开发工具与主控端函式库(Host Library),可大幅降低为物联网应用导入高强度安全防护机制所需投入的资源。

除了ST之外,TI也在安全MCU方面耕耘多年,自家的Hercules在业界也是以高安全度出名。

5

众所周知,目前最为常见的微控制器皆采用ARM Cortex-M系列的架构,此架构本事并没有安全机制。因此之前为了实现安全,厂商都会单独设计安全部分。然而ARM也意识到了安全对于微控制器的重要性,因此在最近推出了M23和M33架构。新架构采用ARM V8-A指令集,将TrustZone技术纳入其中。可以实现对目前的Cortex-M0、M0+、M3和M4系列产品的安全升级。所以在未来,像ST这种单独一个安全MCU的市场,也会被新架构自带的安全功能所替代一部分。针对安全的实现方法有多种,还是要看厂商的选择。但是不管怎么说,安全已经是MCU厂商的重点。

低功耗广域射频MCU前景广阔

这个有趣,不得不说是2016年的MCU市场的新鲜气象。早先MCU厂商都看到了射频的重要应用,因此纷纷推出了WiFi、Bluetooth和BLE集成的MCU,我们可以将其定义为射频MCU。射频MCU的厂商和知名产品我们就不说了,大家都知道SilpleLink、Gecko、Wiced等品牌。2016年,低功耗广域网络受到了市场的热烈追捧,因为传统WiFi和蓝牙不能满足远距离无线传输的需求,因此NB-IoT、ZigBee、LoRa和Sub-1GHz等新名词层出不穷,个个都要统治世界,轰炸的我们眼前一片黑,不明白到底谁才是真实的市场刚需。

6

不过有些MCU厂商看的比较准,已经推出了低功耗广域协议集成的射频MCU。

比如TI的CC1310和CC1350,将Sub-1GHz和2.4GHz集成进去,实现了双频MCU。全新SimpleLink Sub-1 GHz CC1310和CC1350无线微控制器(MCU)可为楼宇和工厂自动化、警报与安全、智能电网及无线传感器网络应用提供长达20年的电池使用寿命,连接范围扩展至20公里。

SiliconLabs在2016年也推出了集成低功耗广域的SoC,譬如同时支持Thread和ZigBee的Mighty Gecko(EFR32MG)和同时支持2.4G和SUb-GHz的双频FlexGecko(EFR32FG)。新的FlexGecko和CC1350则是完全针对同一市场需求,不知道厂商会买哪家的账?

或许明年microchip会将LoRa集成到MCU中来?这样集成的方案不像是它们的路子,不过也未尝不是某些客户热切期盼的一种产品。

受限于篇幅,其余电机驱动MCU等就先不介绍了。

7

RISC-V:新希望?新王者?玩概念?

你要是还不知道RISC-V,应该就不算是一个合格的嵌入式从业者了。RISC-V在这一年被炒的很火很火,有的人认为RISC-V将把ARM架构干的屁股尿流,有人说RISC-V比Cortex-M更加适合物联网应用,有的人还说RISC-V是中国半导体行业救命稻草,还有人则认为这就是一种小众玩家玩概念、成不了气候。

本文不会对其进行任何评判,一来吹嘘赚眼球确实不是21ic求真务实的本心,而来受限于小编自身高度也无法进行妄断。但是要说起2016年的MCU行业的那些事,我认为RISC-V是不可避开的,不得不说道说道。

8

先简单介绍下,据维基:RISC-V is an open-source instruction set architecture (ISA) based on established reduced instruction set computing (RISC) principles. 即基于RISC的开源指令集架构。

要讲到指令集架构(ISA),你可能知道x86、ARM和MIPS,但是如果你想自己不通过现有指令集制造一个CPU来玩玩,你必须实现从架构设计到编译器的撰写、以及Linux的移植等等。而RISC-V已经帮你解决了这些,你只需直接套用即可。

所以很明显你可以知道业界兴奋的第一个点在哪里了。开源的,所以无需授权费,所以交授权费的厂商们自然内心殷切期待着其成长。RISC-V是由 UC Berkeley 所发展的开源 ISA,具有大约 100 个指令,并且提供 16、32、64、128 等多种记忆体定址方式,更酷的事情是,RISC-V 已经具有 Linux、GCC、LLVM、Yocto 等软体支援,也就是说,任何人都可以基于 RISC-V 制作属于自己的 CPU,并且可以快速移植 Linux 上去。

9

听起来很棒,那么效能如何呢? 为了确认 RISC-V 的效能,UC Berkeley 设计出了一颗名为 Rocket 的 CPU,并选用了和 ARM Cortex-A5 相同的製成,由官方 资讯 来看,RISC-V 除了晶片面积较小以外,运算速度也比较快,更重要的事情是,功耗更低,由此可见 RISC-V 有挑战行动领域的王者 ARM 的潜力。

下表是Rocket和Cortex-A5的对比:

10

RISC-V最近新闻比较多,目前MicroSemi已经宣布成为第一家将RISC-V加入到FPGA中的公司;三星也正在研发基于RISC-V的自主32位CPU,目标是物联网和可穿戴市场。目前SiFive已推出基于台积电0.18微米与28奈米制程的微控制器(MCU)与微处理器SoC平台。另外不少创客团队也已经开始众筹以RISC-V为指令集的开源开发板。

RISC-V确实给予现在的微控制器和处理器市场更多可能,更低门槛,绝对是2016年最为有意义的一项革新。

中国芯

上文中已经提及,有国内从业者认为RISC-V是中国芯翻盘的重要机遇,一定要抓紧抓牢。小编就最后汇总一下中国芯2016年的几大事件,作为我们本文的结篇。

海思自主研发移动设备芯片海思麒麟960发布,Mate 9系列成为首批搭载麒麟960芯片的手机。明年或许有望冲进全球前20强半导体厂商(without Foundry)。

龙芯中科龙芯3A3000四核处理器芯片成功完成流片,成为当今国产最强芯。

然后就是京微雅格的倒闭传言。FPGA的重要性无需多言,发展自主知识产权的FPGA在整个国家战略上都具有重大意义。因此京微雅格的倒闭传言实在是令无数中国半导体行业从业者痛心,目前京微雅格的前途叵测,尽管如此我们还是期望其核心团队能够顶住压力,继续研发。

11

另一个重大的消息就是兆易创新(GD32)的重组上市,这也是引起了业界的轰动。上市归上市,公司的研发动作也很快,最近推出基于ARM Cortex-M4内核的GD32F450系列高性能微控制器,并以200MHz的工作主频在业界首次将ARM Cortex-M4内核的处理能力发挥到极致。从型号命名上大家应该能看出来,这不再是一款追随STM32的产品,这对于GD32来说也是重要的进步。其余国产MCU厂商中,纳瓦特与国际一线大厂一同第一时间拿下Cortex-M23和33的授权,也展现了国产MCU厂商的积极研发态度;北京君正连环收购,也体现了国产MIPS SoC的实力...

本篇只言片语,恐难以偏概全。2016年,ARM被软银收购,高通把NXP又吞了,川普也翩翩上台了...小编预测,明年半导体行业收购不会停,不过MCU厂商基本应该已成定局,不会有过大调整。RISC-V对于国产芯肯定是一个机会,不过到底谁能不能抓住呢?

来源:21ic中国电子网

围观 333

中央处理器是一块超大规模的集成电路,是一台计算机的运算核心和控制核心,它的功能主要是解释计算机指令以及处理计算机软件中的数据。主要包括运算器和高速缓冲存储器及实现它们之间联系的数据、控制及状态的总线。它与内部存储器和输入/输出设备合称为电子计算机三大核心部件。

目前,嵌入式处理器的高端产品有:Advanced RISC Machines公司的ARM、Silicon Graphics公司的MIPS、IBM和Motorola的Power PC 、Intel的X86和i960芯片、AMD的Am386EM、Hitachi的SH RISC芯片;掌上电脑的处理器有六类处理器,分别是:英特尔的PXA系列处理器、MIPS处理器、StrongARM系列处理器、日立SH3处理器、摩托罗拉龙珠系列处理器和德州仪器OMAP系列处理器。

微处理器和微控制器区别所在

微处理器和微控制器的区别,这样的区别主要集中在硬件结构、应用领域和指令集特征三个方面:

其一,硬件结构。微处理器是一个单芯片CPU,而微控制器则在一块集成电路芯片中集成了CPU和其他电路,构成了一个完整的微型计算机系统。除了CPU,微控制器还包括RAM、ROM、一个串行接口、一个并行接口,计时器和中断调度电路。虽然片上RAM的容量比普通微型计算机系统还要小,但是这并未限制微控制器的使用。在后面可以了解到,微控制器的应用范围非常广泛。其中,微控制器的一个重要的特征是内建的中断系统。作为面向控制的设备,微控制器经常要实时响应外界的激励。

其二,应用领域。微处理器通常作为微型计算机系统中的CPU使用,其设计正是针对这样的应用,这也是微处理器的优势所在。然而,微控制器通常用于面向控制的应用,系统设计追求小型化,尽可能减少元器件数量。在过去,这些应用通常需要用数十个甚至数百个数字集成电路来实现。使用微控制器可以减少元器件的使用数量,只需一个微控制器、少量的外部元件和存储在ROM中的控制程序就能够实现同样的功能。微控制器适用于那些以极少的元件实现对输入/输出设备进行控制的场合,而微处理器适用于计算机系统中进行信息处理。

其三,指令集特征。由于应用场合不同,微控制器和微处理器的指令集也有所不同。微处理器的指令集增强了处理功能,使其拥有强大的寻址模式和适于操作大规模数据的指令。微处理器的指令可以对半字节、字节、字,甚至双字进行操作。通过使用地址指针和地址偏移,微处理器提供了可以访问大批数据的寻址模式。自增和自减模式使得以字节、字或双字为单位访问数据变得非常容易。另外,微处理器还具有其他的特点,如用户程序中无法使用特权指 令等。

微控制器的指令集适用于输入/输出控制。许多输入/输出的接口是单/位的。例如,电磁铁控制着马达的开关,而电磁铁由一个1位的输出端口控制。微控制器具有设置和清除单位的指令,也能执行其他面向位的操作,如对“位”进行逻辑与、或和异或的运算,根据标志位跳转等。很少有微处理器具备这些强大的位操作能力,因为设计者在设计微处理器时,仅考虑以字节或更大的单位来操作数据。

DSP芯片分类以及特点

数字信号处理器里的CPU是专门设计用来极快地进行离散时间信号处理计算的,比如那些需要进行音频和视频通信的场合。特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:

(1)在一个指令周期内可完成一次乘法和一次加法;
(2)程序和数据空间分开,可以同时访问指令和数据;
(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;

(4)具有低开销或无开销循环及跳转的硬件支持;
(5)快速的中断处理和硬件I/O支持;
(6)具有在单周期内操作的多个硬件地址产生器;
(7)可以并行执行多个操作;
(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。

当然,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些,DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。DSP芯片可以按照下列三种方式进行分类。

1.按基础特性分

这是根据DSP芯片的工作时钟和指令类型来分类的。如果在某时钟频率范围内的任何时钟频率上,DSP芯片都能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一般称为静态DSP芯片。如果有两种或两种以上的DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼容,则这类DSP芯片称为一致性DSP芯片。例如,美国TI公司的TMS320C54X就属于这一类。

2.按数据格式分

这是根据DSP芯片工作的数据格式来分类的。数据以定点格式工作的DSP 芯片称为定点DSP芯片,如TI公司的TMS320C1X/C2X、TMS320C2XX/C5X、TMS320C54X/C62XX系列,ADI公司的 ADSP21XX系列,AT&T公司的DSP16/16A,Motolora公司的MC56000等。以浮点格式工作的称为浮点DSP芯片,如 TI公司的TMS320C3X/C4X/C8X,ADI公司的ADSP21XXX系列,AT&T公司的DSP32/32C,Motolora公司的 MC96002等。

不同浮点DSP芯片所采用的浮点格式不完全一样,有的DSP芯片采用自定义的浮点格式,如TMS320C3X,而有的DSP芯片则采用IEEE的标准浮点格式,如Motorola公司的MC96002、FUJITSU公司的 MB86232和ZORAN公司的ZR35325等。

3.按用途分

按照DSP的用途来分,可分为通用型DSP芯片和专用型DSP芯片。通用型DSP芯片适合普通的DSP应用,如TI公司的一系列DSP芯片属于通用型DSP芯片。专用DSP芯片是为特定的DSP运算而设计的,更适合特殊的运算,如数字滤波、卷积和FFT,如Motorola公司的DSP56200,Zoran公司的ZR34881,Inmos公司的IMSA100等就属于专用型DSP芯片。

来源: OFweek

围观 379

嵌入式领域的发展日新月异。你也许还没有注意到,但是如果你停下来想一想微控制器系统十年前的样子并与当今的微控制器系统比较一下,你会发现PCB设计、元件封装、集成度、时钟速度和内存大小已经经历了好几代的变化。在这方面最热门的话题之一是仍在使用8位微控制器的用户何时才能摆脱传统架构并转向使用现32位处理器架构,如基于ARM Cor tex-M的微控制器系列。在过去几年里,嵌入式开发者向32位微控制器的迁移一直呈现强劲势头。本文将讨论加速这种迁移的一些因素。

切换的原因? 在本文的第一部分,我们将总结为什么嵌入式开发者应该考虑向32位微控制器迁移。

采取这一行动的最强有力的理由是市场和消费者对嵌入式产品复杂性的需求大大增加。随着嵌入式产品彼此互联越来越多、功能越来越丰富,目前的8位和16位微控制器已经无法满足处理要求。即使8位或16位微控制器能够满足当前的项目需求,它也存在限制未来产品升级和代码重复使用的严重风险。

第二个常见原因是嵌入式开发者开始认识到迁移到32位微控制器带来的好处。且不说32位微控制器能提供超过10倍的性能,单说这种迁移本身就能够带来更低的能耗、更小的程序代码、更快的软件开发时间以及更好的软件重用性。这些优势将在本文后面详述。

另一个原因是 基于ARM的器件的选择余地、性能范围和可用性。如今,越来越多的微控制器供应商提供基于ARM的微控制器。这些产品能提供选择范围更广的外设、性能、内存大小、封装、成本等等。另外,基于ARM
Cortex-M的处理器还具有专门针对微控制器应用的一些特性。这些特性使ARM微控制器具有日益广泛的应用范围。与此同时,基于ARM的微控制器的价格在过去5年里已大幅降低,并且面向开发者的低成本甚至免费开发工具也越来越多。

与其它架构相比,选择基于A R M的微控制器也是更好的投资。现今,针对A R M微控制器开发的软件代码可在未来多年内供为数众多的微控制器供应商重复使用。随着ARM架构的应用更加广泛,聘请具有ARM架构行业经验的软件工程师也比聘请其他架构工程师更加容易。这也使得嵌入式开发者的产品和资产能够更加面向未来。

在下一节,我们将讨论32位微控制器是如何赢得代码长度的比赛,该领域传统上可是8位微控制器的强势领域。

代码长度

指令长度

在很多人的印象中,8位微控制器采用8位指令,而32位微控制器采用32位指令。

事实上,8位微控制器的许多指令是16位、24位或者8位以上的其它指令长度,例如,PIC18的指令是16位。即使是古老的8051 架构,有些指令长度是1字节,也有很多多其它指令是2或3字节。16位架构同样如此,例如,MSP430的某些指令是6字节(MSP430X指令甚至是8字节)。


图 1:不同处理器中单条指令长度

ARM Cortex-M3和 Cortex-M0处理器基于能提供卓越代码密度的 T humb®-2技术。采用T humb-2技术的处理器可以支持同时包含16位和32位指令的Thumb指令集,32位指令功能是16位版本的超集。在大多数情况下,C编译器使用16位版本指令,除非操作只能使用32位版本才能执行。

在Cortex-M处理器的编译程序中,32位指令的数量仅占整个指令数量的一小部分。例如,在专为Cortex-M3编译的Dhrystone程序映像中,32位指令的数量仅占指令总数的15.8%(平均指令长度为18.53位)。而对C or tex-M0来说,32位指令数量所占的比例更低,仅为5.4%(平均指令长度为16.9位)。

指令集效率

ARM Cortex-M微控制器使用的Thumb指令集的效率很高。例如,ARM 微控制器的多加载指令、多存储指令、堆栈推入和堆栈弹出指令允许由单条指令实现多个数据传输。

强大的内存寻址模式还简化了A R M微控制器的内存访问序列。例如,通过寄存器偏移、立即偏移、P C相关或堆栈指针相关(对本地变量有用)的寻址模式等单一指令都可以访问内存。同时,还具有内存指针自动调整等附加功能。

所有基于A R M的处理器在处理8位和16位数据方面是非常高效的。对于8位、16位和32位数据处理,无论是有符号还是无符号,都有紧凑型内存访问指令可以使用。另外还有一些指令专门用于数据类型转换。总的来说,使用 ARM 处理器处理8位和16位的数据与处理32位数据一样简单和高效。

基于ARM Cortex-M的微控制器可提供强大的条件执行功能。针对有符号和无符号数据类型的分支条件进行综合选择,这是现在所有ARM微控制器共有的功能,此外,基于ARM Cortex-M3的微控制器还提供有条件执行、以及比较和分支复合指令。

Cortex-M0和Cortex-M3都支持32位的单周期乘法操作。此外,基于 Cortex-M3的微控制器还支持有符号和无符号的整数除法,饱和运算、32位和64位累积乘法 (MAC) 操作以及多种位字段操作指令。

8位应用程序的神话

许多嵌入式开发人员错误地认为其应用程序仅执行8位的数据处理,因此没必要迁移到32位处理器。但是如果深入了解一下C编译器手册,就会知道丑整数(humble integer,即因子为2/3/5的整数)在 8 位微控制器上其实是16位数据 - 每次执行一个整数操作,或者访问需要整数操作的C库函数,处理的都是16位数据。8位处理器内核必须使用一系列指令和更多时钟周期来处理这些数据。

同样的情况也适用于指针。在大多数的8位或16位微控制器中,地址指针至少需要16位。如果在8051中使用通用内存指针,由于需要额外的信息以表明所指的是哪块内存,或使用存存储体切换或类似技术来克服64K字节内存障碍,指针的使用将增加。

因此,在8位系统中内存指针的处理效率是非常低的。由于在寄存器库中的每个整数变量占用多个寄存器,因此,在8位微控制器中进行整数运算也会导致更多的内存访问,更多的内存读/写指令,以及更多的堆栈操作指令。所有这些问题都大大增加了8位微控制器的程序代码长度。

那么,让我们看看在特定基准实例的比较结果?例如,针对多种进行长度优化的架构编译的Dhrystone程序会产生以下结果:

大多数嵌入式应用程序迁移到基于ARM Cortex-M的微控制器后,由于使用较少的代码而受益,因为这意味着对微控制器内存要求降低,可以使用更便宜的微控制器。代码尺寸减小的原因是指令集效率更高、指令规模更小、以及大多数嵌入式应用程序需要处理16位或更大的数据。

ARM微控制器的代码尺寸较小的优势能够影响微控制器的性能、功耗和成本。在下一节中,我们将从这些方面对基于ARM Cortex-M的微控制器和8 位微控制器进行比较。

性能和能耗

许多嵌入式开发人员从8位和16位微控制器切换到32位微控制器的一个重要原因是其嵌入式产品对性能有更高的需求。切换到ARM微控制器还可降低功耗并且延长嵌入式产品的电池寿命,尽管这些益处通常不易觉察和理解。

性能

比较微控制器性能的一种常见方法是使用Dhrystone基准。它免费、易用且小巧,在微控制器中只占很小的内存(尽管它不是一个“最理想的”基准套件)。原始的8051的性能仅为0.0094DMIPS/M H z。新型8 015s的性能略有提高,例如,Maxim 80C310设备为0.027 D MI P S,最快的8015微控制器宣称拥有0.1 DMIPS/MHz的Dhrystone性能。这仍然大大低于基于ARM Cortex-M微控制器的性能,如Cortex-M3处理器的最高性能是1.25 DMIPS/MH z,C o r tex-M0处理器的最高性能达到0.9DMIPS/MHz。

其它8位和16位架构又如何呢?P I C18的性能为0.02 D M I P S/MHz(内部时钟),比某些8051s的性能还要低,并且Microchip的16位产品性能还不及ARM Cortex-M3微控制器的一半。

图 2:基于Dhrystone 的基本性能比较

8位和16位微控制器的局限

总的来说,8位微控制器在处理16位和32位数据时效率很低。如前文所述,这程涉及到C代码和库函数中的整数及指针的处理。每次在处理整数变量和指针时,都需要一系列的指令,这会导致更低的性能和更长的代码。

造成许多8位和16位微控制器效率低下的另一个原因是指令集和编程模型的局限。例如,8051 严重依赖于累加器 (ACC) 和数据指针 (DPTR) 进行数据传输和处理。结果,将数据移入和移出 ACC 和 DPTR都需要指令,这对代码长度和执行周期来说是个很大的开销。

内存接口本身也制约8位和16位处理器的性能。例如,许多8051 指令是多字节的。由于程序内存接口是8位,所以需要进行多次读取访问,因此,即使指令操作非常简单,获取指令也需要多个时钟周期。

如果需要访问超过64K字节的内存,8位和16位微控制器的性能会进一步降低。这些架构是为处理16位地址而设计的(这些架构使用16位程序计数器和16位数据指针,且指令集的设计只考虑了支持64K字节地址范围)。如果需要超过64K字节的内存,就需要额外的硬件和指令开销来产生额外的地址位。对于需要访问大于64K字节内存的标准8051来说,将把内存分成若干段并且所有段转换代码都要通过#0库来执行。这就增加了代码长
度和时钟周期开销,降低了内存使用效率。某些16位微控制器通过使用更大的程序计数器和内存分割来避免这个缺陷,但是大的地址值仍需要额外处理,还是难免降低性能并增加了程序代码。

低功耗

功耗怎么样呢?关于向ARM架构迁移的最常见问题是它是否会增加能耗。如果您研究一下基于ARM微控制器的最新产品,这个问题就会很清楚了,ARM Cortex-M微控制器的能耗实际上低于许多16位和8位微控制器。

ARM处理器本来就是为低功耗设计的,它采用了多项低功耗技术。例如,Cor tex-M0和Cor tex-M3处理器在架构上支持睡眠模式和Sleep-on-exit功能(一旦中断处理完成,处理器即返回到睡眠模式)。

微控制器中的能耗

要了解Cortex-M微控制器何以降低嵌入式系统的能耗,最好是先了解一下典型微控制器产品的基本构造。在现代的微控制器中,处理器内核不是影响面积的最主要因素。

图 3:使用ARM Cortex-M处理器可以减少硅片面积

如前文所述,8位微控制器的代码密度很低,因此就需要一个更大的闪存,这样就增加了整体能耗。而A R M微控制器具有卓越的代码密度,能够利用更小闪存来降低能耗和成本。

内存访问效率

使用32位总线由于减少了内存访问所需次数,从而降低了能耗。对于在内存中拷贝同样数量的数据,8位微控制器需要4倍的内存访问次数和更多的取指。因此,即使内存大小相同,8位微控制器也要消耗更多功率才能达到相同结果。

Cortex-M微控制器的取指效率要比8位和16位微控制器高很多,因为每次取指是32位,所以每个周期可取得多达2个16位的Thumb指令,同时为数据访问提供更多总线带宽。对于同样长度的指令序列,8位微控制器需要4倍的内存访问次数,而16位微控制器需要2倍的取指次数。因此,8位和16位微控制器比ARM微控制器要消耗更多的能量。

通过降低操作频率来降低能耗

32位高性能微控制器可以通过在更低的时钟频率上运行应用程序来降低能耗。例如,原来在8051上以30MHz运行的应用程序,可以在ARM Cortex-M3微控制器上仅以3MHz的时钟频率运行并且达到同样的性能水平。

通过缩短活跃周期来降低能耗

另外,通过ARM微控制器的休眠模式,可以在某个处理任务完成后进一步降低能耗。与8位或16位微控制器相比,Cortex-M微控制器具有更高的性能,可以在完成任务后更快地进入睡眠模式,从而缩短微控制器处于活跃状态的时间。

图 4:Cortex微控制器可以通过减少处于活跃状态的时间来降低系统能耗

低功耗的总体优势

与8位和16位微控制器相比,ARM Cortex-M微控制器可提供最佳的能效和更高的性能。ARM处理器为实现高能效而设计,应用程序可以充分利用这个优势通过多种方式来降低能耗。

软件开发

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

从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位和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));

调试

对于一些用户来说,选择微控制器的关键要求之一是调试支持。ARM Cortex-M微控制器支持全面调试功能,包括硬件断点、观察点、寄存器访问和运行时内存访问。调试可采用JTAG或串行线协议(两根信号线),搭配标准的Cor tex调试连接器 ,方便将目标板连接到调试主机。

图 5:Cortex-M微控制器的调试功能

Cortex-M3用户还可以通过跟踪支持实现额外的调试功能。Cortex-M3支持选择性数据跟踪、事件跟踪、异常跟踪和文本输出(仪器跟踪)。跟踪数据可以由串行线输出的单引脚接口进行收集,与调试主机连接共享JTAG/串行线连接器。这样,与程序执行相关的有用信息可通过低成本调试硬件所捕获,无需额外的跟踪硬件。

图 6:跟踪功能可提高代码的可视性

许多基于Cortex-M3的微控制器还支持嵌入式跟踪宏单元(ETM) ,它支持完整的指令跟踪。此功能可以对应用程序代码的执行情况进行详细分析。由于Cortex-M0和Cortex-M3存在相似性,可以通过指令跟踪在Cortex-M3上开发和调试应用程序,然后进行少量的代码修改即可将应用程序移植到Cortex-M0上。

选择

使用ARM微控制器的一个最重要优势是选择范围大。基于Cortex-M的微控制器的供应厂商越来越多,外围设备、接口、内存大小、封装和主频范围也多种多样。市场上既有免费和低成本的开发工具,也有具有许多高级功能的专业开发工具。支持ARM 的嵌入式操作系统、编解码器和中间件供应商也日益增多。

软件可移植性

ARM Cortex-M微控制器还提供了高度的软件可移植性。虽然微控制器供应商为数众多,各自都有自己的设备驱动程序库,C编译器供应商也有若干,但是嵌入式软件开发者通过C o r tex微控制器软件接口标准 (CMSIS),可以轻松实现软件移植。

CMSIS已经被包含在许多微控制器供应商提供的设备驱动程序库中。它给内核函数和内核寄存器提供软件接口,并提供标准化的系统异常处理程序名称。基于CMSIS开发的软件可以在不同的Cortex-M微控制器之间轻松地移植,并且使得嵌入式操作系统或中间件可以同时支持多家微控制器供应商和多种编译器套件。CM S I S通过提供更好的软件可重用性来保护软件开发上的投资。

图 7:32 位微控制器的价格已大幅下降

迁移成本

随着近年来制造工艺的不断进步,ARM Cortex微控制器的成本也不断降低,已经与8位和16位微控制器处于同等水平。另一方面,用户对性能优越、功能丰富的微控制器的需求不断增加,大大提高了产量并降低了单位成本。

许多针对ARM Cortex-M微控制器的低成本开发套件和免费开发程序包也不断推出,同时,由于C or tex-M微控制器性能优越且易于使用,有利于减少产品开发时间,从而降低产品的整体开发成本。

结论

从8位微控制器向ARM Cortex-M微控制器迁移可以得到更好的性能,降低复杂软件的开发成本,还能够降低能耗和代码尺寸。迁移到16位架构或其它32位架构则不会获得同样级别的好处。从8位迁移到16位架构只能解决8位微控制器中出现的部分限制。16位架构在处理大型内存(>64K字节)时具有与8位架构相同的效率低下的问题,并且通常基于私有架构,限制了设备选择性和软件可移植性。其它32位微控制器架构在中断特性、能效、系统特性和软件支持等方面也相对落后。一般情况下,迁移到 ARM才能实现最大效益,包括降低成本和适应
未来发展。

无论您的应用程序有何要求,您都可以轻松找到一个适合的ARM Cortex-M微控制器产品。即便日后您需要增强产品以实现更多功能和更高性能或更低能耗,ARM Cortex-M处理器的架构兼容优势还可以让您在不同的A R M微控制器产品之间轻松转换。

图 8:Cortex-M微控制器的优势涵盖深嵌入式系统的各方面要求

展望未来,随着更多Cortex-M微控制器产品的推出,越来越多的嵌入式项目将迁移到ARM。从长远来看,不难发现,ARM Cortex-M成为微控制器的标准架构已是不争的事实。

(本文作者为 Joseph Yiu。Joseph Yiu是ARM公司的处理器设计工程师,负责基于ARM的SoC项目以及包括AMBA开发工具包、PrimeCells、CoreSight在内的IP模块设计。他一直致力于各种Cortex-M处理器开发。)

围观 296

1 – 总览

对于一个 ARM 微控制器的初学者来说,有时候要找到一些有用的设计参考信息是非常困难的一件事。因为在网上实在有太多资源了,最先遇到的困难可能就是能不能找到一个地方帮助你正确选择一款 ARM 的处理器 ,目前,主要有两种 ARM 处理器:

应用处理器 Application processors – 这些都是能跑操作系统的,比如 Linux 呀, Windows RT 啥的。典型应用就是智能手机,移动计算设备甚至服务器。 推荐用 ARM Cortex-A 系列处理器

嵌入式处理器 Embedded processors – 比较典型的包括微控制器产品,以及其他广泛的嵌入式系统。目前在微控制器市场最流行的是 ARM Cortex-M 处理器系列 ,而 Cortex-R 处理器系列常用于专用控制器,比如硬盘驱动,汽车应用以及 基带控制等。

当然最近几年来,基于 Cortex-A 的微控制器也逐渐多起来了。这些微控制器可以跑 Linux 或者 Android 。和传统的模块化电脑 COM ( computer-on-module )相比, 成本降低了很多 。

2- ARM 网站文档

在 ARM 的信息中心 ( http://infocenter.arm.com ) 可以找到大量的 ARM 技术文档。

2.1 – 应用处理器资源

如果你是一个应用处理器的开发人员,或者你想使用一个基于 ARM Cortex-A 处理器的微控制器,那么下面的文档可以帮到你:

参考 文档
1 Cortex-A Series Programmer’s Guide
2 Neon Programmer’s Guide

这些文档深入介绍了 Cortex-A 处理器的架构。如果需要了解处理器产品的概述和相关信息,也可以访问产品网页 ( http://www.arm.com/products/processors/cortex-a/index.php )

如果你需要为智能手机开发基于 Android , Linux 或者 WindowsRT 的应用软件,那么最好从相应的 SDK 文档开始( Software Development Kit 软件开发套件)。 因为经常在编程环境中,应用代码只需要利用设备驱动或者 操作系统的应用程序编程接口,而不需要直接关联底层硬件 。

2.2 – 嵌入式处理器资源

如果你对低成本和低功耗微控制器感兴趣,那么 Cortex-M 系列将是你的不二之选。

您如果访问 http://www.keil.com/learn 网页 ,就会发现ARM提供了教程,应用笔记,视频等有用的资源给Cortex-M微控制器的用户。

同时在信息中心你能找到很多嵌入式处理器的文档。比如有一系列的 Cortex-M 处理器的入门手册:

处理器 入门手册
Cortex-M7 Cortex-M7 Devices Generic User Guide
Cortex-M4 Cortex-M4 Devices Generic User Guide
Cortex-M3 Cortex-M3 Devices Generic User Guide
Cortex-M0+ Cortex-M0+ Devices Generic User Guide
Cortex-M0 Cortex-M0 Devices Generic User Guide

这些文档涵盖了编程模型,处理器内嵌外设(比如中断控制器)以及指令设置等信息。 不过,如果你需要了解其他外设,内存映射以及微控制器(系列)其他特点,还是需要阅读微控制器制造商的用户手册

此外你还可以在 ARM 网站上找到更多的相关信息。从2015年第一季度开始,Cortex-M7的相关文档也能查找了。

如果您是从ARM7切换到Cortex-M的用户,这篇文档(稍微有点老)可能对您有一些帮助: http://www.arm.com/zh/files/pdf/Cortex-M3_programming_for_ARM7_developer...

如果您是从Cortex-M4 切换到Cortex-M7 的用户, 这篇 应用笔记 可以帮到你: NEW App Note: Migrating Application Code from ARM Cortex-M4 to Cortex-M7 Processors

而如果您需要Cortex-R的编程手册,可以点击Cortex-R编程手册

要找其他的Cortex-M产品信息,请访问这个网址

Cortex-R产品的信息,则请访问这个网址

2.3 – ARM 经典处理器资源

如果您选用的是 ARM 经典处理器例如 ARM7TDMI 或者 ARM926EJ-S 同样也可以在 ARM 网站或者信息中心找到相应文档资源 ( http://www.arm.com/products/processors/classic/index.php ). 此外需要强调的是其实有很多微控制器是基于 ARM7TDMI 或者 ARM9 处理器的 . 在 ARM 网站上,您同样可以找到相应的大量技术参考手册 Technical Reference Manuals (TRM) 。

同时,还有不少第三方也提供 ARM7 微控制器的学习指导文档。比如 Hitex 免费电子内部指导手册就涵盖了一些 ARM7 的微控制器产品 ( http://www.hitex.com/index.php?id=download-insiders-guides ).

2.4 – 教育 / 教学用资源

ARM 提供非常多的免费资料用于教学,中国大学的朋友们可 以点击这个链接: ARM 大学计划

2.5 – ARM 网站上的其他资源

在 ARM 信息中心,除了产品信息和用户手册以外,您还可以找到很多:

同时,在 Keil 的网站上 ( http://www.keil.com/ ),我们为初学者提供教程和应用笔记( http://www.keil.com/learn ) 还有许多应用笔记和教程告诉您如何为一些流行的微控制器开发代码 ( 例如 http://www.keil.com/appnotes/list/arm.htm ).

3 – 其他信息和资料

3.1 – 书籍

这里可以找到 ARM 相关书籍 : http://www.arm.com/support/resources/arm-books/index.php

3.2 – 在线资源

除了 ARM 的官网,还有很多地方有不少好的资料

在 ARM 在线社区 , Alban Rampon 建立了一个 MCU resources . 的网页

Stephan Cadene 也在 LinkedIn 上建立一个有用文档的列表 :

Some links and books to begin in ARM Architectures

微控制器厂商也有很多文档,教程,应用笔记等资源。有些厂商还有自己的论坛 。

3.3 – 视频

在 Youtube 上可以找到很多 ARM 的相关视频比如 ARMflix 频道 http://www.youtube.com/user/ARMflix . ARMflix 包含很多有用的教程帮助你学习 ARM 架构和开发工具,其中也包含 介绍 ARM 架构基本原理的内容 ARM Architecture Fundamentals 由 Chris Shore 发布 ( http://www.youtube.com/watch?v=7LqPJGnBPMM ). 中国用户可以去ARM的优酷网站观看其中一部分视频,请点击:ARM视界

3.4 – 开发工具

通常当你安装一个开发套件的时候,里面就已经包含有文档了(有一些甚至还有快速学习指导文档)以及样例项目。这些可以帮助你尽快理解软件开发流程和开展项目

当然也请不要忘记到工具厂商的网站去检查一下有没有其他的应用笔记。

3.5 - mbed 开发平台

mbed 是一个易于使用并且低成本的微控制器软件开发平台帮助你开发 ARM 微控制器。 m bed 板子设计就是用来轻松上手的,并且这个开发环境提供大量的外设和中间件的 API ,你可以为你的系统找到合适的范例。建议从第二版 mbed SDK 上手, SDK 是开源的 ( mbed )

4 – 学习 AAE 和 AAME ( ARM Accredited Engineer / ARM Accredited Microcontroller Engineer )

如果你在学习 AAE or AAME ( http://www.arm.com/support/arm-accredited-engineer-program/index.php ), 你可以在 ARM 网站上找到教学大纲:

不要忘记下载学习指导 ( 注 : AAME) 这些指导会帮助你更详细地了解如何找到相应的信息

同时在 AAE 和 AAME 网页 , 你可以找到其他的参考文档列表。

5 – 总结

其实有很多资源可以帮助大家上手 ARM 的微控制器。希望这篇文章能给你一个好的启示。如果你发现了什么有用的资源,请告知我们让我们做出更新。

原文地址: Getting started with ARM Microcontroller Resources

转自:极客头条

围观 540

可编程SOC器件不但可作为电机控制、模拟测量以及直接驱动LCD显示屏的统一电路板系统用于电动自行车应用,而且还能支持电容式感应技术以取代键盘上的机械按键。此外,SOC器件还能利用内部PWM、MUX和比较器来驱动和控制三相电机,利用内部ADC和PGA来支持传感器输入电池监控,以及利用热敏电阻或RTD等温度感应器件来实现温度感应。该器件不但能直接驱动继电器,以支持刹车灯、车头灯和转向灯,而且能直接驱动LCD显示屏,以显示温度、电池状态、速度、骑行距离及各种错误/警告消息等。

采用基于IDE的工具,可为SoC设计出各种界面和逻辑。这些工具还能提供直接可用的组件模块,可用于设计更为复杂的逻辑,如监控界面的电容式传感器、支持模拟传感器和其它输入的ADC、驱动蜂鸣器的PWM、DAC以及段式、字符或图形化LCD显示屏等。因此,利用可编程SOC,电动自行车系统的开发和生产成本能够大幅降低。

1

微控制器:微控制器通常用于不同传感器输入检测(如节流阀输入、温度传感器、电池输入、燃料传感器、障碍传感器等)、模数转换、输出比较组件等,并可驱动和控制三相无刷车用电机。采用电池供电的电动自行车系统需要超低功耗的微控制器。此外,微控制器也是中控锁系统的一部分,可用来与车辆中使用的各种不同外部器件进行通信。无论何时刹车,均可使用微控制器来自动停止电机旋转,从而避免电机磨损刹车片的速度超过标准的人力自行车。

轮毂电机:通常情况下,无论有无传感器(基于霍尔效应),均可采用无刷电机实现高效可靠的运行工作。

可再充电的铅酸/锂离子电池:电动自行车应用采用了从铅酸电池到锂电池等多种不同的电池类型。其中,可再充电的铅酸电池在电动车中的应用极其广泛。

显示屏与键盘:通常情况下,采用带背光的LCD显示屏不但能显示温度、电池输入、速度、骑行距离及错误/警告消息等,而且还能显示脚踏板辅助系统和能量生成的等级。电动车应用中也采用基于机械按键的键盘,而且键盘还可支持保护电动车的防盗功能。

电源管理:这个子系统可为各功能模块的运行提供电源,并监控电池工作。带比较器和分立逻辑的主机微控制器可用来管理铅酸电池。此外,这种方法也能为微控制器和用户提供关于电池的安全和关键信息。

原理:

目前的电动自行车系统采用16位和32位微控制器。微控制器控制和管理车辆的所有功能和特性。一旦用户打开点火开关发动电动自行车,微控制器就能获得输入,从而启动三相无刷车用电机。微控制器可接收来自用户的各种车辆输入信号,并对车辆进行相应的操控。微控制器按照用户所选择的速度驱动三相无刷车用电机,电机的速度可根据用户的加速和制动传感器输入进行变化和控制。

微控制器采用内部或外部串行EEPROM(I2C/SPI型)来存储距离读数等数据。此外,微控制器还采用实时时钟(RTC)在显示屏上显示准确的时间。

温度测量由板上RTD或热敏电阻型温度感应器件来实现。电动自行车系统还能利用障碍传感器在泊车时获取附近车辆的信息。燃料传感器获取引擎中的燃料信息,微控制器也可监控电池输入并将其在LCD显示屏上显示。继电器驱动电路则用于切换刹车灯、车头灯和转向灯的开/关等。

供电部分由作为电源的可再充电铅酸或锂离子电池组成,且必须满足电池充电器的规定。电池输入向下转换为DC电压,以便为微控制器和其它电路提供动力。点火开关则可启用或禁用板上稳压器。此外,供电部分还可提供电池、过流、过热及启动故障状态保护电路等多种保护功能。OEM厂商也会对手机等外部设备的充电做出相应规定。

2

电动自行车系统的实现

为给出电动自行车系统的实际实现方案,本文介绍了一款基于赛普拉斯PSoC 4的设计。PSoC 4器件完美集成了带数字可编程逻辑的微控制器、高性能模数转换、带比较器模式的运算放大器以及标准的通信和时序外设等。微控制器为32位的ARM Cortex M0,工作频率高达48 MHz,并可提供最大32 KB的闪存和最大4 KB的SRAM以及2 KB的内部EEPROM.

该实现方案采用板上6个P型通道(P-Channel)MOSFET和门驱动器电路来驱动三相无刷电机。PSoC 4器件带有内置PWM、时钟、多路转换器和比较器,可用来驱动和控制三相无刷电机。此外,内置的16位PWM将用于驱动控制电机的FET门驱动器电路。而 PWM的占空比根据用户设置所需的速度而各不相同。

PSoC4带有内部运算放大器、PGA、比较器和12位1MSPS SAR ADC,可提供差动和单端模式,包括采样保持(S/H)功能。ADC可通过改变PWM占空比来控制电机速度,并测量不同的传感器输入以满足电池监控、低成本温度感应、障碍感应和燃料感应等需求。这样系统就无需采用任何外部放大器、ADC或比较器。

利用两个电流DAC(IDAC),该系统可具备通用感应功能,且能够利用任何引脚上的电容式感应技术。PSoC 4架构支持电容式感应组件,该组件同时支持手动和自动调校。采用电容式界面可帮助整个电动自行车系统实现防水性,同时也能直接驱动继电器,从而充分满足喇叭、刹车灯、车头灯、转向灯和LCD显示屏等需求。该器件的工作电压范围介于1.71V到5.5V之间,能与其它外部外设轻松连接,从而实现更多功能。此外,PSoC 4还支持两个独立的在运行中可重配置串行通信模块(SCB),此模块带可重配置的I2C、SPI或UART功能,可用于内外部外设通信。

该实现方案采用可再充电的铅酸或锂离子电池作为电源。输入电压通过板上降压稳压器进行下变频转换。1.71 V的较低工作电压和超低功耗运行,再加上冬眠和深度休眠模式,可支持唤醒时间和功耗折中方案,从而实现更长的电池使用寿命。

采用PSoC Creator IDE工具,我们能通过随时可用的组件模块设计出所有的接口和逻辑,包括面向模拟传感器和其它输入的SARADC和PGA;面向电机驱动应用的PWM、 CLK、MUX和比较器等组件;面向直接驱动字符和段式LCD的组件;面向电动自行车应用中CAN协议接口的CAN组件;以及通过内部系统时钟进行实时测量、从而让系统不再需要外部时钟/振荡器电路的RTC组件等。

此外,PSoC Creator还支持工程师访问包括集成编译器工具链、RTOSes和量产编程器在内的完整的工具生态系统。有了PSoC Creator,开发人员就可利用分层原理图设计创建并共享用户自定义的定制外设。然后,他们能对所选定的组件实现自动布局布线,并集成简单的粘接逻辑 (通常位于分立多路转换器中)。

过流保护用于关闭电机驱动PWM,因而可停止电机运行。PSoC 4器件采用基于比较器的PWM Kill信号触发,可在检测到过流情况时终止电机驱动。该模块的输入来自总线电流,其截止参考可设为电机消耗的最大电流。总线电流输入馈送到比较器和可配置的截止参考,并由DAC进行设置。如果总线电流低于参考阈值,那么比较器输出设为高。比较器输出连接到PWM的“KILL”信号输入。当“KILL”输入为高时,PWM输出关闭,从而可避免电机受损。该完整模块的实现方案将采用PSoC creator组件,且无需设计人员编写的任何固件。

无传感器的电机控制

无传感器的电机控制不需要霍尔传感器,而是采用反电动势(back-EMF)过零检测技术来控制电机的运动。当电机旋转时,每个绕组生成的电压称为与绕组供电主电压相反的反电动势电压。反电动势的极性与绕组激励所用电压的方向相反,并与电机的转速成正比。

3

在图3中,三相反电动势信号终止而DC总线扩展并路由到PSoC.PSoC将采用多路复用器切换到比较器的终止输入,并将其与DC总线电压进行比较。级联的数字逻辑将过滤出PWM信号,以获得真正的过零信号。微控制器将根据该信息决定换向。

可选的电流控制将被应用于PWM输出控制,从而对电机电流进行调节。此内环以比较器为基础:反馈总线电流与12位DAC提供的参考电流值进行比较。改变DAC输出将修改输出电流值。

基于传感器的(霍尔效应)电机控制

基于传感器的无刷电机控制采用霍尔传感器输入来检测转子位置,进而控制电机的运动。它为微控制器提供霍尔传感器输入,并作为闭环系统工作,这有助于实现较长驱动的自动速度锁定。

设计挑战

高性能智能微控制器需要更高MIPS性能的CPU内核、更快速的ADC(》= 500Ksps 10位)、内置闪存和SRAM存储器、内置EEPROM、模拟和数字外设来执行高性能模拟测量、CAN接口、三相电机控制、LCD驱动、低功耗运行、 RTC、不同外部协议接口等关键功能。

该系统可采用低成本前面板设计,实现按键和LED/LCD界面等不同特性。此外,电容式感应技术可用于在前面板上实现按键、滑条和接近传感器。在前面板上利用邻近的LED(PWM型)满足电容式感应性能要求(如信噪比等),这对于系统设计人员来说可能是一大设计挑战。

选择具有低Ron和低栅电容的Power MOSFET正是驱动三相电机所必需的。采用高功率MOSFET驱动电路设计电路板以及处理电池输入的较高板上电流是电路板设计人员面临的另一大挑战。由于该系统涉及机电构造问题,要设计出一款低成本的紧凑型机电系统极具挑战,而且还要让最终设计通过认证。此外,电动自行车系统在设计时需要考虑一次充电能行驶更长里程的问题。

支持恢复机制的故障检测是所有汽车应用都不可或缺的。而且,具有电池保护、过流、过热和启动故障状态保护功能的电源设计也是一大必要条件。

此外,开发人员可能还希望采用一次性可编程(OTP)的器件来防止竞争对手和黑客对固件实施逆向工程。

系统局限性

PSoC 4支持电容式感应技术,可通过触摸操控的键盘取代机械按键。这不仅可减少由机械按键造成的故障几率,同时还可提高产品的可靠性。PSoC Creator支持CapSense SmartSense组件,该组件能自动调校电容式感应按键和滑条的敏感度,从而使开发人员无需再进行手动调校。此外,电容式感应还能提高最终系统的防水性。

在前面板上实现的触摸屏设计取代了LCD显示屏和键盘,这可为用户提供更好的用户界面和更高的灵活性。系统还可添加连接iPod/iPhone等外部设备的接口,通过UART或USB接口实现与媒体播放器的通信,从而支持播放音乐、控制播放列表和设备充电等功能。

故障分析和返回材料:电路板上内外部接口数量的增加必然会让入侵者获得更多途径来对系统实施破坏。这也是嵌入式系统面临的一个最大局限性问题。

在汽车应用领域中所使用的电动自行车系统目前是采用微控制器来实现。PSoC完美结合了微控制器和ASIC.采用基于PSoC的电动自行车解决方案,可帮助我们降低汽车产业的整体产品成本(通过减少BOM成本)和项目开发成本

来源:智能化网

围观 359

引言
  许多嵌入式开发人员对ARM Cortex处理器架构颇为熟悉,但很少有人能够对这种流行架构了如指掌,从而可以充分发挥它独特的特性和性能。新型ARM Cortex-M4处理器尤为如此,它拥有引以为豪的增强架构、天生的数字信号处理(DSP)能力和可选的浮点加速器,使精于此道的程序设计人员或硬件工程师可以充分发挥它的优势。本文接下来将就Cortex-M3/M4微控制器(MCU)的一些更有趣的(但经常遭到忽视的)特性展开详细的论述。
  
大部分采用Cortex-M3/M4 MCU的目标应用是便携式的,并且供电电源来自电池或能源收集系统,因此我们所探讨的大部分概念涉及如何减少系统整体能耗的技术。然而,在许多情况下,这些节能技术也是处理器应用设计的有力工具,可提供:
  
●更符合成本效益的解决方案
  
●更大的升级和采用新特性的设计冗余
  
●有助于产品在激烈竞争市场上脱颖而出的性能和特性
  
ARM Cortex基本介绍
  
就像Advanced RISC Machines(ARM)公司在20世纪80年代所推出的第一代16位处理器内核一样,ARM Cortex系列以哈佛式RISC架构为基础,采用适度的硅封装工艺获得更高性能,以及代码和内存效率。该架构在过去十年间大有进展,扩展出了三种不同的子系列,以满足特定应用的需求:
  
●A型系列处理器针对高效能开放应用平台而优化设计。
  
●R型系列处理器注重提升实时应用的性能和可靠度。
  
●M型系列处理器特别为采用嵌入式MCU的应用而设计,其性能必须在能源效率和降低解决方案成本之间加以平衡。适用于Cortex M系列的常见应用包括智能电表、人机接口设备、汽车与工业控制系统、白色家电、消费电子产品和医疗器材等。

Cortex-M3对比Cortex-M4
  
Cortex-M3架构背后的指导思路是设计一种既要满足应用的成本效益又要提供高性能计算和控制1的处理器。类似的应用包括汽车车身系统、工业控制系统和无线网络/传感器产品等。M3系列为32位的ARM处理器架构引进了多项重要特性,包括:
  
●不可屏蔽式中断
  
●高度确定性、嵌套、向量式中断
  
●原子位操作
  
●可选的存储保护(MPU)
  
除了绝佳的计算性能,Cortex-M3处理器先进的中断结构还能确保系统迅速响应真实世界的事件,同时仍然提供极低的动态与静态功耗2。
  
Cortex-M3和M4处理器共享许多相同的设计要素,包括先进的片内调试特性,以及执行完整ARM指令集或ARM指令子集(用于THUMB2处理器)的能力。Cortex-M4处理器的指令集具有增强的高效DSP特性库,包括扩展的单周期16/32位乘法累加器(MAC)、双16位MAC指令、优化的8/16位SIMD运算及饱和运算指令。总体来说,M3与M4最显著的差别在于,M4具有可选的单精度(IEEE-754)浮点单元(FPU)。
  
多项秘诀造就巧妙解决方案
  
嵌入式设计的成败经常取决于如何在系统性能、能耗和解决方案成本之间找到适当的平衡。许多情况下,开发人员可以采用Cortex-M处理器上的独特特性来优化产品成本或能源需求,同时维持、甚至提升它的性能。例如,Cortex-M内核天生的串行I/O能力能够用于节省能源、简化开发、释放外设以用于其它应用任务。
  
除了传统的串行调试(Serial Wire Debug)功能之外,基于ARM Cortex-M的MCU还可以通过它的单引脚串行监视器输出(Serial Wire Viewer Output,SWO)3提供指令跟踪接口。这个接口可以直接把“printf格式的”调试信息传递给应用代码。SWO允许调试信息直接在任何标准的IDE中浏览。此由于SWO输出内建于内核硬件本身,因此它是Cortex-M内核与生俱来的优点。SWO不占用MCU的任何UART接口,这些接口它们可能早已被分配给了应用。

基于SWO的调试还有一个重要的优势在于,它让微控制器在进入最低的休眠模式时,保持调试连接有效,而在大多数情况下,传统的调试连接这时是不能正常工作的。SWO的指令追踪还可以用于跟踪程序计数器,以帮忙IDE统计出程序各项功能所占用的时间。这些统计数字能够与电流测量结合起来,帮助开发人员对设计功耗进行微调。
  
基于Cortex-M的微控制器供应商正在开始重新认识这项优点,而且有些厂商已经为了这个目的而把功耗模式和电流测量硬件纳入到本身的开发平台。
  
智能休眠节省每一微瓦
  
ARM Cortex-M处理器的Sleep-on-Exit(中断完成时直接进入休眠)是另一项“一箭双雕”的功能,可同时节省CPU周期和能耗。这点在由中断所驱动的应用中格外有用,因为处理器的大部分时间不是在执行中断处理,就是在中断事件之间休眠。在进入中断服务例程(ISR)时,MCU必须花费好几个指令周期把当前线程状态入栈,然后在退出中断处理返回时恢复原有线程状态,即“出栈”。当应用需要处理器在退出ISR后直接进入休眠状态时,传统MCU仍然必须恢复原先存储的状态信息,然后线程代码才能让MCU进入休眠状态。同样地,当下次的中断唤醒MCU时,它的状态必须再次入栈。
  
而当使能ARM Cortex-M微控制器上的Sleep-on-Exit功能后,MCU就会在中断处理完成后直接进入休眠状态,而不用先返回到原有线程上。这会使处理器仍然保持在中断状态,因为消除了唤醒再入栈过程,因而节省下许多宝贵的机器周期。消除入栈出栈过程既节省了时间也节省了能耗,否则电能就会被不必要的指令周期白白消耗,也包括哪些传统MCU在休眠和唤醒之间管理堆栈的代码。而且,当处理器被中止调试请求(Halt Debug Request)唤醒时,出栈过程将会自动进行。
   
ARM Cortex-M4运行更快、休眠功耗更低
  
像许多MCU一样,Cortex-M3/4处理器通常能够采用高时钟速率的方法在中断驱动的应用中节省能耗。如果处理器大部分时间处于休眠状态,这种看似违背直觉但普遍采用的节能策略就会很好,因为运行时间减少所节省的能耗远远大于稍高的操作电流。简单来说,多花10%的电可以省掉20%的时间,总体来说是节能了。
  
这种技术可以应用在任何Cortex-M系列的处理器上,而涉及密集运算任务的应用也能从Cortex-M4处理器的额外能力中受益。它的单周期DSP指令和可选的浮点加速器能大大减少诸如数字信号处理、过滤、分析或波形合成等功能所需要的执行周期数。
  
一些应用仅仅需要DSP处理能力。例如,有些安全系统采用一种以声学分析来感测玻璃破损的装置。玻璃破损时会发出一连串独特的声音和振动,并且在玻璃特有的固有频率时达到最大,在这个例子中是13kHz。大多数采用传感器接口的系统只有在所监测的频率被监测到时,才唤醒处理器。但是当设计中使用带DSP功能的Cortex-M4时就能额外节能,因为它在执行实际的玻璃破损分析时比软件解决方案更快。

甚至,这些使用基于M4微控制器的应用可以更加节能,因为MCU中所包含的高级休眠模式和自治外设可以在CPU休眠时执行许多日程任务。上面提及的节能特性也能带来其它优势。例如,在超音波/声学水表之类的应用中,它们必须在小电池供电下运行多年,需要MCU尽可能长的保持在休眠状态。除了有助于减少MCU唤醒时间之外,Cortex-4 DSP和浮点算术指令也能使用成熟的滤波功能从廉价声学传感器输出中获得所需的信息,从而避免采用昂贵的超声波流量传感器。
  
结论
  
虽然并不完备,但这些林林总总的秘诀与妙方应该能让各位产生好的思路,可以在下一次设计中充分利用Cortex-M系列中一些较不为人知的特性所带来的好处。为了发挥ARM Cortex-M系列的这些和其它重要功能,可参考本文末段的参考资料,它们提供了所需的更多细节。
  
此外,如何通过选择搭配有合适I/O、加速器和其它先进外设的ARM MCU来改善设计性能、功耗和解决方案成本。

围观 338

中央处理器是一块超大规模的集成电路,是一台计算机的运算核心和控制核心,它的功能主要是解释计算机指令以及处理计算机软件中的数据。主要包括运算器和高速缓冲存储器及实现它们之间联系的数据、控制及状态的总线。它与内部存储器和输入/输出设备合称为电子计算机三大核心部件。

目前,嵌入式处理器的高端产品有:Advanced RISC Machines公司的ARM、Silicon Graphics公司的MIPS、IBM和Motorola的Power PC 、Intel的X86和i960芯片、AMD的Am386EM、Hitachi的SH RISC芯片;掌上电脑的处理器有六类处理器,分别是:英特尔的PXA系列处理器、MIPS处理器、StrongARM系列处理器、日立SH3处理器、摩托罗拉龙珠系列处理器和德州仪器OMAP系列处理器。

微处理器和微控制器区别所在

微处理器和微控制器的区别主要集中在硬件结构、应用领域和指令集特征三个方面:

其一,硬件结构。 微处理器是一个单芯片CPU,而微控制器则在一块集成电路芯片中集成了CPU和其他电路,构成了一个完整的微型计算机系统。除了CPU,微控制器还包括RAM、ROM、一个串行接口、一个并行接口、计时器和中断调度电路。虽然片上RAM的容量比普通微型计算机系统还要小,但是这并未限制微控制器的使用。在后面可以了解到,微控制器的应用范围非常广泛。其中,微控制器的一个重要的特征是内建的中断系统。作为面向控制的设备,微控制器经常要实时响应外界的激励。

其二,应用领域。 微处理器通常作为微型计算机系统中的CPU使用,其设计正是针对这样的应用,这也是微处理器的优势所在。然而,微控制器通常用于面向控制的应用,系统设计追求小型化,尽可能减少元器件数量。在过去,这些应用通常需要用数十个甚至数百个数字集成电路来实现。使用微控制器可以减少元器件的使用数量,只需一个微控制器、少量的外部元件和存储在ROM中的控制程序就能够实现同样的功能。微控制器适用于那些以极少的元件实现对输入/输出设备进行控制的场合,而微处理器适用于计算机系统中进行信息处理。

其三,指令集特征。 由于应用场合不同,微控制器和微处理器的指令集也有所不同。微处理器的指令集增强了处理功能,使其拥有强大的寻址模式和适于操作大规模数据的指令。微处理器的指令可以对半字节、字节、字,甚至双字进行操作。通过使用地址指针和地址偏移,微处理器提供了可以访问大批数据的寻址模式。自增和自减模式使得以字节、字或双字为单位访问数据变得非常容易。另外,微处理器还具有其他的特点,如用户程序中无法使用特权指令等。

微控制器的指令集适用于输入/输出控制。许多输入/输出的接口是单位的。例如,电磁铁控制着马达的开关,而电磁铁由一个1位的输出端口控制。微控制器具有设置和清除单位的指令,也能执行其他面向位的操作,如对“位”进行逻辑与、或和异或的运算,根据标志位跳转等。很少有微处理器具备这些强大的位操作能力,因为设计者在设计微处理器时,仅考虑以字节或更大的单位来操作数据。

DSP芯片分类以及特点

数字信号处理器里的CPU是专门设计用来极快地进行离散时间信号处理计算的,比如那些需要进行音频和视频通信的场合。特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:

(1)在一个指令周期内可完成一次乘法和一次加法;

(2)程序和数据空间分开,可以同时访问指令和数据;

(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;

(4)具有低开销或无开销循环及跳转的硬件支持;

(5)快速的中断处理和硬件I/O支持;

(6)具有在单周期内操作的多个硬件地址产生器;

(7)可以并行执行多个操作;

(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。

当然,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些,DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。DSP芯片可以按照下列三种方式进行分类。

(1)按基础特性分

这是根据DSP芯片的工作时钟和指令类型来分类的。如果在某时钟频率范围内的任何时钟频率上,DSP芯片都能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一般称为静态DSP芯片。如果有两种或两种以上的DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼容,则这类DSP芯片称为一致性DSP芯片。例如,美国TI公司的TMS320C54X就属于这一类。

(2)按数据格式分

这是根据DSP芯片工作的数据格式来分类的。数据以定点格式工作的DSP 芯片称为定点DSP芯片,如TI公司的TMS320C1X/C2X、TMS320C2XX/C5X、TMS320C54X/C62XX系列,ADI公司的 ADSP21XX系列,AT&T公司的DSP16/16A,Motolora公司的MC56000等。以浮点格式工作的称为浮点DSP芯片,如 TI公司的TMS320C3X/C4X/C8X,ADI公司的ADSP21XXX系列,AT&T公司的DSP32/32C,Motolora公司的 MC96002等。

不同浮点DSP芯片所采用的浮点格式不完全一样,有的DSP芯片采用自定义的浮点格式,如TMS320C3X,而有的DSP芯片则采用IEEE的标准浮点格式,如Motorola公司的MC96002、FUJITSU公司的 MB86232和ZORAN公司的ZR35325等。

(3)按用途分

按照DSP的用途来分,可分为通用型DSP芯片和专用型DSP芯片。通用型DSP芯片适合普通的DSP应用,如TI公司的一系列DSP芯片属于通用型DSP芯片。专用DSP芯片是为特定的DSP运算而设计的,更适合特殊的运算,如数字滤波、卷积和FFT,如Motorola公司的DSP56200,Zoran公司的ZR34881,Inmos公司的IMSA100等就属于专用型DSP芯片。

主要DSP芯片厂商及其产品

德州仪器公司

美国德州仪器是世界上最知名的DSP芯片生产厂商,其产品应用也最广泛,TI公司生产的TMS320系列DSP芯片广泛应用于各个领域。TI公司在1982年成功推出了其第一代DSP芯片TMS32010,这是DSP应用历史上的一个里程碑,从此,DSP芯片开始得到真正的广泛应用。由于TMS320系列DSP芯片具有价格低廉、简单易用、功能强大等特点,所以逐渐成为目前最有影响、最为成功的DSP系列处理器。目前,TI公司在市场上主要有三大系列产品:

(1)面向数字控制、运动控制的TMS320C2000系列,主要包括TMS320C24x/F24x、TMS320LC240x/LF240x、TMS320C24xA /LF240xA、TMS320C28xx等。

(2)面向低功耗、手持设备、无线终端应用的 TMS320C5000系列,主要包括TMS320C54x、TMS320C54xx、TMS320C55x 等。

(3)面向高性能、多功能、复杂应用领域的TMS320C6000系列,主要包括TMS320C62xx、 TMS320C64xx、TMS320C67xx等。

美国模拟器件公司

ADI公司在DSP芯片市场上也占有一定的份额,相继推出了一系列具有自己特点的DSP芯片,其定点DSP芯片有 ADSP2101/2103/2105、ADSP2111/2115、ADSP2126/2162/2164、ADSP2127/2181 、ADSP-BF532以及Blackfin系列,浮点DSP芯片有ADSP21000/21020、ADSP21060/21062,以及虎鲨 TS101,TS201S。

Motorola公司

Motorola 公司推出的DSP芯片比较晚。 1986年该公司推出了定点DSP 处理器MC56001;1990年又推出了与IEEE浮点格式兼容的的浮点DSP芯片MC96002。还有DSP53611、16位DSP56800、24位的DSP563XX和MSC8101等产品。

文章来源:嵌入式资讯精选

围观 256


系统性能并不等价于计算能力。较低的功耗、丰富的片内外设以及实时的信号处理能力对于大部分嵌入式应用来说是最为重要的。传统的8位、16位单片机已经很好的处理了这类问题,但是随着当今嵌入式设计不断增长的功能需求和特殊要求,许多微控制器厂商开始抛弃他们传统的8位、16位单片机。但是选择32位处理器对于某些任务来可能并不是最适宜的。

系统性能并不等价于计算能力。较低的功耗、丰富的片内外设以及实时的信号处理能力对于大部分嵌入式应用来说是最为重要的。传统的8位、16位单片机已经很好的处理了这类问题,但是随着当今嵌入式设计不断增长的功能需求和特殊要求,许多微控制器厂商开始抛弃他们传统的8位、16位单片机。但是选择32位处理器对于某些任务来可能并不是最适宜的。下面我们就讨论一下单片机的选型问题。

理解系统性能

MIPS(million instructions per second),是微控制器计算能力的表征。但是,所有的嵌入式应用不仅仅是需要计算能力,所以应用的多样化决定了系统性能衡量方式的多样化,大部分参数都同等重要并且难于用一个参数来表示,我们并不应该仅仅从MIPS就判定系统的好坏。也许某一应用由于成本的限制,需要一款高集成度的微控制器,该控制器需要多个定时器和多种接口。但是另一个应用需要高的精度和快速的模拟转换能力。两者的共同点可能仅仅是供电部分,比如采用电池供电。对于一个实时的顺序处理应用来说,通信的失败可能会导致灾难性后果。这样的场合下就需要一个灵巧的控制器。这个控制器应当能够以正确的顺序处理任务,并且响应时间必须均衡。所有上述应用的共同问题可能就是定期的现场升级能力。

除了与具体的产品要求有关外,系统性能的衡量也可以考虑是否有容易上手、容易使用的开发工具、应用示例、齐全的文档和高效的支持网络。

系统性能的相关问题

1.传统8位单片机的局限

大多数工程师十分关注系统性能,因为越来越多的8位和16位单片机家族已经无法满足当今日益增长的需求。陈旧和低效的架构限制了处理能力、存储器容量、外设处理和低功耗要求。8位的处理器架构,比如8051、PIC14、PIC16、PIC18、78K0和HC08是在高级语言(比如C语言)出现之前开发的,其指令集仅用于汇编开发环境。并且这类架构的中央处理单元(CPUs)缺乏一些关键功能,比如16位的算数运算支持、条件跳转和存储器指针。

许多CPU架构执行一条指令需要若干时钟周期。Microchip的8位PIC家族执行一条最简单的指令需要4个时钟周期,这导致使用20M的时钟仅能达到5MIPS.对于其他CPU架构,比如8051内核。其执行一条指令至少需要6个时钟周期,这就使得实际的MIPS要比给定的时钟频率低很多。

  int max(int *array)

  {

  char a;

  int maximum=-32768;

  for (a=0;amaximum)

  maximum=array[a];

  return (maximum);

  }

上述代码是一个简单的C语言函数,表1列出了在三种不同CPU架构上编译这段代码的相应结果。8051内核的执行时间几乎是PIC16内核的4倍,对于AVR架构更是达到了28倍。

  表1不同CPU架构的代码容量和执行时间

  CPU架构代码容量(字节)执行时间(周期)

  8051 112 9384

  PIC16 87 2492

  AVR 46 335

一些半导体厂商解决了时钟分配问题,使得微控制器实现了单时钟周期指令。当时钟频率为100MHz时,Silicon Labs声称他们基于8位8051架构的微控制器能够达到100MIPS的峰值。但是,这里有几个问题:

第一,由于大部分指令需要两个时钟周期甚至更多,所以其实际能力接近于50MIPS;

第二,8051是基于累加器的CPU,所有需要计算的数据必须拷贝到累加器。查看8051处理器的汇编代码,可以发现65%-70%的指令用来移动数据。由于现代8位和16位单片机架构中有一系列和算术逻辑单元(ALU)相连的寄存器。因此,8051内核的50MIPS仅相当于现代8位和16位单片机架构的15MIPS.

  MOV A,0x82

  ADD A,R1

  MOV 0x82,A

  MOV A,0x83

  ADDC A,R2

  MOV 0x83,A

  MOVX A,@DPTR

  MOV OxF0,A

  INC DPTR

  MOVX A,@DPTR

  RET

第三,较老的CPU架构缺乏对大容量存储器的支持。早在七十年代,很难想象需要超过64KB存储器的嵌入式应用,这使得许多CPU设计师选择16位的地址总线。因此,CPU、寄存器、指令集以及程序存储器和数据存储器的数据总线始终受此限制。

第四,在2006年,约有9%的8位嵌入式应用使用了64KB甚至更多的程序存储空间,这代表了8位MCU市场26%的收益。推测2009年,14%的8位嵌入式应用会代表36%的收益。而这14%的应用会使用64KB甚至更多的程序存储空间。

从系统性能的角度来看,所有这些使得较旧的8位MCU逐渐失去竞争力。

2.不适宜32位处理器的场合

旧式CPU架构无法满足当今的市场需求,为了解决这个问题,许多厂商升级至32位的处理平台。对于需要32位处理能力的应用来说这无疑是最棒的选择,但是许多设计师转换到32位平台并非最正确的选择。使用32位MCU来解决8位和16位单片机的自身限制将会导致过高的成本。

大部分32位微控制器无法提供高速、高分辨率的模数(ADC)转换,EMC性能通常较低,且ESD保护较弱。而8位和16位单片机在这些方面优势明显。另外,强的IO驱动能力,可供选择的多种内部、外部振荡器,无需外部器件的片内电压调整器等是8位和16位单片机的另一些优点。

显然,32位CPU包含比任何8位和16位CPU都要多的数字逻辑单元,这导致了高的制造成本。虽然使用一些特殊的半导体工艺可以降低成本,但是弊端是会导致较高的漏电流和静态功耗。某些应用,像水表、燃气表、收费公路电子标签、安全系统等,在他们生命期中的大部分时间,CPU处于睡眠模式,即为停止状态。这类应用的电池寿命必须在5-10年,所以这情况中,不可能将CPU从8位或者16位升级至32位处理器。如果想要提升系统性能只有采用别的方法。

保持采用统一产品线

生产商会定期生产新的嵌入式产品扩展产品线以保持竞争力。这些新产品通常是完善需求、升级性能或者降低成本。其他因素还包括制造工艺升级、提升竞争力和市场发展趋势。独立于最先的设想,新产品总是基于一些核心思想。因此,新的产品或者升级版本会依赖于已经存在的平台和源代码。

研究表明,半数公司潜在重用已有硬件和软件以减少开发时间。工程师对特定MCU产品家族的了解程度、相关MCU的开发文档是否详细以及是否具有高效的开发工具也是降低开发时间和成本的重要因素。

保护知识产权和处理保密信息

一些嵌入式应用用来处理个人信息。另一些授权访问受限区域或者金融领域。几乎所有的微控制器都在运行具有产权的程序。如果相关软件被破解,甚至克隆产品在市场流通,知识产权的所有人可能会失去未来的收益。正是由于这个原因,大部分微控制器都有保护机制。这种机制可以阻止黑客或者第三方使用编程器、调试器或者测试接口来读出程序存储器。

当今,越来越多的应用采用层次设计或者功能模块设计。不同功能模块或者部件之间的有线通信或者无线通信成为一个越发困难和值得注意的问题。为了阻止第三方的非法访问,必须进行加密。这方面的一个例子就是遥控车门开关(Remote Keyless Entry, RKE)或者家庭无线网络。如果传输的数据没有加密,那任何人都有可能使用您的车或使用您的无线互联网连接。传统的解决方法是使用封闭算法或者加密算法,这样只有知道算法的人可以使用。这样的方法被称为通过隐匿来实现安全(security by obscurity),这是一种非常危险的做法。最佳的解决方法是使用诸如AES或者DES这类的公开算法,这类算法既允许公众查阅又可以保障他们的安全。如果你使用私密加密算法或者匿名加密算法,则无法*估安全级别或者发现关键的设计缺陷。

使用公开加密协议的问题是需要强大的运算能力和可靠的算法设计。在现代8位MCU上使用DES算法加密或者解密一个8字节的块所需时间的典型值是大约10 万个时钟周期。这相当于使用全部的15MIPS来支持9600Kbps的通信速度。而32位CPU进行同样的运算通常会快50%-60%.在32MHz系统时钟下,使用45000周期或1.4毫秒只能以45 kbps的速度进行安全数据通信,因为所有的CPU时间都用于加密和解密。显然,系统没有多少时间可以留给实际的应用程序。其次,大多数的无线应用是电池驱动的,如果大多数处理能力都用在安全方面,将缩短电池寿命。

高集成度与中断延时和安全

现在的微控制器在其片内集成了越来越多的外设。通常来说,外设对微控制器高效的完成工作起着至关重要的作用。外设起着连接传感器、系统控制、数据通信、故障控制和计时等多种作用。传统方法是使用中断来与片内外设通信。这样的优势很明显,大大的节约CPU时间,使得软件不必循环检测外设状态,从而本质上提高了CPU的效率。即使如此,中断方式仍然有一些劣势,其中一个就是中断例程中的上下文切换要花费一些处理周期。对于现代的CPU架构来说,中断的上下文切换需要20-100个时钟周期。假设有一个简单的任务,它获取发来的SPI数据。如果SPI的速率是1Mbps,则SPI接收中断的频率可达 125KHz.如果SPI中断处理需要25时钟周期(包括上下文切换),那对于20MIPS的CPU时间来说,仅处理SPI中断就需要花费15%的CPU 时间。如果同时还有其他一系列中断,则意味着CPU必须处理巨大的任务。

使用中断方式的另一个劣势就是中断响应时间对关键系统事件的影响。某些中断源可能要求在触发后CPU必须立即响应。比如汽车的安全气囊、动力设备的急停等危机情况以及紧急情况的应用。所有这些都要求立即相应,或者立即关闭控制系统以防止发生永久性灾难事件。如果CPU需要首先完成其他的中断服务程序或者需要花费较长的时间进行上下文切换,结果将无法预知。

目前,已经有些半导体厂商开发了一些新的技术。这些技术用来取代传统的中断方式或者DMA方式,使用这类技术进行外设通信可以节省大量的CPU时间。

围观 441

页面

订阅 RSS - 微控制器