精华内容
下载资源
问答
  • ARM内核相关参考资料

    2021-04-21 14:22:16
    ARM官网上搜集的一些关于ARM总线设计和Cortex-M3内核使用相关的资料,之前为集创赛做准备的时候的。
  • 找资料ARM PAC

    2021-05-18 13:59:49
    ARM pointer authentication Pointer Authentication-Apple/llvm-project
    展开全文
  • ARM官方手册: https://developer.arm.com/docs
    展开全文
  • ARM ssp和spi资料

    2012-03-20 07:54:11
    这些资料是本人在开发LPC2458时从网络上资料。对于理解ARM ssp串行通信模块和SPI通信原理都是很有好处的。资料里包括周立功对SSP的介绍以及网友对SPI原理的分析。
  • ubuntu 12 64位系统 装arm-linux-gcc 4.3.2 不到文件环境变量:/usr/local/arm/4.3.2/bin:/usr/local/arm/4.3.2/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/...

    ubuntu 12 64位系统 装arm-linux-gcc 4.3.2 找不到文件

    093650495.png环境变量:/usr/local/arm/4.3.2/bin:/usr/local/arm/4.3.2/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin

    在用arm-linux-gcc -v命令时,

    /usr/local/arm/4.3.2/bin/arm-linux-gcc: line 3: /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc: No such file or directory

    方法一:权限是什么,直接输入/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc回车,它能执行吗?报错吗

    方法二:因为我的Ubuntu是64位的,要下一个32位的库sudo apt-get install ia32-libs 这样就可以进行交叉编译了~~

    方法三:

    1.输入arm-linux-gcc -v后,显示no such file,正常情况下应该回显arm-linux-gcc的版本。

    2.gcc没安装或者安装了路径没设好(这个是次要的)

    结论:1、请确认你的4.3.2版gcc工具是否完整,在/usr/local/4.3.2/bin目录下查看是否有arm-linux-gcc执行文件。(不完整的话就去下个新的,否则请看第二条)

    2、arm版的gcc编译器的环境变量没有设好

    解决方法:这里直接说第二条的,你可以试试,如果不行请贴出log

    编辑/etc/profile文件,直接上图了,如图所示

    093650496.jpg

    把pathmunge /opt/Mytoolchain/4.5.1/bin这个目录换成你自己的编译器目录。

    然后logout一下,再登录,然后终端输入arm-linux-gcc -v试试看,祝你好运!

    方法四:

    1.首先安装build-essential:

    sudo apt-get install build-essential

    2.将友善之壁光盘中的arm-linux-gcc-4.3.2.tgz 拷贝到某个文件夹下,从终端进入该文件夹,进行解压:

    sudo tar -zxvf arm-linux-gcc-4.3.2.tgz -C /

    NOTE:配置项的C是大写,且C后面有个空格。

    3.添加环境变量:

    这一步是我耗时间最长的,关于这一步网上也有很多中说法:

    1>sudo gedit /root/.bashrc : 在最后一行添加export PATH=$PATH:/usr/local/arm/4.3.2/bin。我不知道其

    它linux系统行不行,反正我在ubuntu10.04下是不行,运行arm-linux-gcc -v 提示:

    arm-linux-gcc:command not found。

    2>先gedit ~/.profile,然后在最后一行添加:export PATH=$PATH:/usr/local/arm/4.3.2/bin,接着source ~/.profile

    ,说是可以立即生效,这种是可以,但是我的总是只能使用一次,如果把终端关掉重新运行

    arm-linux-gcc -v,还是提示command not found.

    3> sudo gedit /etc/environment,在最后一个:号之后和“号之前添加/usr/local/arm/4.3.2/bin:,

    source /etc/environmentecho $PATH 如果显示的内容中有

    kjqin@ubuntu:~$ echo $PATH

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/arm/4.3.2/bin:/usr/games

    ,说明已经将交叉编译器的路径加入PATH自此OK!~~

    展开全文
  • ARM相关资料

    2012-05-29 17:36:17
    计算机体系结构分类 两种典型的结构 : ...程序计数器只指向程序存储器而不指向数据存储器,这样做的后果是很难在哈佛机上编写出一个自修改的程序 ...ARM10 ...ARM 7 ...ARM 9 ...ARM ...ARM ...ARM ...ARM ...ARM7/ARM9 ...ARM...

    计算机体系结构分类
    两种典型的结构
    ·诺依曼结构

    哈佛体系结构

    ·诺依曼结构
    ·诺依曼机:将数据和指令都存储在存储器中的计算机。
    计算系统由一个中央处理单元(CPU)和一个存储器组成。存储器拥有数据和指令,并且可以根据所给的地址对它进行读或写。因此程序指令和数据的宽度相同;如:Intel 8086ARM7MIPS处理器等

    哈佛体系结构
    哈佛机:为数据和程序提供了各自独立的存储器。

    程序计数器只指向程序存储器而不指向数据存储器,这样做的后果是很难在哈佛机上编写出一个自修改的程序

    独立的程序存储器和数据存储器为数字信号处理提供了较高的性能。

    指令和数据可以有不同的数据宽度;具有较高的效率;如摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ARM10系列等

    ARM 7
    使用冯·诺依曼体系结构。

    ARM 9
    使用哈佛体系结构。

     

    ARM公司简介
    ARM
    Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。 1985年第一个ARM原型在英国剑桥诞生。

    公司的特点是只设计芯片,而不生产。它提供ARM技术知识产权(IP)核,将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。有ARM7/ARM9等多个版本。除了一些Unix图形工作站外,大多数ARM核心的处理器都使用在嵌入领域。

    ARM
    ,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

    ARM处理器的应用
    到目前为止,基于ARM技术的微处理器应用约占据了32位嵌入式微处理器75%以上的市场份额。

    全球80%GSM/3G手机、99%CDMA手机以及绝大多数PDA产品均采用ARM体系的嵌入式处理器。

    掌上计算相关的所有领域皆为其所主宰。

    主要应用:消费类电子,无线、图像应用开放平台、存储、自动化、智能卡、SIM卡等。

    ARM
    处理器的三大特点:耗电少功能强、16/32位双指令集、众多合作伙伴。

    ARM体系结构版本
    ARM
    体系结构从最初开发到现在有了很大的改进,并仍在完善和发展。

    为了清楚地表达每个ARM应用实例所使用的指令集,ARM公司定义了6种主要的ARM指令集体系结构版本,以版本号V1V6表示


    ARM版本 V1版架构

    该版架构只在原型机ARM1出现过,只有26位的寻址空间,没有用于商业产品。

    其基本性能有
    :
    基本的数据处理指令(无乘法);

    基于字节、半字和字的Load/Store指令
    ;
    转移指令,包括子程序调用及链接指令;

    供操作系统使用的软件中断指令SWI

    寻址空间:64MB226)。


    ARM版本 V2版架构

    该版架构对V1版进行了扩展,例如ARM2ARM3V2a)架构。包含了对32位乘法指令和协处理器指令的支持。
    版本2a是版本2的变种,ARM3芯片采用了版本2a,是第一片采用片上CacheARM处理器。同样为26位寻址空间,现在已经废弃不再使用。

    V2
    版架构与版本V1相比,增加了以下功能:

    乘法和乘加指令;

    支持协处理器操作指令;

    快速中断模式;

    SWP/SWPB
    的最基本存储器与寄存器交换指令
    ;
    寻址空间:64MB


    ARM版本 V3版架构

    ARM
    作为独立的公司,在1990年设计的第一个微处理器采用的是版本3ARM6。它作为IP核、独立的处理器、具有片上高速缓存、MMU和写缓冲的集成CPU

    变种版本有3G3M。版本3G是不与版本2a向前兼容的版本3,版本3M引入了有符号和无符号数乘法和乘加指令,这些指令产生全部64位结果。

    V3
    版架构(目前已废弃)对ARM体系结构作了较大的改动:


    寻址空间增至32位(4GB);

    当前程序状态信息从原来的R15寄存器移到当前程序状态寄存器CPSR中(Current Program Status Register;
    增加了程序状态保存寄存器SPSRSaved Program Status Register);

    增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常。;

    增加了MRS/MSR指令,以访问新增的CPSR/SPSR寄存器;

    增加了从异常处理返回的指令功能。


    ARM版本 V4版架构

    V4版架构在V3版上作了进一步扩充,V4版架构是目前应用最广的ARM体系结构,ARM7ARM8ARM9StrongARM都采用该架构。
    V4
    不再强制要求与26位地址空间兼容,而且还明确了哪些指令会引起未定义指令异常。

    指令集中增加了以下功能:

    符号化和非符号化半字及符号化字节的存/取指令;

    增加了T变种,处理器可工作在Thumb状态,增加了16Thumb指令集;

    完善了软件中断SWI指令的功能;

    处理器系统模式引进特权方式时使用用户寄存器操作
    ;
    把一些未使用的指令空间捕获为未定义指令


    ARM版本 V5版架构

    V5
    版架构是在V4版基础上增加了一些新的指令,ARM10Xscale都采用该版架构。

    这些新增命令有:

    带有链接和交换的转移BLX指令;

    计数前导零CLZ指令;

    BRK
    中断指令;

    增加了数字信号处理指令(V5TE版);为协处理器增加更多可选择的指令;

    改进了ARM/Thumb状态之间的切换效率;

    E---
    增强型DSP指令集,包括全部算法操作和16位乘法操作;

    J----
    支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能。


    ARM版本 V6版架构

    V6
    版架构是2001年发布的,首先在2002年春季发布的ARM11处理器中使用。在降低耗电量地同时,还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD(Single Instruction, Multiple Data,单指令多数据 )功能,将语音及图像的处理功能提高到了原型机的4倍。

    此架构在V5版基础上增加了以下功能:

    THUMBTM
    35%代码压缩;

    DSP
    扩充:高性能定点DSP功能;

    JazelleTM
    Java性能优化,可提高8倍;

    Media
    扩充:音/视频性能优化,可提高4


    ARM处理器系列

    ARM
    公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11

    ARM7
    ARM9ARM9EARM104个通用处理器系列。

    每一个系列提供一套相对独特的性能来满足不同应用领域的需求。

    ARM7
    系列

    ARM9
    系列

    ARM9E
    系列

    ARM10E
    系列

    ARM11
    系列

    SecurCore
    系列

    Intel
    Xscale
    Intel
    StrongARM

    ARM7微处理器系列
    低功耗的32RISC处理器,冯·诺依曼结构。极低的功耗,适合便携式产品。

    具有嵌入式ICERT逻辑,调试开发方便。

    3
    级流水线结构。能够提供0.9MIPS的三级流水线结构

    代码密度高,兼容16位的Thumb指令集。

    对操作系统的支持广泛,包括Windows CELinuxPalm OS等。

    指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代。

    主频最高可达130MIPS

    主要应用领域:工业控制、Internet设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。

    ARM7TDMI微处理器

    4
    种类型:

    ARM7TDMI
    ARM7TDMI-SARM720TARM7EJ

    ARM7TMDI
    是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。

    注:“ARM并不是芯片,ARM核与其它部件如RAMROM、片内外设组合在一起才能构成现实的芯片。

    ARM7TDMI内部结构
    组成:处理器核、用于边界扫描的TAP控制器、在线仿真器ICE

    双向数据总线D[310]被分割成单向输入和输出总线,以便于与外部存储器兼容。

    ARM7TDMI的模块和内核框图

    ARM7TDMI功能信号图

    ARM9微处理器系列
    ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。
    5
    级整数流水线,

    哈佛体系结构。

    支持32ARM指令集和16Thumb指令集。

    全性能的MMU,支持Windows CELinuxPalm OS等多种主流嵌入式操作系统。

    支持数据Cache和指令Cache,具有更高的指令和数据处理能力。

    主要应用:无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数码照相机和数码摄像机。

    3
    种类型:ARM920TARM922TARM940T


    ARM9E微处理器系列

    单一处理器内核提供微控制器、DSPJava应用系统的解决方案。

    支持DSP指令集。

    5
    级整数流水线,指令执行效率更高。

    支持32ARM指令集和16Thumb指令集。

    支持VFP9浮点处理协处理器。

    全性能的MMU,支持Windows CELinuxPalm OS等多种主流嵌入式操作系统。

    MPU
    支持实时操作系统。

    支持数据Cache和指令Cache

    主频最高可达300MIPS

    主要应用:下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。

    3
    种类型:ARM926EJ-SARM946E-SARM966E-S


    ARM10E微处理器系列

    与同等的ARM9比较,在同样的时钟频率下,性能提高了近50%,功耗极低。
    支持DSP指令集。

    6
    级整数流水线,指令执行效率更高。

    支持32ARM指令集和16Thumb指令集。

    支持VFP10浮点处理协处理器。

    全性能的MMU,支持Windows CELinuxPalm OS等多种主流嵌入式操作系统。

    支持数据Cache和指令Cache

    主频最高可达400MIPS

    内嵌并行读/写操作部件。

    主要应用:下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。

    3
    种类型:ARM1020EARM1022EARM1026EJ-S


    SecurCore微处理器系列

    专为安全需要而设计,提供了完善的32RISC技术的安全解决方案。
    灵活的保护单元,以确保操作系统和应用数据的安全。

    采用软内核技术,防止外部对其进行扫描探测。

    可集成用户自己的安全特性和其他协处理器。

    主要应用:对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。

    4
    种类型:SecurCore SC100SecurCore SC110SecurCoreSC200SecurCore SC210


    Xscale处理器

    基于ARMv5TE体系结构的解决方案,是一款全性能、高性价比、低功耗的处理器。

    支持16位的Thumb指令和DSP指令集。

    已使用在数字移动电话、个人数字助理和网络产品等场合。

    Xscale
    处理器是Intel目前主要推广的一款ARM微处理器


    ARM系列流水线比较

    ARM系列性能比较

     

    ARM处理器结构
    ARM
    Thumb状态

    RISC
    技术

    流水线技术

    超标量技术


    ARMThumb状态

    V4
    版以后有:

    132ARM指令集

    216Thumb指令集,功能是ARM指令集的功能子集。

    ARM7TDMI
    核以后,T变种的ARM微处理器有两种工作状态:

    1ARM状态

    2Thumb状态。

    ARM微处理器执行32位的ARM指令集时,工作在ARM状态;

    ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态


    Thumb技术介绍

    ARM7
    体系结构被广泛应用的时候,嵌入式控制器的市场仍然由8位、16位处理器占领。这些产品不能满足高端应用。这些应用需要32RISC处理器的性能和更优于16CISC处理器的代码密度。

    为了解决代码密度的问题,ARM增加了T变种。

    Thumb
    32ARM指令集中抽出来的36条指令格式,可重新编成16位的操作码。

    在运行时,16位的Thumb指令又由处理器解压成32位指令。

    Thumb
    核有2套独立的指令集,它使设计者得到ARM32位指令性能的同时,又能享有Thumb指令集产生的代码方面的优势,在性能和代码大小之间取得平衡。

    ARM指令集相比,Thumb指令集具有以下的局限:

    完成相同的操作,Thumb指令通常需要更多的指令,因此在对系统运行时间要求苛刻的场合,ARM指令集更为合适。

    Thumb
    指令集没有包含进行异常处理时需要的一些指令,因此在异常中断时,还是需要使用ARM指令,这种限制决定了Thumb指令需要与ARM指令配合使用。


    ARMThumb状态转换

    在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且该转变不影响处理器的工作模式和相应寄存器中的内容。

    进入Thumb状态:当操作数寄存器的状态位(位[0])为1时,执行BX指令。

    进入ARM状态:当操作数寄存器的状态位(位[0])为0时,执行BX指令。


    RISC技术

    嵌入式微处理器可以分为两类:CISCRISC

    CISC
    Complex Instruction Set Computer):复杂指令系统计算机;随着计算机技术的发展而不断引入新的复杂的指令集,计算机的体系结构会越来越复杂。

    大约有20%的指令会被反复使用,占整个程序代码的80%,而余下的80%的指令却不经常使用,在程序设计中只占20

    RISC
    Reduced Instruction Set Computer):精简指令系统计算机;-采用固定长度的指令格式

    使用单周期指令

    大量使用寄存器

    可用加载/存储指令批量传输数据

    在循环处理中使用地址的自动增减


    RISC技术与CISC技术比较

    RISC技术
    ARM
    处理器采用加载/存储(Load/Store)体系结构是典型的RISC处理器,即只有Load/Store的存/取指令可以访问存储器,其余指令都不允许进行存储器操作。

    RISC
    体系结构基本特点:

    1)大多数指令只需要执行简单和基本的功能,其执行过程在一个机器周期内完成。

    2)只保留加载/存储指令。操作数由加载/存储指令从存储器取出放寄存器内操作。

    3)芯片逻辑不采用或少采用微码技术,而采用硬布线逻辑。

    4)减少指令数和寻址方式。

    5)指令格式固定,指令译码简化。

    6)优化编译。


    RISC技术

    ARM
    体系结构还采用了一些特别的技术:

    所有的指令都可根据前面的执行结果决定是否被执行,提高了指令的执行效率。

    可用Load/Store指令批量传输数据,以提高数据的传输效率。

    可在一条数据处理指令中同时完成逻辑处理和移位处理。

    RISC
    CISC各有优势,界限并不那么明显。

    现代的CPU往往采用CISC的外围,内部加入了RISC的特性,如超常指令集CPU就是融合了RISCCISC的优势,成为未来的CPU发展方向之一。


    流水线技术

    是一种将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术;

    程序中的指令仍是一条条顺序执行,但可以预先取若干条指令,并在当前指令尚未执行完时,提前启动后续指令的另一些操作步骤,从而可加快程序的运行速度;

     

    开发和设计嵌入式系统的过程中,CPU的性能是一个非常重要的考虑因素。
    流水线技术是在本质上影响程序执行速度的因素。

    由于计算机中一条指令的各个执行阶段相对独立,因此,现代CPU大多设计成流水线型的机器,在这种类型机器中几个指令可以并行执行。采用流水线的重叠技术大大提高了CPU的运行效率。

    当流水线内部的信息通畅流动时,CPU流水线能够工作得最好。

    但实际应用中,指令各执行阶段的操作时间长短不同,有一些指令序列可能会打断流水线内的信息流,所以有时流水线操作不十分通畅,会暂时降低CPU的执行速度。


    单周期指令的执行过程

    ARM3级流水线
    ARM7
    架构采用了一个3段的流水线:

    1)取指:将指令从内存中取出来。

    2)译码:操作码和操作数被译码以决定执行什么功能。为下一周期准备数据路径需要的控制信号。这一级指令占有译码逻辑,而不是占有数据路径

    3)执行:执行已译码的指令。指令占有数据路径,寄存器堆栈被读取,操作数在桶行移位器中被移位。ALU产生运算结果并回写到目的寄存器中,ALU结果根据指令需求更改状态寄存器的条件位。


    流水线模式下PC的更改过程

    多周期ARM指令的3级流水线操作
    数据路径涉及到所有执行周期、地址计算和数据传送。译码逻辑总是产生数据路径在下一个周期使用的控制信号,因此除译码周期以外,在STR地址计算周期也产生数据传送所需的控制信号。
    取指的存储器访问和执行的数据路径占用都是不可同时共享的资源,对于多周期指令来说,如果指令复杂以至于不能在单个时钟周期内完成执行阶段,就会产生流水线阻塞。


    ARM5级流水线
    ARM9
    StrongARM架构都采用了5级流水线
    .
    增加了I-CacheD-Cache,把存储器的取指与数据存取分开;

    增加了数据写回的专门通路和寄存器;

    把指令的执行过程分割为5部分
    :
    取指:将指令从指令存储器中取出,放入指令流水线中。

    指令译码:对指令进行译码,从寄存器堆中读取寄存器操作数。

    执行:把一个操作数移位,产生ALU结果。如果指令是LoadStore,在ALU中计算存储器的地址。

    数据缓存:如果需要,访问数据存储器;否则,ALU的结果只是简单地缓冲一个时钟周期,以便使所有指令具有同样地流水线流程。

    写回:将指令产生地结果写回到寄存器堆。


    流水线对比

     

     

     

     

    存储系统机制
    存储器就是用来存储信息的部件,存储器是嵌入式系统硬件中的重要组成部分。

    设计嵌入式系统的存储器时需要考虑:是否需要扩展;

    整个嵌入式系统的存储器是由片内和片外两部分组成。

    为了解决速度和内存容量的问题,在系统中采用虚拟地址空间和高速缓存来提高内存的平均性能。

    存储管理单元(MMU)进行地址转换,它在一个小的物理内存中提供相对较大的虚拟存储空间。


    存储器部件的分类

    按在系统中的地位分类:

    1)主存储器(Main Memory, 简称内存或主存
    )
    2)辅助存储器(Auxiliary Memory,Secondary Memory,简称辅存或外存
    )
    按存储介质分类:

    1)磁存储器(Magnetic Memory)

    2)半导体集成电路存储器(通常称为半导体存储器)

    3)光存储器(Optical Memory)

    4)激光光盘存储器
    (Laser Optical Disk)
    按信息存取方式分类:

    1)随机存取存储器
    RAM
    2)只读存储器
    ROM

    存储器的组织和结构

    嵌入式存储器一般采用存储密度较大的存储器芯片,典型的嵌入式存储器系统由ROMRAMEPROM等组成。

    常用的存储器
    随机存储器(RAM
    1)静态随机存储器(SRAM

    2)动态随机存储器(DRAM

    只读存储器(ROM),它在嵌入式系统中非常有用,因为许多代码或数据不随时间改变。

    1)工厂编程的只读存储器

    2)现场可编程只读存储器



    存储体系的形式

    存储层次结构的组成原则:

    每位价格从上往下依次减少。

    存储容量从上往下依次增加。

    存取速度从上往下依次减慢。

    CPU的访问频度从上往下依次减少。

    总线协议
    总线是CPU与存储器和设备通信的机制。

    总线的一个主要作用是提供到存储器的接口。

    大部分总线协议的基本构件是四周期握手协议

    总线读写
    总线的基本操作是读和写。

    Clock
    提供总线组件各部分同步。

    当总线读时,R/W’1。当总线写时,R/W’0

    Address
    是一个a位信号束,为访问提供地址。

    Data
    是一个n位信号束,它可从CPU得到数据或向CPU传送数据。

    Data ready’
    当数据束上值合法时发信号。

    总线的时序图
    总线行为以时序图说明。

    时序图表示总线上的信号如何随时间变化。

    直接内存访问(DMA
    多数情况下,数据的传输需要CPU的介入。

    但是,有时候某些数据传输类型无须CPU加入。

    直接存储器访问(DMA)是允许读写不由CPU控制的总线操作

    系统总线配置
    一个微处理器系统可能含有多条总线。高速设备可连到高速总线上,低速设备连到别的总线上。

    桥:使总线可以互连的逻辑电路。

    高速总线通常要更昂贵的电路和连接器,可通过使用较慢、较便宜的总线来降低低速设备成本。

    桥允许总线独立操作,在I/O操作中可提供某些并行性。

    桥不仅是高速总线的受控器,而且是低速总线的主控器。

    桥从高速总线上获取指令而将它们传到低速总线,它还将结果从低速总线传到高速总线上。

    桥还可以作为两桥之间的协议翻译器。

    ARM存储数据类型

    六种数据类型:
    1 8位有符号和无符号字节。

    216位有符号和无符号半字。

    332位有符号和无符号字。

    ARM
    指令都是32位的字,必须以字(4字节)为单位边界对齐。

    Thumb
    指令是16位半字,必须以2字节位单位边界对齐。

    在内部,所有ARM操作都是面向32位的操作数;只有数据传送指令支持较短的字节和半字的数据类型。当从存储器调入一个字节和半字时,根据指令对数据的操作类型,将其无符号0或有符号符号位扩展为32位,进而作为32位数据在内部进行处理。

    ARM
    体系结构所支持的最大寻址空间为4GB232字节)

    ARM
    体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。

    ARM
    体系结构可以用两种方法存储字数据,称之为大端格式和小端格式


    ARM存储格式

    数据存储格式有两种:
    1)大端模式:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。

    2)小端模式:较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址。

    ARM存储周期
    4
    种基本类型:

    空闲周期。

    非顺序周期。

    顺序周期。

    协处理器寄存器传送周期。


    ARM总线接口信号分类

    ARM7TDMI的总线接口信号分成4:
    时钟和时钟控制信号:MCLKECLKnRESETnWAIT

    地址类信号:A[31:0]nRWMAS[1:0]nOPCnTRANSLOCKTBIT

    存储器请求信号:nMREQSEQ

    数据时序信号:D[31:0]DIN[31:0]DOUT[31:0]ABORTBL[3:0]


    ARM总线接口可以实现的总线周期

    总线周期使用nMREQSEQ信号编码。
    4
    种不同类型的总线周期。

    N
    周期:非顺序周期,最简单的总线周期;存储控制器必须启动存储器访问来满足这个请求;该方式存储系统常需要长的访问时间。

    S
    周期:顺序周期,实现总线上的突发传送;第一个周期,地址可与前一个内部周期相同;与非顺序访问相比响应更快,访问时间更短。

    I
    周期:内部周期,不要求存储器访问;可广播下一次访问的地址以便开始译码,但存储控制器不允许进行存储器访问。

    C
    周期:协处理器寄存器传递周期,通过数据总线向或从协处理器传送数据;不需存储周期,存储控制器不启动事务;传送期间,存储系统不允许驱动数据总线。


    高速缓存(Cache)的分类

    1
    )统一Cache和独立的数据/程序
    Cache
    统一Cache:一个存储系统中指令预取时使用的Cache和数据读写时使用的Cache是同一个Cache

    独立的Cache:一个存储系统中指令预取时使用的Cache和数据读写时使用的Cache是各自独立的。

    用于指令预取的Cache称为指令Cache

    用于数据读写的Cache称为数据Cache

    使用独立的数据Cache和指令Cache,可以在同一个时钟周期中读取指令和数据,而不需要双端口的Cache。但此时要注意保证指令和数据的一致性。

    2)写通Cache和写回
    Cache
    CPU更新了Cache的内容时,要将结果写回到主存中。

    写通法: write-throught,指CPU在执行写操作时,必须把数据同时写入Cache和主存。

    写回法: write-back,指CPU在执行写操作时,被写的数据只写入Cache,不写入主存。仅当需要替换时,才把已经修改的Cache块写回到主存中。

    3)读操作分配Cache和写操作分配
    Cache
    当进行数据写操作时,可能Cache未命中,这时根据Cache执行的操作不同。

    读操作分配Cache:当进行数据写操作时,如果Cache未命中,只是简单地将数据写入主存中。主要在数据读取时,才进行Cache内容预取。

    写操作分配Cache:当进行数据写操作时,如果Cache未命中,Cache系统将会进行Cache内容预取,从主存中将相应的块读取到Cache中相应的位置,并执行写操作,把数据写入到Cache中。

    对于写通类型的Cache,数据将会同时被写入到主存中,对于写回类型的Cache数据将在合适的时候写回到主存中。


    Cache的工作原理

    Cache存储系统当中,把主存储器和Cache都划分成相同大小的块。

    主存地址可以由块号M和块内地址N两部分组成。

    同样,Cache的地址也由块号m和块内地址n组成。

    Cache地址映像和变换方式
    1
    )直接映像

    快,造价低。

    但由于映射策略简单,所以有一定的局限性。

    如果访问频繁的块正好被映射到同一个块,就不能充分利用高速缓存的好处。

    2)组相联映像

    组相联映像由组的个数来标识,每个组被实现为一个直接映射高速缓存。

    高速缓存请求同时广播到所有的组。如果某组中有这个单元,该高速缓存便报告命中。

    比直接映射慢,命中率较高。

    3)全相联映像

    主存中任意一个块都可以映射到Cache中的任意一个块的位置上。

    不同的ARM有不同大小的高速缓存和组织结构。


    Cache的替换算法

    1)轮转法

    维护一个逻辑计数器,利用该计数器依次选择将要被替换出去的Cache块。

    这种算法容易预测最坏情况下Cache的性能。

    缺点:在程序发生很小的变化时,可能造成Cache平均性能急剧的变化。

    2)随机替换算法

    通过一个伪随机数发生器产生一个伪随机数,用新块将编号为该伪随机数的Cache块替换掉。

    算法简单,易于实现。

    没有考虑程序的局部性特点,也没有利用以前块地址分布情况,因而效果较差。

    不易预测最坏情况下Cache的性能。


    存储管理单元MMU

    存储管理单元在CPU和物理内存之间进行地址转换。
    由于是将地址从逻辑空间映射到物理空间,因此这个转换过程一般称为内存映射。

    ARM系统中,存储管理单元MMU主要工作:

    1)虚拟存储空间到物理存储空间的映射。在ARM中采用了页式虚拟存储管理。

    2)存储器访问权限的控制。

    3)设置虚拟存储空间的缓冲的特性


    MMU的页表

    页表是实现上述功能的一个重要手段,它实际上是位于内存中的一个对照表。
    为了实现不同层次的管理,系统提供了基于段或页的存储器访问方式

    1.
    段(section):由1MB 的存储器块构成

    2.
    大页(large page):由64KB 的存储器块构成

    3.
    小页(small page):由4KB 的存储器块构成

    4.
    极小页(tiny page):由1KB 的存储器块构成


    MMU的页表续

    地址变换条目:页表的每一行对应与虚拟地址空间的一个页,该行同时包含了该虚拟内存页对应的物理内存页的地址、该页的访问权限以及缓冲特性等。我们将页表中的一行称为地址变换条目。

    页表:存放在内存中,系统通常有一个寄存器来保存页表的基地址。ARM系统中使用的就是CP15的寄存器C2

    快表:从虚拟地址到物理地址的转换实际上就是查询页表的过程。由于程序在执行过程中具有局部性,即在一段时间内只是局限在少数几个单元,为了加快页表的查询速度,在系统中通常使用一个容量更小、速度更快的存储器件来保存当前需要访问的地址变换条目,这个容量小的页表又称作快表(TLB)。


    快表的使用

    更新:当CPU需要访问内存时,首先在TLB中查找需要的地址变换条目。若不存在则在内存页表中查询,并把查询的结果添加到TLB中。

    清除:当内存中页表的内容改变或者使用新的页表时,TLB中的内容需要清空。CP15的寄存器8用于完成该功能。

    锁定:可以将一个地址变换条目锁定在TLB中,以加快访问速度,CP15的寄存器10用于完成该功能。


    MMU的存储访问过程

    使能MMU时存储访问过程。

    C
    控制位:CachableB控制位Bufferable

    禁止MMU时存储访问过程
    先要确定芯片是否支持cachewrite buffer

    如果芯片规定当禁止MMU时禁止cachewrite buffer,则存储访问将不考虑CB控制位。

    如果芯片规定当禁止MMU时可以使能cachewrite buffer,则数据访问时,C=0,B=0;指令读取时,如果使用分开的TLB,那么C=1,如果使用统一的TLB,那么C=0

    存储访问不进行权限控制,MMU也不会产生存储访问中止信号。

     
    所有的物理地址和虚拟地址相等,即使用平板存储模式。


    MMU中的地址变换过程

    通过两级页表实现。

    一级页表:包含以段为单位的地址变换条目,以及指向二级页表的指针。

    一级页表实现的地址映射粒度较大。

    以段为单位的地址变换过程只需要一级页表。

    二级页表:包含以大页和小页为单位的地址变换条目。

    以页为单位的地址变换过程需要二级页表。

    ARM
    支持的存储块大小有4种:

    1)段(Section):大小为1MB的存储块。

    2)大页(Large Pages):大小为64KB的存储块。

    3)小页(Small Pages):大小为4KB的存储块。

    4)极小页(Tiny Pages):大小为1KB的存储块。


    一级页表地址变换过程

    CP15的寄存器C2中存放的是内存中页表的基地址。
    形成一个32位的索引值,使用该32位索引值从页表中找出相应的地址变换条目。该条目或者包含一个一级描述符,或者包含一个指向二级页表的指针。

    一级描述符
    一级描述符:从页表中得到的相应地址变换条目。

    它定义了与之相应的1M存储空间是如何映射的。

    一级描述符类型: 4种格式的一级描述符,由位[1:0]定义。

    粗粒度页表描述符
    粗粒度页表描述符:一级描述符的位[1:0]0b010b代表二进制),包含了粗粒度的二级页表的物理地址。

    粗粒度页表描述符获取二级描述符过程


    段描述符
    段描述符:一级描述符的位[1:0]0b10

    段的地址变换过程


    细粒度页表描述符
    细粒度页表描述符:一级描述符的位[1:0]0b11,包含了细粒度的二级页表的物理地址。

    细粒度页表描述符获取二级描述符过程

    MMU中的存储访问权限控制
    MMU中,寄存器C1RS控制位和页表中地址转换条目中的访问权限控制位(AP)联合作用控制存储访问的权限。

    MMU
    存储访问权限控制的具体规则如下:

    MMU中的域(Domain
    域:一些段、大页或者小页的集合。
    ARM
    支持最多16个域。

    每个域的访问控制特性由CP15中的寄存器C3中的两位控制。

    因此能很容易地将某个域的地址空间包含在虚拟存储空间中,或是排除在虚拟存储空间之外。

    CP15
    中寄存器C3中的每两位控制一个域的访问控制特性,字段编码和含义如下:

    快速上下文切换技术

    快速上下文切换技术FCSEFast Context Switch Extension):通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射。

     

    如果两个进程占用的虚拟地址空间有重叠,则系统在这两个进程之间进行切换时,必须进行虚拟地址到物理地址的重映射,包括重建TLB、清除Cache,整个工作需要巨大的系统开销,而快速上下文切换技术的引入避免了这种开销。

     

    FCSE位于CPUMMU之间,其功能就是将不同进程使用的相同虚拟地址映射为不同的虚拟空间,使得在上下文切换时无须重建TLB等。



    存储器映射的输入/输出

    ARM系统中,I/O操作通常被映射成存储器操作,即输入/输出是通过存储器映射的可寻址外围寄存器和中断输入的组合来实现的。

     

    ARM中,I/O的输出操作可通过存储器写入操作实现;I/O的输入操作可通过存储器读取操作实现。这样I/O空间就被映射成存储空间。

     

    但是,对于存储器映射的I/O空间的操作,不能使用Cache技术。

     

    展开全文
  • 查找arm的相关资料

    2020-03-09 16:30:49
    ARM在1990年成立,当初的名字是“Advanced RISC Machines Ltd.,”(进阶精简指令集机器) 查找ARM架构的分类有哪些 先明白架构和内核的关系,有一个大佬形象的总结了 给贴 ARM内核和架构的关系(超形象) 查一下...
  • Samsung 的Arm11芯片资料

    千次阅读 2006-09-01 14:51:00
    上了官方网站,有产品Load map的介绍,似乎三星准备把以后的AP分两类:mDirac和mPlank. mDirac用在运算量比较大的... mDirac系列应该会采用Arm1176内核.在时钟速度和整体性能上都超过了以前的Arm9系列(s3c244x,s3c24a0)
  • 内含用ARM汇编所编写的排序、大小写转换、GPIO引脚设置、求和、串口实验、做实验步骤以及各种简答题
  • ARM

    2021-03-25 22:02:26
    title: arm tags: - ARM处理器 - 学习相关 categories: - 课内 ARM课程相关笔记 第1章 嵌入式系统基础 1.1 嵌入式系统简介 定义: 理解:嵌入式系统核心就定制硬、软件。 组成: 硬件 嵌入式系统的硬件包括:核心...
  • 百度网盘可下载ARM嵌入式推荐学习资料整套,永久有效 嵌入式系统无疑是当前最热门最有发展前途的 IT 应用领域之一,同时也是当今 IT领域仅存的几个金领职位之一。当前的中国 IT 人才面临严重的“后继乏人”,而且...
  • ARM Cortex-A9 手册,内部培训资料,网上不到的
  • 初学ARM

    2018-09-26 16:42:06
    这是我学ARM的第一天,首先,我ARM的有关视频看了看,然后选择边看视频边安装需要的软件,最好视频的地方就是淘宝,在淘宝上花个几块钱就能找到一个比较完整的视频,里面还有安装包什么的,然而我买的视...
  • 朋友送的天祥电子的开发板,网上几乎不到这个资料,所以传上来供大家分享!
  • 写在工作前:ARM

    2011-09-14 10:32:16
    马上就要开始工作了,方向定的是嵌入式软件工程师,处理器是ARM,以前学过裸机的ARM9:S3C2410,看了北航 田泽 的那本嵌入式系统开发和应用教程,选的是英贝特的老得学习箱,实验都是挨个做下来的,2410的资料也看...
  • arm_VS1300_MP3全套资料

    2009-08-14 15:34:18
    用芬兰的MP3芯片制作的MP3,在网上了很久才收集到得资料,现在打包上传,和大家分享一下。其中有芯片的驱动代码和数据手册,原理图,和一份简单的开发文档,足够自己制作一个简易MP3,希望对大家有用。
  • ARMARM接口技术

    千次阅读 2017-06-06 21:06:24
    0开发工具的使用 1安装keil4 2运行MDK411EXE安装 3选择好要安装的目的位置 4安装完成并运行 5安装JLink驱动 6运行测试例程验证开发板是否OK 1自己做一个例子 1新建一个项目 ...2ARM接口原理 1
  • Arm简介

    千次阅读 2013-08-14 19:11:03
    最近想学学Arm了点资料,共享下。 ARM简介 1. ARM只卖知识产权,不卖(物理的,实质的)产品。 2. 全世界100多家公司购买了ARM授权,包括三星,Freescale、NXP Semiconductors、STMicroelectronics、Texas ...
  • ARM经典300问

    2012-08-14 09:09:57
    ARM经典300问 学习ARM 工作面试的经典学习资料
  • Fresco引起的在arm64位机器上不到对应的so库

    千次阅读 热门讨论 2016-03-09 15:14:52
    如果存在,就会使用(加载)该目录下合适的64位库,如果没有则回去lib下查找32位的库,而fresco的draw-pipeline太完善了考虑了64位的机器所以他的arm64-v8a下有so库,对应的系统就创建了lib 64的文件,而不再去32...
  • ARM嵌入式

    2017-10-16 11:33:33
    ARM(Advanced RISC Machines),既可认为是一个公司的名字,也可认为是对一类微处理器的统称。 中文名 ARM嵌入式 外文名 Advanced RISC Machines 属 于 一类微处理器的统称 产 品 RISC...
  • ARM嵌入式开发

    2008-06-22 00:10:43
    32位ARM嵌入式开发应用,很难资料
  • 我学完了 不知道对大家有用没有 有需要的么? 图片资料上传太麻烦了 有需要标题资料的+求求裙 864588072 我拿就行 全部打包到网盘了。感谢支持 感谢缘分。 ...
  • ARM集成opencv

    2016-10-03 20:53:53
    转载一篇ARM做视觉的文章,入门看看 硬件: 核心mcu arm9 s3c2410嵌入式的应该知道这款吧 板子外围接口都有,USB,串口,网口,sd卡槽等 web camera (USB接口) nand Flash 64M 软件版本: boot: ...
  • ARM学习步骤

    2016-07-12 09:31:56
    ARM学习步骤 学习必备条件: 1、一块开发板——例如44B0开发板,建议初学者不要去购买那些ARM9体系结构的,因为作为初学者来说ARM9体系的东西是很复杂的,买块ARM7的就可以了(先入门,然后再提高); 2、学习...
  • // ARM体系结构与编程(优势:汇编).pdf - 一下这本书 // ARM嵌入式系统开发:软件设计与优化.pdf www.arm.com  // DDI0500D_cortex_a53_r0p2_trm.pdf RSIC:精简指令集 - arm  (汇编指令...
  • arm交叉编译

    千次阅读 2017-12-04 18:49:14
    arm交叉编译

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,552
精华内容 6,220
关键字:

哪里找arm的资料