ARM是什么,自不必多说,相信能点进来的也尽知晓。

真正开始了解ARM,是从12年入职开始,那时仅仅知道ARM是个做CPU的其它就一概不知了,后来才渐渐知道SOC,知道嵌入式,知道ARM。

入职一开始,作为一个完全无关专业,只是了解C/C++编程的人,对所谓SOC完全一头雾水,连SOC的名称意义也是度娘教的。因此一开始也就是学习一些简单的小模块,譬如UART、TIMER、RTC,稍复杂一点的譬如DMA,接触到的最复杂的就算是SD模块了。当初是和另外一位新入职的同事再USB和SD之间各挑一个,于是现在他依然坐着USB,只不过经历了musb,而我则经历了不同的模块,譬如I2S、BLG,甚至客串过I2C、SSP等,最后便接触ARM核相关。对于ARM的了解,也因此其实并不算深入,对于其发展历程或是技术改革路线,因眼界所限,自然也无可说,此处只就我所有限的了解来温习一下。

1 ARM简介

ARM的含义很多,仅就技术而言,值得一提的是Advanced RISC Machines这个含义,表明了其所属于的技术体系,即RISC体系,它有别于CISC体系,如桌面PC所常用的x86处理器。他们之间的区别在于前者以指令精简为主要考量,而单指令所实现的功能为次要;后者以单指令实现的功能为主要,指令的统一性或简洁性为次要。至于之间具体优劣势对比,百度资料无数,在此略过不提。

1.1 从结构说起

举凡处理器,总逃不过几大经典结构组成--运算器、控制器,以及寄存器、高速缓存和总线,而处理器和存储器以及输入输出设备则构成了电子计算机。

ARM的组成自然不例外,以下为ARM1176JZF的结构框图:

呃,至于没找到ALU及控制器。。。文档上是说ALU在interger core部分,控制器也应是包含其中。

以上即算是ARM核的经典结构:integer core、指令预取单元、存取单元、浮点运算单元、cache、tcm以及各种接口包括l2接口、jtag接口、ETM接口等。

那么,我需要按上面的各个接口模块挨个说明吗,自然是不需要的。

对于软件人员来说,以上的模块中所涉及到的,需要仔细了解的,也就是integer core中的部分,cache,tcm等。而至于jtag,在调试中是必须用到的,但是又是与软件完全不相关的。

integer core是整个CPU的核心,其中包含了指令的执行,数据的处理等等,在其中,和其它外设模块一样,软件需要仔细了解的就是寄存器。对于一个硬件模块,寄存器是软件与硬件交互的窗口,对硬件行为的任何控制以及其运行状态的了解,都是通过对寄存器的读写操作来实现的。CPU也是如此,其通用寄存器组以及特殊寄存器,以及协处理器中的寄存器组均是控制处理器运行,以及了解处理器运行状态的关键。

对于CPU的工作分析,我们通常可以从两方面入手,一为指令,一为数据。在integer core部分,二者其实可分也不可分的,每条指令的执行,即伴随着数据的运算。而在它之外,数据和指令则相互分开为两条线,即所谓哈弗结构。从内核中出来,最先经过的即为Level 1 Memory,即cache与tcm,他们分别氛围icache与dcache,itcm与dtcm,分别在指令线与数据线上。

从l1出来则为l2,在ARMM11中未有继承L2CACHE,但是提供了L2 data/instruction interface,数据和指令即分别从这两个接口进入l1。

而另外一个重要的部分即为VIC interface,即中断处理器接口,负责中断的输入,即IRQ与FIQ异常信号的输入。

JTAG interface,是调试时几乎必须用到的,但是却又是完全不需要了解的。

嗯,该睡觉了,本节结束!

转载于:https://www.cnblogs.com/iambobor/p/3577425.html

