ARM
STM32外设丰富,没有mmu,可以上ucos等小型系统。arm9外设不够丰富,有mmu,可以上linux。如果想上安卓,至少arm11以上才比较合适。
arm7是arm公司推出的以V4指令集设计出来的arm核,基于arm7可以生产出很多CPU芯片,其代表的芯片有s3c44b0等;
arm9是arm公司推出的以V5指令集设计出来的arm核,基于arm9其它公司推出了自己的CPU芯片,如三星推出了S3C2440。还有TI啊,ATMEL啊,高通啊都基于arm9推出了自己的CPU芯片。
STM32是就是基于Cortex-M3这个核生产的CPU。stm32是cm3构架的,是arm取代arm7的。主要还是前后台编程,也可以挂μcos系统。在学习arm9之前接触stm32会有些帮助,但不是特别多。arm9主要是挂系统能力强一些,而且和以前的编程习惯完全不一样
ARM9、ARM11是哈佛结构,所以性能要高一点。ARM9和ARM11大多带内存管理器,跑操作系统好一点,ARM7适合裸奔。不跑操作系统,价格低一点的:ARM7、cortex-M3等等。性价比高,可跑也可不跑操作系统的:ARM9、cortex-Rx等等。性能高的,通常要跑操作系统的:ARM10、ARM11、Cortex-A8等等。成熟的:ARM7\ARM9\ARM11。发展趋势:Cortex-A、Cortex-R、Cortex-M。
2410和2440都是三星公司生产的基于ARM9内核的芯,资源上相差不大,2440多了camara接口,速度要更快一些。上边讲的版本是指内核版本,而各个公司出的发行号又各有不同。比如三星的2440,atmel的9260.就好比linux的内核版本号与红帽子的发行号不一样是一个道理。
ARM9一般是有MMU的,ARM9940T只有MPU,不是一个完整的MMU。
ARM11当然也有MMU的。
这一条很重要,MMU单元是大型操作系统必需的硬件支持,如LINUX;WINCE等。这就是说,ARM7一般只能运行小型的实时系统如UCOS-II,eCOS等,而ARM9无此限制,一般的操作系统都可以移植。其实即使ARM720T能支持LINUX;WINCE等系统,也鲜有人用,因为以ARM7的运行速度跑这种大型操作系统,实在有点吃力。再者两者的应用领域明显不同,也无此必要。
下面两个图:架构一幕了然。
在从ARM7到ARM9,ARM11的平台转变过程中,有一件事情是非常值得庆幸的,即ARM9,ARM11能够地向后兼容ARM7上的软件;并且开发人员面对的编程模型和架构基础也保持一致。
下面图是一些特征比较
对于ARM嵌入式的初学者,建议用ARM9开发板。
首先,从功能上来说,ARM11要比ARM9强一些,但是性能优异并不代表适合初学者。对于初学者来说ARM11的有些功能是冗余。其次,学习ARM9或者ARM11就在所难免学习其所支持的操作系统Linux(ARM11可以支持Android)。
目前,市面上ARM9的开发版的价格要比ARM11低很多,而两者都可以运行Linux操作系统。并且ARM9开发板的资料和教学视频也更多一些。jz2440+韦东山系列教学视频,mini2440+国嵌视频都是不错的选择。
最后,学习ARM9,可以按Linux应用开发、驱动开发顺序学习。如果想学习Android系统开发,可以学完ARM9再学习ARM11开发板下的安卓系统开发。因为安卓系统就是Linux内核+libc库用Java封装而成。
ARM9是比较成熟的系列,现在很多成熟的产品都是用arm9开发的。这个学好了,以后的系列自学都会容易一些,因为ARM系列架构都是一样的。所谓“师傅领进门,修行在自身”,学会用一种处理器,掌握学习方法,其他的也一样。
如果有单片机基础,但是没有玩过ARM,建议学习STM32,甚至说没有玩过单片机想入门的也可以选择STM32,因为STM32例程丰富,资源比较多,市面上成熟的开发板也比较多,而且基本价格都在300以内。
全部0条评论
快来发表一下你的评论吧 !