« 上一篇下一篇 »

ARM学习的一些经验

我将ARM知识分成四个层次:
一:ARM架构
    先上一个简表:
架构处理器家族
ARMv1ARM1
ARMv2ARM2ARM3
ARMv3ARM6, ARM7
ARMv4StrongARMARM7TDMIARM9TDMI
ARMv5ARM7EJARM9EARM10EXScale
ARMv6ARM11ARM Cortex-M
ARMv7ARM Cortex-AARM Cortex-MARM Cortex-R
ARMv8Cortex-A50[9]
可见每一种架构都有若干种具体的实现,对ARM架构的学习主要是学习ARM指令,内存模型,中断模型等架构相关的知识,这个时候并没有牵扯到外设或者外设通讯协议啥的.
二:ARM内核
    比如ARM9系列(基于ARMv4,ARMv5架构). ARM内核是基于某个ARM架构版本下的具体实现,主要区别在于性能还有是否支持相关特性如MMU,Jazelle,SIMD,Thumb-2,VFP
等等.
三:基于ARM核的SOC或者MCU
     一般来说把面向高端的,面向应用处理的叫做SOC,把面向低端的,主要面向单片机市场的叫做MCU,下面为了行文方便 统一用SOC来代替.
比如三星的S3C2410就是一块包含了ARM920T内核的SOC,框图如下:

它的外形看起来就是一块芯片,和一块CPU长的差不多,所以很多人习惯叫它CPU,其实从严格意义上来说叫它CPU并不准确,它还包括了各种外设控制芯片功能,比如USB,SPI,IIS,LCD,FLASH,DMA,UART等控制器,你可以将它理解为 将CPU还有各种外设控制芯片全部做到了这块小小的芯片上,所以它并不只是一个CPU而已,而是一套片上系统,所以我们称呼这块芯片叫做SOC(片上系统)更加恰当. 对于SOC的学习,一般是首先要选定一块特定的产品比如S3C2410进行学习,而仅仅学习ARM内核知识是远远不够的,还必须要学习各种外设控制的方法和与各种外设通讯的协议等等.

四.基于SOC的板上系统.
  这个就是我们常常见到的电路板了,比如将各种外设如RAM,FLASH,LCD等,加上SOC如S3C2410,按设计焊接到一块PCB板上,调试好电路并且刷好程序就可以开始工作了.
而事实上学习的目的最终也是想设计并制作出这样一块电路板而已.

总结:
比如当你拆开一台手机你至少会看到有块PCB主板,这块主板上面肯定有各种芯片和元器件,其中肯定有一块是SOC(假设是S3C2410),那么这块SOC里面肯包含了ARM920T的内核,而这内核又属于ARMv4T架构

关系如下:
PCB主板==包含==>SOC==包含==>ARM内核==属于==>ARM架构

不同的ARM书籍侧重的层次都不尽相同,所以事先一定要了解清楚到底是想学什么.