嵌入式系统架构中的硬件架构解析
硬件架构以ARM为主,有很多人可能分不清ARM这个单词到底代表什么意思。感觉好像很多地方都有ARM这个词,而且意思还不甚一致,佩特科技在这里稍微解释下。
一、ARM公司
首先ARM是一家英国公司(全名Advanced RISC Machines),于1991年成立英国剑桥,由苹果、诺基亚等等合资成立,主要业务是出售芯片设计技术的授权,也就是常说的IP,它的盈利方式有点类似于高通,但是高通有很大一部分收入来自于专利墙,从这点来说ARM还是差了不少。ARM的IP包括物理IP(嵌入式内存IP、逻辑IP、接口IP等),图像与多媒体(熟悉的Mali系列GPU以及video、显示等),其它还有系统IP(CoreLink(核心)连接内存控制器、CoreLink(核心)连接系统控制器、TrustZone安全IP),无线IP等等。
二、ARM处理器
一颗SOC包括处理器内核、GPU(可选)、各种片上外设(USB、I2C、ISP等等),嵌入式领域的SOC处理器内核主要就是ARM、高通(Kyro等)、还有苹果的。前期ARM的处理器型号有ARM7/9/11,例如熟悉的三星的S3C2440就是ARM9的处理器内核,这是比较早期的架构了,从ARM11开始就分出了三个不同的分支,现在我们最熟悉的是ARM公司的三种不同系列的处理器,Cortex-A/R/M系列。
Cortex-A:主打高性能,为各大嵌入式操作系统(Linux、Android等)提供基础硬件,常见于手机、平板、IPC等嵌入式设备。最新有A75、A53等等,再往前有A7等,像联发科的最新X30处理器用的就是双核A75、四核A53、四核A35。高通的处理器芯片早期是Krait,从820开始转为Kryo架构,与ARM的处理器架构有所区别,不过其指令集用的还是ARM指令集。
Cortex-R:主打快速响应,用于实时性要求强的场合。这一系列并不像M/A系列那样为人熟知,它通常用于硬盘控制器、网络设备或打印机、汽车控制系统等。
Cortex-M:更小、更低功耗,用于离散处理与微控制器。常见的使用该系列处理器内核的有K60(飞思卡尔用的较多,有Cortex-M3/M4等),STM32(工业控制用的较多,有Cortex-M0/M3/M4等),像有些比较熟悉的产品中都用到了STM32,比如米家的小米扫地机器人(全志R16-CortexA7,STM32F103-CortexM3),大疆无人机(很多个STM32联合使用)。
三、ARM指令集
ARM指令集是ARM平台处理器的操作指令系统,指令集定义了数据处理、加载、处理与存储等等一些系列指令,有了指令集,处理器才能按照特定的要求去执行相关的动作,完成指定的操作。ARM的部分指令集版本与部分处理器版本的对应关系表如下表:
四、架构
1、哈佛架构
一种将程序指令存储和数据存储分开的存储器结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。用到哈佛架构的处理器有ARM9/10/11以及之后。
2、冯诺依曼(普林斯顿架构)
一种将程序指令存储器和数据存储器合并在一起的存储器结构。取指令和取操作数都在同一总线上,指令与代码在统一地址空间分布,也就是说有时候并分不出来某段地址上面是放的数据还是命令,通过分时复用的方式进行;缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈。由于程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。用到冯诺依曼架构的处理器有ARM7及之前的。