说实话,在正式进入公司之前,在学校里最多就是玩玩8位单片机。那时对ARM,对嵌入式这个概念,抱着的是一种可望而不可及的态度,认为那是高深莫测的东西,不是我这样的人能够玩的了的。我相信现在大多数的在校大学生的处境和想法都是和那时的我是一样的。然而通过在公司这一年的成长,已经让我成为了一名合格的ARM工程师,并且接触到了目前ARM公司最新的ARM内核——Cortex-M3。
ARM公司06年推出的Cortex-M3内核,就在当年ARM公司与其他投资商合伙成立了Luminary公司,由该公司率先设计、生产与销售Cortex-M3内核的ARM——群星系列ARM。Cortex-M3内核是ARM公司整个Cortex内核系列中的微控制器系列(M)内核,还是其他两个系列分别是应用处理器系列(A)与实时控制处理系列(R),这三个系列又分别简称为A、R、M系列。当然,这三个系列的内核分别有各自不同的应用场合。
Cortex-M3内核主要是应用于低成本、小管脚数和低功耗的场合,并且具有极高的运算能力和极强的中断响应能力。Cortex-M3处理器采用纯Thumb2指令的执行方式,这使得这个具有32位高性能的ARM内核能够实现8位和16位的代码存储密度。核心门数只有33K,在包含了必要的外设之后的门数也只有60K,使得封装更为小型,成本更加低廉。
Cortex-M3采用了ARMV7哈佛架构,具有带分支预测的3级流水线,中断延迟最大只有12个时钟周期,在末尾连锁的时候只需要6个时钟周期。同时具有1.25DMIPS/MHZ的性能和0.19MW/MHZ的功耗。
以上三段内容是当时我们部门的老工程师在给我们这些新人做培训的时候对Cortex-M3的一个大体上的介绍。那时上面的那些词句对于我们这些从来没接触过ARM的菜鸟来说没有任何概念,但是现在回过头来看,那是一句句多么激动人心的词句啊!低功耗、低成本、高代码密度、带分支预测的三级流水线,6个时钟周期的中断延迟,独立的数据总线与指令总线等等。或许真的只有在深深吃透了一样知识的时候才能够真正体会其中的滋味吧!
下面是一张Cortex-M3内核与ARM7在一些性能参数上对比,我在EasyARM1138嵌入式专题讲座上面等其他场合也多次引用这张对比表。其详细讲解可以观看EasyARM1138嵌入式专题讲座的教学视频。至于有些人问为什么不和8位单片机也做一个对比,这里我想说的是:8位单片机与Cortex-M3内核根本不具有可比性,虽然现在的8位单片机外设也做的很丰富。打个比方,你说拳击赛场上能让48公斤级的选手和86公斤级的选手打比赛吗?虽然这两个选手都是同样的一个鼻子两只眼睛一张嘴。这里是一个道理而已!
在学习Luminary公司的Cortex-M3内核ARM的过程中,虽然也会遇到困难,但是在公司这样的大环境中,有老工程师帮带,有和你同时进公司的同事与你互相探讨,应该来说学习ARM还是件很轻松的事情,也是一件很有乐趣的事情。此外还有很重要的一点就是在我看来,Luminary公司的群星系列ARM非常容易上手。只要有一定的C语言基础,学习并应用它不是什么难事。群星系列ARM的一句广告词就是“只要你懂C语言,你就能轻松玩转这款ARM”。用我们部门的一位老工程的话说就是:Cortex-M3内核的设计以及群星系列ARM的设计遵从一切从简的原则,目的就是让广大的工程师容易上手容易学习,把更多的时间用来花在产品的应用开发上面。就比如说,群星ARM采用驱动库开发方式,Luminary公司已经把底层寄存器用API函数的形式封装好,我们在学习与应用的时候直接调用驱动库函数就可以,不需要去了解底层寄存器的复杂细节,可以说这是大大节省了时间,降低了学习的难度。此外,我们公司也提供了大量的Cortex-M3内核以及群星ARM的学习笔记与应用文档,开发平台IAR简单易学。我想,我那时在学习Cortex-M3内核时所能感受到的也会是现在大家在学习的过程中会感受到的。
接下来还想跟大家说的就是学习一样东西,兴趣是很重要的。在我们公司,对于ARM,对于DSP,或者是FPGA,大家都是说的“玩”。“哎,听说你最近被周工调到Actel部门去玩FPGA了?” “是啊,ARM和FPGA一样玩啦”这就是平时同事之间的调侃。我想,大家对于玩不会不感兴趣吧!当你把一件事当做玩来做的时候,你会不觉得那是一种乐趣是一件很轻松的事情吗?所以玩Cortex-M3其实还是很容易的。
最后,如果大家想入门Cortex-M3,推荐给大家一款入门级Cortex-M3开发板——EasyARM1138。 EasyARM1138是专门针对广大电子信息专业在校大学生而设计的一款基于ARM Cortex?-M3先进内核的高性能、低价格开发板,用于教学、毕业设计、电子竞赛,等等。也是广大单片机爱好者、开发工程师首选的Cortex?-M3开发板。相关资料大家可以查看我们公司的网站。此外网上的《Cortex-M3内核权威指南》大家也可以好好看看,讲的非常好,目前已经有翻译版的了。