《嵌入式工程师到底要不要学习ARM汇编指令?》
《到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理根本观点【科普】》

关于ARM指令用到的IDE开拓环境可以参考下面这篇文章

《1. 从0开始学ARM-安装Keil MDK uVision集成开拓环境》
一、打算机架构
在理解打算机架构之前,我们先来认识几位对打算机的发明做出关键贡献的几位大佬。
1. 巴贝奇机器打算机之父,英国贵族,曾孤军奋战下造出的第一台差分机,运算精度达到了6位小数,后来又设计了20位精度的差分机,其设计理念已经达到了机器设计至高无上的境界。
1985~1991年,伦敦科学博物馆为了纪念巴贝奇诞辰200周年,根据其1849年的设计,用纯19世纪的技能成功造出了差分机2号。
巴贝奇堪称上个世纪最强大脑,他的大脑现保存在英国科学博物馆。
程序员的祖师奶奶Ada正是在和巴贝奇共同事情时提出了程序循环分支等等我们现在都习以为常的编程理念。
差分机
2. 图灵被称为打算机科学之父,人工智能之父。1931年图灵进入剑桥大学国王学院,毕业后到美国普林斯顿大学攻读博士学位,第二次天下大战爆发后回到剑桥,后曾帮忙军方破解德国的著名密码系统Enigma,帮助盟军取得了二战的胜利。图灵对付人工智能的发展有诸多贡献,提出了一种用于剖断机器是否具有智能的试验方法,即图灵试验,至今,每年都有试验的比赛。
图灵在战时做事的机构于1943年研制成功的CO-LOSSUS(巨人)机,这台机器的设计采取了图灵提出的某些观点。它用了1500个电子管,采取了光电管阅读器;利用穿孔纸带输入;并采取了电子管双稳态线路,实行计数、二进制算术及布尔代数逻辑运算,巨人机共生产了10台,用它们出色地完成了密码破译事情。
强烈推举这部根据图灵平生改编的电影《模拟游戏》,一起感想熏染下这个绝世天才不平凡的生平。
模拟游戏
3. 冯诺依曼-《打算机与人脑》打算机架构紧张有两种:哈佛架构、冯诺依曼架构。当代打算机,大部分都是基于冯诺依曼体系构造。
我个人认为冯诺依曼该当是上个世纪「最聪明的人,没有之一」。
他的个人造诣在此就不说了,大家可以自行搜索,很多造诣,一口君连名字都看不懂,只有博弈论还勉强知道是啥意思。
本文只谈论大神对打算机的贡献【实在打算机并不是大神的最厉害的造诣,而且他也并没有花太多韶光精力在打算机的研究上】。
1955年10月,诺伊曼,被查出患有癌症。而他险些是在他生命的末了时候,于临终的病榻上撰写了关于人的神经系统与打算机关系的讲稿。1958年,他的讲稿以《打算机与人脑》为题出版。
打算机与人脑
诺依曼从数学的角度,紧张是从逻辑和统计数学的角度,谈论了神经系统的刺激——反应和影象等问题,提入迷经系统具有数字部分和仿照部分两方面的特色,磋商了神经系统的掌握及逻辑构造。
4. 冯诺依曼架构冯诺依曼的核心是:「存储程序,顺序实行」,规定打算机必须具有如下功能:
把须要的程序和数据送至打算机中;必须具有长期影象程序、数据、中间结果及终极运算结果的能力;能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力;能够根据须要掌握程序走向,并能根据指令掌握机器的各部件折衷操作;能够按照哀求将处理结果输出给用户冯诺依曼架构
5. 哈佛架构冯诺依曼构造和哈佛构造是有差异的。
冯诺依曼构造是程序存储区和数据存储器都是可以放到内存中,统一编码的,而哈弗构造是分开编址的。
哈佛架构
6. 哪些处理器是哈佛架构、冯诺依曼架构?「哈佛架构」
MCU(单片机)险些都是用哈佛构造,譬如广泛利用的51单片机、范例的STM32单片机(核心是ARM Cortex-M系列的)都是哈佛构造。
「冯诺依曼架构」
PC和做事器芯片(譬如Intel AMD),ARM Cortex-A系列嵌入式芯片(譬如核心是ARM Cortex-A9的三星exynos-4412,譬如华为的麒麟970等手机芯片)等都是冯诺依曼构造。这些系统都须要大量内存,以是事情内存都是DRAM,由于他们更适宜利用冯诺依曼系统。
「稠浊构造」
实际上当代的CPU(准确说叫SoC)基本都不是纯粹的哈佛构造或冯诺依曼机构,而都是稠浊构造的。
比如三星exynos 4412,利用ARM的Cortex-A9核心。基于exynos 4412开拓板上都配备了1024MB的DDR SDRAM,和8GB的EMMC。
正常事情时所有的程序和数据都从EMMC中加载到DDR中,也便是说不管你是指令还是数据,存储都是在EMMC中,运行时都在DDR中,再通过cache和寄存器送给CPU去加工处理。这便是范例的冯诺依曼系统。
但是,exynos 4412内部仍旧有一定容量的64KB irom和64KB iram,这些irom和iram是用于SoC勾引和启动的,芯片上电后首先会实行内部irom中固化的代码,实在实行这些代码时4412就彷佛一个MCU一样,irom便是他的flash,iram便是他的SRAM,这又是范例的哈佛构造。
这便是稠浊式构造设计,而非纯粹设计。之以是采取稠浊式设计实在便是为了各取所长而已。
不管白猫黑猫,办理问题便是好猫。
二、打算机组成打算机系统=硬件系统+软件系统 硬件是打算机系统的物质根本,软件是打算机系统的灵魂。硬件和软件是相辅相成的,不可分割的整体。
打算机组成
1).输入设备输入设备的任务是把人们编好的程序和原始数据送到打算机中去,并且将它们转换成打算机内部所能识别和接管的信息办法。常用的有键盘、鼠标、扫描仪等。
2).输出设备输出设备的任务是将打算机的处理结果以人或其他设备所能接管的形式送出打算机。 常用的有显示器、打印机、绘图仪等。
3).存储器、CPU见第三节
4). 打算机的总线构造将各大基本部件,按某种办法连接起来就构成了打算机的硬件系统。
系统总线包含有三种不同功能的总线,即数据总线DB(Data Bus)、地址总线AB(Address Bus)和掌握总线CB(Control Bus)。
数据总线DB 用于传送数据信息。数据总线的位数是微型打算机的一个主要指标,常日与微处理的字长相同等。例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。
地址总线AB 专门用来传送地址的。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位微机的地址总线为16位,则其最大可寻址空间为216=64KB,16位微型机的地址总线为20位,其可寻址空间为220=1MB。 掌握总线CB 用来传送掌握旗子暗记和时序旗子暗记。掌握旗子暗记中,有的是微处理器送往存储器和I/O接口电路的,如读/写旗子暗记,片选旗子暗记、中断相应旗子暗记等;也有是其它部件反馈给CPU的,比如:中断申请旗子暗记、复位旗子暗记、总线要求旗子暗记、限备就绪旗子暗记等。掌握总线的详细情形取决于CPU。
在这里插入图片描述
三、 CPU事情事理CPU内部紧张包括运算器和掌握器。
指令
1) 存储器存储器是用来存放程序和数据的部件,它是一个影象装置,也是打算机能够实现“存储程序掌握”的根本。
包括:Cache、主存储器、赞助存储器。
「高速缓冲存储器(Cache)」 CPU可以直接访问,用来存放当前正在实行的程序中的生动部分,以便快速地向CPU供应指令和数据。
「主存储器」 可由CPU直接访问,用来存放当前正在实行的程序和数据。
「赞助存储器」 设置在主机外部,CPU不能直接访问,用来存放暂时不参与运行的程序和数据,须要时再传送到主存。
存储器
2) 运算器运算器的核心是算术逻辑运算部件ALU,还包括多少个寄存器(如累加寄存器、暂存器等)。
ALU可以实行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。相对掌握单元而言,运算器接管掌握单元的命令而进行动作,即运算单元所进行的全部操作都是由掌握单元发出的掌握旗子暗记来指挥的,以是它是实行部件。
运算器
3) 掌握器掌握单元是全体CPU的指挥掌握中央,由程序计数器PC(Program Counter), 指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作掌握器OC(Operation Controller)等组成,对换和全体电脑有序事情极为主要。
它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(剖析)确定该当进行什么操作,然后通过操作掌握器OC,按确定的时序,向相应的部件发出微操作掌握旗子暗记。操作掌握器OC中紧张包括节拍脉冲发生器、掌握矩阵、时钟脉冲发生器、复位电路和启停电路等掌握逻辑。
掌握器
4) CPU的运行事理总结掌握单元在时序脉冲的浸染下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指令读到指令寄存器进行译码。
对付实行指令过程中所须要用到的数据,会将数据地址也送到地址总线,然后CPU把数据读到CPU的内部存储单元(便是内部寄存器)暂存起来,末了命令运算单元对数据进行处理加工。
周而复始,一贯这样实行下去。
5) 指令实行过程一条指令的实行常日包括以下4个步骤:
指令实行过程
1、取指令:CPU的掌握器从内存读取一条指令并放入指令寄存器。 2、指令译码:指令寄存器中的指令经由译码,决定该指令应进行何种操作(便是指令里的操作码)、操作数在哪里(操作数的地址)。 3、 实行指令,分两个阶段“取操作数”和“进走运算”。 4、 修正指令计数器,决定下一条指令的地址。
6) ARM技能特色ARM的成功,一方面得益于它独特的公司运作模式,另一方面,当然来自于ARM处理器自身的优秀性能。作为一种前辈的RISC处理器,ARM处理器有如下特点。
体积小、低功耗、低本钱、高性能。支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件。大量利用寄存器,指令实行速率更快。大多数数据操作都在寄存器中完成。寻址办法灵巧大略,实行效率高。指令长度固定。 此处有必要讲解一下RISC微处理器的观点及其与CISC微处理器的差异。7) ARM体系架构的发展体系架构的定义: 体系架构定义了指令集(ISA)和基于这一体系架构下处理器的编程模型。基于同种体系架构可以有多种处理器,每个处理器性能不同,所面向的运用不同,每个处理器的实现都要遵照这一体系构造。ARM体系架构为嵌入系统发展商供应很高的系统性能,同时保持精良的功耗和效率。
ARM体系架构为知足ARM互助者及设计领域的一样平常需求正稳步发展。目前,ARM体系架构共定义了8个版本,从版本1到版本8,ARM体系的指令集功能不断扩大,不同系列的ARM处理器,性能差别很大,运用范围和工具也不尽相同,但是,如果是相同的ARM体系架构,那么基于它们的运用软件是兼容的。
下面我们大略先容下 V7/V8架构。
v7架构ARMv7架构是在ARMv6架构的根本上出身的。该架构采取了Thumb-2技能,它是在ARM的Thumb代码压缩技能的根本上发展起来的,并且保持了对现存ARM办理方案的完全的代码兼容性。Thumb-2技能比纯32位代码少利用31%的内存,减小了系统开销,同时能够供应比已有的基于Thumb技能的办理方案赶过38%的性能。ARMV7架构还采取了NEON技能,将DSP和媒体处理能力提高了近4倍。并支持改良的浮点运算,知足下一代3D图形、游戏物理运用及传统嵌入式掌握运用的需求。
v8架构ARMv8架构是在32位ARM架构上进行开拓的,将被首先用于对扩展虚拟地址和64位数据处理技能有更高哀求的产品领域,如企业运用、高档消费电子产品。ARMv8架构包含两个实行状态:AArch64和AArch32。AArch64实行状态针对64位处理技能,引入了一个全新指令集A64,可以存取大虚拟地址空间;而AArch32实行状态将支持现有的ARM指令集。目前的ARMv7架构的紧张特性都将在ARMv8架构中得以保留或进一步拓展,如TrustZone技能、虚拟化技能及NEON advanced SIMD技能等。
8) ARM 微处理器架构ARM内核采取RISC体系架构。ARM体系架构的紧张特色如下。
采取大量的寄存器,它们都可以用于多种用场。采取Load/Store体系架构。每条指令都条件实行。采取多寄存器的Load/Store指令。能够在单时钟周期实行的单条指令内完成一项普通的移位操作和一项普通的ALU操作。通过协处理器指令集来扩展ARM指令集,包括在编程模式中增加了新的寄存器和数据类型。如果把Thumb指令集也当做ARM体系架构的一部分,那么在Thumb体系架构中还可以高密度16位压缩形式表示指令集。9) ARM指令ARM指令是RISC(Reduced Instruction Set Computing),即精简指令运算集,RISC把着眼点放在如何使打算机的构造更加大略和如何使打算机的处理速率更加快速上。RISC选取了利用频率最高的大略指令,抛弃繁芜指令,固定指令长度,减少指令格式和寻址办法,不用或少用微码掌握。这些特点使得RISC非常适宜嵌入式处理器。
RISC可以实现以相对少的晶体管设计出极快的微处理器。通过研究创造,只有大约20%的指令是最常用的,把处理器能实行的指令数目减少到最低限度,对它们的实行过行优化,就可以极大地提高处理的事情速率。
一样平常来说,RISC处理器比同等的CISC(Complex Instruction Set Computer,繁芜指令集打算机)处理器要快50%-75%,同时RISC处理器更随意马虎设计和纠错。
一样平常指令格式如下:
指令格式
「操作码:」 操作码便是汇编措辞里的mov,add,jmp等符号码;
「操作数地址:」 用于解释该指令须要的操作数所在的地方,是在内存里还是在CPU的内部寄存器里。
实际上的机器指令格式远比这个繁芜,下图是常用的ARM指令格式:
ARM 指令格式
关于这些机器指令格式,后面我们会挑选个中几个剖析,对付我们大部分读者来说,没有必要花太多精力去研究这些机器指令,只须要大概理解即可。
关于CPU我们从宏不雅观上把握到这个程度就OK了,后面我们会逐步进入后续阶段的学习,先容ARM寄存器模式、非常、寻址、汇编指令,以及C代码中嵌入的汇编措辞的写法。
四、SOCSOC: 系统芯片是一个将打算机或其他电子系统集成单一芯片的集成电路。系统芯片可以处理数字旗子暗记、仿照旗子暗记、稠浊旗子暗记乃至更高频率的旗子暗记。
从狭义角度讲,它是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上; 从广义角度讲, SoC是一个眇小型系统,如果说中心处理器(CPU)是大脑,那么SoC便是包括大脑、心脏、眼睛和手的系统。
1. ARM base Soc嵌入式系统中常常要利用系统芯片。系统芯片的集成规模很大,一样平常达到几百万门到几千万门。SOC相比拟较灵巧,它可以将arm架构的处理器与一些专用的外围芯片集成到一起,组成一个别系。
下图是一个范例的基于ARM架构的SOC架构图。
ARM base Soc
一个范例的基于ARM的Soc架构常日包含以下几个紧张部件:
ARM Processor core 处理器核Clocks and Reset Controller 时钟和复位电路Interrupt Controller 中断掌握器ARM Propherals 外部设备GPIODMA PortExternal Memory Interface 外部内存接口On chip RAM 偏上RAMAHB、APB总线实在现有的ARM处理器如Hisi-3507、exynos-4412等处理器都是一个SOC系统,尤其是运用场置器它集成了许多外围的器件,为实行更繁芜的任务、更繁芜的运用供应了强大的支持。
该架构是我们理解汇编指令和编写裸机程序的基石。
当我们拿到一个新的SOC的datasheet,首先就要根据这个架构,来查看SOC的「RAM空间、时钟频率、包括哪些外部设备的掌握器,各个外设掌握器的操作事理,各个外设对GPIO的引脚复用情形、各个掌握器的SFR地址、中断掌握器是如何管理浩瀚中断源的等等」。
2. 三星 Exynos 44122012年初,三星正式推出了自家的首款四核移动处理器Exynos4412。
下面三星的exynos 4412的SOC。
Exynos 4412 SCP构造框图
如上图所示,exynos 4412紧张包括以下模块:
4(quad)个Cortex-A9处理器1MB的 L2 CacheInterrupt Controller 中断掌握器,管理所有的中断源Interrupt Combiner 中断掌握器,管理soc内的一些中断源NEON ARM 架构处理器扩展构造,旨在通过加速多媒体(video/audio)编解码,用户界面,2D/3D图形及游戏来提高人对多媒体的体验DRAM、Internal RAM、NAND Flash、SROM Controller 各种存储设备的掌握器SDIO、USB、I2C、UART、SPI等总线RTC、Watchdog TimerAudio Subsystem 声音子系统IIS(Integrate Interface of Sound)接口 ,集针言音接口Power Management电源管理Multimedia Block 多媒体模块这款新Exynos四核处理器,拥有32nm HKMG(高K金属栅极技能)制程,支持双通道LPDDR21066。三星公司已将这颗图形处理器主频由此前的266MHz提升至400MHz,新闻稿指出其会比现有的双核机型整体性能提升60%,图像处理能力提升50%。
三星智好手机Galaxy S III手机就采取了Exynos4412处理器。
学习ARM就必须深刻理解soc架构,官方供应的datasheet是我们学习ARM、编写驱动程序的基石,该手册内容比较多,我们并不须要每一章都节制,用到哪个地方,我们就去学习即可。
exynos 4412 datahseet 下载地址:
https://download.csdn.net/download/daocaokafei/12533438
后续的文章,会基于华清远见的FS-4412开拓板为大家讲解常见的外设的事理,并编写对应的驱动程序。
更多 ARM Linux干货,请关注 一口Linux










