初学者往往都会认为ARM开发比51开发高级,但事实是这样吗?本篇文章就基于嵌入式开发领域的知识点分类的视觉来谈谈。 本文也代表作者对嵌入式领域的大体见解。
1. 体系编程方面
CPU体系代表的是某类CPU家族的体系特性,如ARM体系、MIPS体系、X86体系,而嵌入式开发工程师一般是针对集成各种模块的SOC进行编程。因此这里的体系既包括CPU体系,也包括SOC编程。体系编程应该说是嵌入式领域最基本也是最通用的编程技术要求了。所有嵌入式软件工程师都是从体系编程开始的,如ARM体系编程、MIPS体系编程、51体系编程。
嵌入式体系编程区别于PC(X86)编程的最大特点是,嵌入式的中断控制由工程师自己把握,甚至每行代码都由工程师把握。中断、时钟、GPIO和寻址方式是体系编程的基础。这些模块在所有CPU体系中都存在,不管是ARM,还是51。从系统设计来看,ARM和51在很多模块的核心设计理念上都是一致的,要到芯片的寄存器级才体现出不同。当然设计水平和寄存器的多少、CPU字长、流水线等等都最终影响CPU/SOC的性能和功耗。但对于一般的嵌入式工程师来说,他们面对的体系编程,在原理上可以说都是一致的。
接下来就谈谈不同的地方,ARM一般我们认为是高级处理器,事实上ARM也有进入控制器市场,如热销的STM32。而51仅是控制器。很多初学者认为ARM是认为ARM只代表高级处理器了。高级处理器比控制器性能优越,一般集成功能也比较丰富,如音视频编解码、协处理器等等,但在软件开发来看,本人认为处理器和控制器最大的区别在于高级处理器有MMU(内存管理单元),而控制器没有,或者说它只有固定映射。MMU是通过操作系统如LINUX运行的必备要求,而MMU也意味着系统会配备较为丰富的内存资源,可以支持LINUX等复杂操作系统。在其他方面,处理器和控制器在原理上都是一致的。
2.