ARM公司在ARMv7后,开始采用新的产品名称,分为3个系列:
在中低端应用市场中,Cortex-M系列芯片用的最多,正如ARM公司所说:“ARM Cortex-M 处理器是全球微控制器标准”。
Cortex-M问世后,各大芯片厂商(TI,ST,Freescale,NXP,ATMEL)分别推出了自己的基于Cortex-M内核的产品,其中以Cortex-M3内核芯片为甚,比如国内市场上最火的STM32系列。后来,ARM公司为了满足微控制器的低功耗应用市场需求,裁剪了M3的部分特性,精简指令,推出M0内核,这直接威胁到传统8位和16位机的生存空间。另外,同为Cortex-M系列的M4,则拥有内置浮点运算单元和DSP组件,使其更适合需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。
Cortex-M的出现,致使微控制器市场重新洗牌,现在的情况是:Cortex-M芯片的市场售价非常低廉,甚至能与传统的8位机相抗衡的地步:比如高端的AVR mega128 单片机,市场价在40元左右,这个价格能买到更远比AVR mega128强大的Cortex-M芯片,同时Cortex-M芯片带来的创新也能极大的减少开发人员的劳动强度,比如强大的调试系统,完全采用C语言编程。另外,M0内核芯片主打传统8051和ARM7/9中间空白区域的那块市场,取代8051只是时间问题。
由此看,Cortex-M内核统一了原来各大芯片厂商独有的32位架构,覆盖了中低端MCU市场。Cortex-M即将成为了微控制器的事实标准。
此后ARM公司及时推出了CMSIS(CortexMicroControl Software Interface Standard)来统一编程模型,向开发者提供一致API编程接口。需要注意的是:ARM并没有统一外设,因为ARM公司打造的是一个健康的生态圈,要想生态圈可持续发展,就要给其它厂商生存的空间。因为各大芯片厂商在获得ARM公司授权后,在原有Cortex-M内核基础上,添加自己独有的功能,生产各种独具特色的芯片,来满足不同应用市场。芯片厂商就是靠外设差异化来生存的。如果ARM统一了外设标准,各个芯片厂商造出的芯片一模一样,它们就没什么竞争力了,自然也没有了生存空间,厂商没了生存空间,ARM自然也长久不了。
对于我们芯片开发者来说,因为有了统一的内核编程模型,所以我们可以编写的内核代码,不用做任何更改,便可移植到另外一种Cortex-M芯片上,这减轻了我们的负担。但是对于各个芯片的外设,还是要单独编程,没有可移植性而言,比如:在某个项目中,需要使用LPC的PWM模块来控制舵机,我们不得不先查Reference Manual,然后配置时钟,设置周期,模式,配置占空比;这个项目做完后,开始了下一个项目,也是用PWM模块来控制舵机,但是这次使用的是TI的芯片,额,我们又要重复一遍LPC上面的过程,配置时钟,设置周期,模式,配置占空比,这个项目做了一个月,终于结束了;然而,下一个项目又是用PWM控制直流电机,但是因为价格因素,采用了STM32芯片,用控制占空比来决定电机转速。估计要崩溃了,其实吧,从功能层面来讲,不同芯片的PWM主要功能都是一样的,不同的是:1:具有PWM的某些特殊功能。2:寄存器设置不同。
其实,回顾计算机历史,我们会发现某些相似的现象,比如C和汇编,汇编是不可移植的,依赖于特定平台,编写的汇编代码不具备可移植性,原有代码不能重用,这就极大的加重了工程师的负担,后来,为了简化编程,出现了C,这样,编译器就代替了我们的工作,将可移植性的C代码生成不可移植的汇编代码。我们采用可移植性的C语言后,就提升了抽象层次,不再考虑具体而微的汇编执行级代码,而是侧重于逻辑层。
现在回到外设的差异性问题,我们也不得不思考,有没有会有一种产品能解决这个问题,扮演像编译器那样的角色。OK,世界上总是不乏聪明人,精明公司,比如Coocox,说Coocox战略眼光独到,就是因为Coocox看准了两点:
1:Cortex-M会主导MCU市场。
2:内核统一了接口,但外设接口标准还没有统一,这里存在个真空地带。
Coocox据此推出了CoX软件接口标准,打算借此统一外设,同时推出了各种嵌入式开发工具,比如CoIDE,CoFlash,ColinkEx等,看来Coocox是想控制整个工具链。具体Coocox的各个组件作用,这里不做解释了,感兴趣的,可以去官网看下。
ok,现在回到Cookie的话题,按照官网的介绍,Cookie是开源项目,面向广大电子爱好者,软硬件都开源。感觉和最近很火的arduino和Raspberry Pi模式很像,仔细分析Arduino,Cookie,RaspberryPi,会发现三者无论是开源精神,目标市场,受众人群,都非常相似,但是三者组合起来后,便完美的覆盖了整个MCU市场。
首先说下Arduino。
Arduino的起源很有意思。据说Massimo Banzi在一家高科技设计学校老师时,听到学生们经常抱怨找不到便宜好用的微控制器。 Massimo Banzi也是个很负责的老师,于是他找到了西班牙籍晶片工程师DavidCuartielles讨论了这个问题,最后两人决定设计自己的电路板,并让Banzi的学生David Mellis为电路板设计编程语言。三个牛人在一块儿,效率自然出奇的高,两天以后,David Mellis就写出了代码,又过了三天,电路板就完工了。这块电路板被命名为Arduino。几乎任何人,即使不懂电脑编程,也能用Arduino做出很酷很炫的,好玩的东西。随后Banzi,Cuartielles,和Mellis把设计图放到了网上。保持设计的开源的理念,因为版权法可以监管开源软体,却很难用在硬体上,他们决定采用Creative Commons许可。 Creative Commons(CC)是为保护开放版权行为而出现的类似GPL的一种许可(license)。在Creative Commons许可下,任何人都被允许生产电路板的复制品,还能重新设计,甚至销售原设计的复制品。你不需要付版税,甚至不用取得Arduino团队的许可。然而,如果你重新发布了引用设计,你必须说明原始Arduino团队的贡献。如果你调整或改动了电路板,你的最新设计必须使用相同或类似的 Creative Commons许可。
电子爱好者,向来喜欢开源的作品,所以Arduino一推出,立即受到大家的欢迎,在全球火了起来,并带动更多的人来玩这个toy。国内也有很多的Arduino爱好者社区,每个人将自己基于Arduino做的很酷的东西,分享给大家。慢慢的,Arduino积累了很多的兼容模块,基于这些模块,爱好者可以做出非常更多的toy,这是个良性发展的过程。
但是,现在随着电子行业的发展,用户体验得到前所未有的重视,比如触摸屏,图像处理等,这就对芯片性能提出了更高的要求,同时软件的复杂度成倍增加。因为Arduino基于最低端的AVR芯片,8位机,主频8/16MHz,性能上渐渐不能满足要求了,同时缺乏强有力的调试手段,在面对复杂软件时,难以调试,如果你玩过8051,相信对软件调试方面,有很深刻的体会。另外一方面呢,芯片的价格变得很低,现在某些Cortex-M32位芯片的价格,能和传统8位机相抗衡,这样,就凸显了32位的极高的性价比,为Arduino升级芯片是必然趋势。
提到Arduino,就不得不提到最近很火的Raspberry Pi(国内称之为:树莓)。
无独有偶,Raspberry Pi也是一位老师发明的,剑桥大学的Eben Upton和他计算机实验室的同事发现,最近几年招收的高材生,在编程方面很弱,远远比不上前几年的学生水平,是什么原因导致了这些学生缺乏编程能力呢,后来Eben upton发现,最近几年,游戏和娱乐应用极大的发展,导致这些学生开电脑的第一件事便是玩游戏,而不像他们那些人上学时,打开电脑就是敲hello world代码。看到了吧,剑桥老师就是这么敬业,如果你想成为剑桥的老师,打开电脑敲hello world吧 ^_^
后来,这几个老师动手做了个便于编程的微型计算机,打算给计算机专业学生使用,后来发现,随着手机芯片的发展,媒体应用变得越来越重要,比如听音乐,上网等等,在某些经济不发达的地区,还未普及计算机,很多人用不起昂贵的PC,这样,Eben upton, Rob, Jackand Alan, 联合其它公司的CEO成立RaspberryPi慈善基金,打算造些更便宜的计算机让每个人都有机会使用计算机。比尔盖茨曾有一个梦想:让每个人都有自己的电脑。现在看来,实现这个梦想的可能不是微软(Microsoft),而是Raspberry Pi 慈善基金。
树莓在发布后的第一天,便销售一空,足见其受欢迎程度。如果你也打算买一个玩玩,可以在e-络盟订购,e-络盟是PremierFarnell的中国子公司,目前 Premier Farnell 和 RS Electronics是Raspberry Pi 的唯一全球代理。关于Raspberry Pi的详细介绍,可以访问其官网http://www.raspberrypi.org/
现在从技术角度来看Raspberry Pi,它采用更高级的手机芯片ARM11,主频700MHz,采用linux系统,现在支持Android 4.0系统,性价比很高的toy,但是学习难度也是非常高的,如果你没接触过linux,ARM11,想玩转Raspberry Pi简直是徒步登天。不过,估计剑桥大学的学生有这水平,对于咱们智商一般的爱好者来说,还是一步一步学习,逐渐进阶,这个比较靠谱点。假设你玩过Arduino,想玩Raspberry Pi,三思啊,先考虑下你有没有那个能力,再做决定。
这中间的学习空白地带,由谁来填补呢,当然是Cookie。从芯片性能上来说,Cortex-M系列芯片高于8位机,但比ARM11性能弱。在上手难易程度上,Cookie也是介于Arduino和RaspberryPi之间,Arduino是玩具级,Raspberry Pi是系统级,而Cookie系统规模介于二者之间,完全处于可控范围内。
另外,Cookie的接口完全兼容Arduino板,这样,原来在Arduino上使用的模块板,完全不用更换,可以直接拿到Cookie上使用。
Cookie另外的优势是:可以充分利用Coocox公司的各种开源工具。
比如组件平台,一个类似apple store的地方,专门为开发者提供的组件平台。在传统的Arduino社区,电子爱好者也乐于分享组件代码,硬件模块,但是它们是分散的,基于各个论坛的,没有个全球统一的平台,不便于统一管理,现在Coocox实现了这个平台,爱好者可以将自己的驱动代码,组件和很酷的东西,实时分享给全球的爱好者。
比如CoX接口,爱好者可以借助于这个接口来开发各种驱动,这样,其它人就可以直接拿来使用你开发的驱动直接使用了。关于CoX的好处,前面介绍过了,这里不再详细说明。
总之,Cookie是一个很不错的硬件平台,有许多潜力等待你去深度发掘;Coocox的决策层也有非常敏锐的市场洞察力,未来这个公司的走向如何,值得关注。
Cookie已上桌,欢迎品尝。