初学嵌入式是选择单片机还是直接选择ARM
单片机对于广大初入嵌入式的朋友来说,最熟悉不过。从最经典的51系列的8位单片机,到类似Microchip的16位单片机等。
从近年来嵌入式的发展来看,ARM确实占据了大部分市场。ARM也分为4个发展方向:一个是经典ARM处理器,其中比较有代表作的是ARM7的44B0,ARM9的S3C2440,ARM11的S3C6410;第二个方向是微控制CortexM、R系列的处理,我想这部分内容正好是ARM用来对付单片机市场来设置的。其中代表的处理器是NXP的LPC系列还有STM32;第三个发展方向是更加高端的应用处理器,Cortex-A系列,其中代表作为S5PV210等处理器,他们应用在手机、平板电脑等更高功能需求的设备上;第四部分是做可编程逻辑芯片,想必是要争抢FPGA、CPLD的市场。
有人说单片机要比学arm简单,我们就来分析一下。
1、从硬件原理来说,单片机与Cortex-M系列处理器,几乎等同。一般单片机提供的接口无外乎以下几种:电源、竞争、IO、8位总线、SPI、I2C、串口等。而对于Cortex-M系列功能更多一些,比单片机多了USB、网络。32位总线等。
2、从软件角度来说,主流开发语言都是C语言,开发工具也无外乎Keil、IAR等开发环境。两者能够接触到的操作系统,在实际应用最多的还是ucos。所以纵观以上这些,二者的开发难度相当。
3、从成本来说,学习的目的还是为了有一天能够得到应用,这时候最关心的成本了。单片机的价格从几块到几十块,Cortex-M系列的处理器也类似。取个平均值来说,大概10~20之间,就能满足大多数的实际需求。
4、实际产品的电路设计,基本2层电路板就能搞定。打板费用也比较低。
笔者分析到现在之后,可以得出一个结论,学习ARM的低端CortexM系列无论从难度上还是日后使用上,都可以完全替代单片机。
可是当笔者从大学走入社会实际工作之后,却发现客户的需求越来越超前,仅仅是Cortex-M根本满足不了客户的实际需求。
举个例子:客户说我要大屏显示,我要触摸,我要SD卡存储数据,我要Wifi,我要USB键盘,我要多任务处理,我要播放音乐,我要。。。。。。。。
每次遇到这样的客户,都让笔者痛苦万分。于是下定决心,学习更高端的ARM处理。正当笔者寻找到2440资料的时候,发现已经停产了。。。。。悲剧啊,ARM已经停止多经典处理器的支持了。现在都是Cortex-A8的时代了。
为了迅速让我的客户得到满足,我选择了芯灵思公司的一款210开发板。这时又有一个问题摆在笔者面前,选择什么样的操作系统呢?
是选择Linux还是Wince,或者直接选择最近比较火的Android呢?
因为客户有对图形界面的特殊要求,所以首先排除了linux系统,因为linux系统本身不具备图形系统,他是借助QT来做图形开发的,环境很难搭建。也没有更多的历程。而Android系统过于庞大,笔者一时很难融会贯通。所以决定选择Wince系统作为开发产品的标准平台。而芯灵思的这款210开发板正好对WinCE系统支持的非常好。这样使我的产品能够迅速开发成功。
由于WinCE系统的很多程序跟PC很相近,所以好多windows程序稍加改动就可以直接运行了。我当时先从最简单的MFC程序学起,做了简单的界面,也基本满足了客户提出的所有问题。
由于时间原因,先写到这里。日后再续。