ARM芯片的长处小编在这儿不用多说,许多朋友必定可以十分熟练地进行罗列。关于新手来说,这款处理器长处颇多易于上手,十分合适在学习初期运用。但在开端运用ARM进行实际操作之前,小编期望我们可以了解一些其运用过程中一些留意事项。接下来我们就随小编来一同看一看这13个留意事项吧。
MAM运用留意事项
当改动MAM定时值时,有必要先经过向MAMCR写入0来封闭MAM,然后将新值写入MAMTIM。最终,将需求的操作形式的对应值写入MAMCR,再次翻开MAM。关于低于20MHz的体系时钟,MAMTIM设定为001。关于20MHz到40MHz之间的体系时钟,主张将Flash拜访时刻设定为2cclk,而在高于40MHz的体系时钟下,主张运用3cclk。
VIC运用留意事项
假如在片内RAM傍边运转代码并且运用程序需求调用间断,那么有必要将间断向量从头映射到Flash地址0x0。这样做是由于一切的反常向量都坐落地址0x0及以上。经过将寄存器MEMMAP(坐落体系控制模块傍边)装备为用户RAM形式来完结这一点。用户代码被衔接以便使间断向量表装载到0x40000000。
IRQ和FIQ之间的差异
IRQ和FIQ是ARM处理器的两种编程形式。IRQ是指间断形式,FIR是指快速间断形式。关于FIQ,有必要赶快处理并脱离这个形式。IRQ可以被FIQ所间断,但IRQ不能间断FIQ。为了使FIQ更快,所以这种形式有更多的影子寄存器。FIQ不能调用SWI(软件间断)。FIQ还有必要禁用间断。假如一个FIQ例程有必要从头启用间断,则它太慢了,并应该是IRQ而不是FIQ。
ARM指令与Thumb指令的差异
在ARM体系结构中,ARM指令会集的指令是32位的指令,其履行功率很高。关于存储体系数据总线为16位的运用体系,ARM体系供给了Thumb指令集。Thumb指令集是对ARM指令集的一个子集从头编码得到的,指令长度为16位。一般在处理器履行ARM程序时,称处理器处于ARM状况;当处理器履行Thumb程序时,称处理器处于Thumb状况。Thumb指令集并没有改动ARM体系地层的程序规划模型,只是在该模型上加上了一些约束条件。Thumb指令会集的数据处理指令的操作数依然为32位,指令寻址地址也是32位的。
什么是ATPCS
为了使独自编译的C言语程序和汇编程序之间可以彼此调用,有必要为子程序之间的调用规矩必定的规矩。ATPCS便是ARM程序和Thumb程序中子程序调用的根本规矩。这些规矩包含寄存器运用规矩,数据栈的运用规矩,参数的传递规矩等。
ARM程序和Thumb程序混合运用的场合
一般,Thumb程序比ARM程序愈加紧凑,并且关于内存为8位或16位的体系,运用Thumb程序功率更高。可是,在下面一些场合下,程序有必要运转在ARM状况,这时就需求混合运用ARM和Thumb程序。着重速度的场合,应该运用ARM程序。有些功用只能由ARM程序完结。如:运用或许制止反常间断。
当处理器进入反常间断处理程序时,程序状况切换到ARM状况,即在反常间断处理程序进口的一些指令是ARM指令,然后根据需求程序可以切换到Thumb状况,在反常间断程序回来前,程序再切换到ARM状况。
ARM处理器总是从ARM状况开端履行。因此,假如要在调试器中运转Thumb程序,有必要为该Thumb程序增加一个ARM程序头,然后再切换到Thumb状况,履行Thumb程序。
ARM体系结构所支撑的反常类型
ARM体系结构所支撑的反常和详细意义如下(圈里面的数字表明优先级):
复位①:当处理器的复位电平有用时,发生复位反常,程序跳转到复位反常处履行(反常向量:0x0000,0000);
未界说指令⑥:当ARM处理器或协处理器遇到不能处理的指令时,发生为界说反常。可运用该反常机制进行软件仿真(反常向量:0x0000,0004);
软件间断⑥:有履行SWI指令发生,可用于用户形式下程序调用特权操作指令。可运用该反常机制完结体系功用调用(反常向量:0x0000,0008);
指令预取间断⑤:若处理器的预取指令的地址不存在,或该地址不允许当时指令拜访,存储器会向处理器宣布间断信号,当预取指令被履行时,才会发生指令预取间断反常(反常向量:0x0000,000C);
数据间断②:若处理器数据拜访的指令的地址不存在,或该地址不允许当时指令拜访,发生数据间断反常(反常向量:0x0000,0010);
IRQ④(外部间断恳求):当处理器的外部间断恳求引脚有用,且CPSR中的I位为0时,发生IRQ反常。体系的外设可以该反常恳求间断服务(反常向量:0x0000,0018);
FIQ③(快速间断恳求):当处理器的快速间断恳求引脚有用,且CPSR中的F位为0时,发生FIQ反常(反常向量:0x0000,001C)。
阐明:其间反常向量0x0000,0014为保存的反常向量。
ARM体系结构的存储器格局
ARM体系结构的存储器格局有如下两种:
大端格局:字数据的高字节存储在低地址中,字数据的低字节寄存在高地址中;
小端格局:与大端存储格局相反,高地址寄存数据的高字节,低地址寄存数据的低字节。
存储器从头映射(Remap)的原因
使Flash存储器中的FIQ处理程序不用考虑由于从头映射所导致的存储器鸿沟问题;用来处理代码空间中段鸿沟裁定的SRAM和BootBlock向量的运用大大削减;为超越单字搬运指令规模的跳转供给空间来保存常量。
ARM中的重映射是指在程序履行过程中经过写某个功用寄存器位操作到达从头分配其存储器地址空间的映射。一个典型的运用便是运用程序存储在Flash/ROM中,初始这些存储器地址是从0开端的,但这些存储器的读时刻比SRAM/DRAM长,形成其内部履行频率不高,故一般在前面一段程序将代码搬移到SRAM/DRAM中去,然后从头映射存储器空间,将相应SRAM/DRAM映射到地址0,从头履行程序可到达高速运转的意图。
存储反常向量表中程序跳转运用LDR指令而不运用B指令的原因
LDR指令可以全地址规模跳转,而B指令只能在前后32MB规模内跳转;芯片具有Remap功用。当向量表坐落内部RAM或外部存储器中,用B指令不能跳转到正确的方位。
锁相环(PLL)留意关键
PLL在芯片复位或进入掉电形式时被封闭并旁路,在掉电唤醒后不会主动康复PLL的设定;
PLL只能经过软件使能;
PLL在激活后有必要等候其确定,然后才干衔接;
PLL假如设置不妥将会导致芯片的错误操作。
ARM7与ARM9的差异
ARM7内核是0.9MIPS/MHz的三级流水线和冯S226;诺伊曼结构;ARM9内核是五级流水线,供给1.1MIPS/MHz的哈佛结构。ARM7没有MMU,ARM720T是MMU的;ARM9是有MMU的,ARM940T只要Memoryprotectionunit.不是一个完好的MMU。ARM7TDMI供给了十分好的功用——功耗比。它包含了Thumb指令集快速乘法指令和ICE调试技能的内核。ARM9的时钟频率比ARM7更高,选用哈佛结构区分了数据总线和指令总线。
运用外部间断留意
把某个引脚设置为外部间断功用后,该引脚为输入形式,由于没有内部上拉电阻,所以有必要外接一个上拉电阻,保证引脚不被悬空;除了引脚衔接模块的设置,还需求设置VIC模块,才干发生外部间断,不然外部间断只能反映在EXTINT寄存器中;要使器材进入掉电形式并经过外部间断唤醒,软件应该正确设置引脚的外部间断功用,再进入掉电形式。
以上13条留意事项与主张,可以协助我们在新手阶段更好的进行有关ARM芯片的学习与规划。省去了规划者由于不了解原理或其间一些小问题形成的不用要的时刻糟蹋。了解这些常识的朋友也不要漫不经心,无妨保藏本文以备不时之需。