ARM体系结构及内核回顾总结(一)相关推荐

  1. 【计算机系统结构】~ ROM/PROM/EPROM/E2PROM/FLASH、SOC 片上系统、总线、CPU 处理器、Cache、DDR、ARM 体系结构、虚拟内存、内核 kernel

    1. ROM/PROM/EPROM/E2PROM/FLASH ROM 指的是"只读存储器",即 Read-Only Memory.这是一种线路最简单半导体电路,通过掩模工艺, 一次 ...

  2. 深度剖析Linux内核(ARM体系结构)

    一.ARM处理器简介及RISC特点 1.ARM处理器简介: ARM(Advanced RISC Machines)是一个32位RISC(精简指令集)处理器架构,ARM处理器则是ARM架构下 的微处理器 ...

  3. LV.9 ARM体系结构与接口技术

    1 计算机硬件基础 Day1-1 底层课程导学 课程回顾 1.编程基础 1.C语言基础 2.C高级及Linux 3.数据结构 2.应用开发 1.IO 2.进程 3.网络编程 3.底层开发 1.ARM ...

  4. 【学习笔记】编译Linux内核(下)---KConfig、Makefile详解以及ARM平台Linux内核的编译

    本文主要介绍Linxu2.6的内核配置系统. 如果你浏览一下源代码目录,就可以发现源码目录及其子目录中有很多的KConfig文件和Makefile文件.这些文件什么作用呢?正是这些文件组成了Linux ...

  5. KConfig、Makefile详解以及ARM平台Linux内核的编译

    本文主要介绍Linxu2.6的内核配置系统. 如果你浏览一下源代码目录,就可以发现源码目录及其子目录中有很多的KConfig文件和Makefile文件.这些文件什么作用呢?正是这些文件组成了Linux ...

  6. 计算机硬件基础ARM处理器概论(ARM体系结构与接口技术)

    计算机硬件基础 D1 底层课程导学 1.编程基础 2.应用开发 (函数) 3.底层开发 C语言基础 IO ARM C高级与linux 进程 系统移植 数据结构 网络编程 驱动开发 嵌入式系统分层 操作 ...

  7. 编译arm linux内核,编译Linux内核(下)---KConfig、Makefile详解以及ARM平台Linux内核的编译...

    转载自:http://blog.csdn.net/newthinker_wei/article/details/8022696 本文主要介绍Linxu2.6的内核配置系统. 如果你浏览一下源代码目录, ...

  8. ARM体系结构与编程阅读笔记系列(第一章)

    系列文章目录 第一章 ARM概述机器基本编程模型 ARM概述及其基本编程模型 系列文章目录 前言 ARM体系结构的版本及命名方法 ARM体系结构的版本 ARM体系结构的变种 ARM/Thumb体系版本 ...

  9. 01 ARM体系结构与汇编指令

    注:本文章是由笔者学习朱有鹏arm的学习笔记,特此感谢朱老师. 关于汇编: 1.汇编的实质是机器指令(机器码)的 助记符,是一款CPU的本质特征. 2.不同CPU的机器指令集设计不同,因此 汇编程序不 ...

最新文章

  1. 使用OpenCV,Numpy计算直方图,Matplot绘制直方图及分析
  2. C语言函数集(十六)
  3. Solr分页与高亮(使用SolrNet实现)
  4. mysql union order by_MySQL order by 在 union 中使用实例分析
  5. .NET 6新特性试用 | 文件范围的命名空间
  6. (8)Zynq AXI_ACP接口介绍
  7. 虚拟内存的作用、分页系统实现虚拟内存原理
  8. 浙大 PAT b1009
  9. CSS2.0样式手册_说明_SDK下载chm
  10. 系统学习机器学习之非参数方法
  11. 普中51开发板,用XPT2046芯片实现AD数模转换。protues仿真用ADC0808实现AD数模转化
  12. EPLAN如何保护电气图纸
  13. html悬挂缩进2字符,文章中如何设置悬挂缩进2字符
  14. 深度学习知识点总结:深度学习常用公式总结
  15. 计算机上点开硬盘有声音,打开计算机电源后,硬盘持续发出哔哔声的原因是什么?原因分析和解决方案介绍...
  16. AppStore预览视频AppPreviews制作总结
  17. 小程序前端Vue里使用u-upload进行多图片上传
  18. Fedora 29 添加 惠普打印机 Smart Tank 531
  19. Socket.io之Socket类
  20. Swift String常用方法

热门文章

  1. SVM分类的一个例子
  2. canny算子的运用
  3. mesh三维画图[matlab]
  4. React Hook基本使用踩坑指南
  5. Keras方法进行词嵌入
  6. java王子救公主的游_计蒜客 王子救公主(DFS)
  7. 深入理解JVM(一)编译openJDK
  8. [USACO15JAN]草鉴定Grass Cownoisseur
  9. $.ajax() 方法的理解
  10. [转]oracle中查询指定行数的记录