LPC2138处理器只使用一组Flash存储器,包含3个128位的缓冲区:
●预取指缓冲区。
●分支跟踪缓冲区。
●数据缓冲区。
LPC2138在运行位于Flash中的程序代码时,可以依靠存储器加速模块MAM最大限度的提高处理器性能。存储器加速模块MAM分为以下几个功能部件:
●1个Flash地址锁存器和1个增量器,用于预取指地址。
●1个128位的预取指缓冲区及其相关的地址锁存及比较器。
●1个128位的分支跟踪缓冲区及其相关的地址锁存及比较器。
●1个128位的数据缓冲区及其相关的地址锁存及比较器。
●控制逻辑。
●等待逻辑。
MAM定义了3种操作模式:
①MAM关闭模式。所有存储器请求都将导致Flash的读操作,没有指令预取。
②MAM部分激活模式。如果数据可用,则从保持锁存区执行连续的指令访问,指令预取激活。非连续的指令访问启动Flash读操作,这意味着所有的转移指令都会导致从存储器取指。由于缓冲的数据访问时序很难预测,并且依赖于所处的状况,因此,所有数据操作都会导致Flash读操作。
③MAM完全激活模式。任何存储器请求(代码或数据),如果其值已经包含在其中一个保持锁存区中,那么从缓冲区执行该代码或数据访问,将导致指令预取激活。Flash读操作用于指令的预取和当前缓冲区所没有的代码或数据访问。
处理器复位后,MAM默认为禁止状态,软件可以随时将存储器访问加速功能打开或关闭。这样可以使大多数应用程序以最高速度运行,而某些要求更精确的功能,可以用较慢但可以预测的速度运行。启用MAM之后,Flash编程功能不受MAM控制,而是作为一个独立的功能处理。(www.daowen.com)
存储器加速模块MAM通过2个寄存器进行操作。
1.MAM控制寄存器MAMCR
MAMCR寄存器用于决定MAM的操作模式。复位后MAM功能被禁止,改变MAM操作模式,将导致MAM所有的保持锁存内容无效,因此需要执行新的Flash操作。MAMCR寄存器的功能如表3-4所列。
表3-4 MAMCR寄存器功能
2.MAM定时寄存器MAMTIM
MAMTIM寄存器用于决定Flash存储器所使用的时钟个数(1~7个处理器内核时钟CCLK),从而可以调整MAM时序以便与处理器操作时序相匹配。MAMTIM寄存器的功能如表3-5所列。
MAM使用中应当注意以下两个问题:
(1)MAM定时值问题
改变MAM定时值的时候,必须先通过向MAMCR寄存器写入0来关闭MAM,然后再将新的值写入MAMTIM寄存器,最后将需要的操作模式对应值写入MAMCR寄存器,再次打开MAM。对于低于20MHz的系统时钟,建议将MAMTIM设定为1;对于20~40MHz的系统时钟,建议将MAMTIM设定为2;对高于40MHz的系统时钟,建议将MAMTIM设定为3。
表3-5 MAMTIM寄存器功能
(2)Flash编程问题
在编程和擦除操作过程中不允许访问Flash存储器。如果在Flash模块忙时请求访问Flash地址,MAM就必须强制CPU等待而导致代码执行的延时,这在某些情况下会导致看门狗超时而使CPU发生复位。用户必须注意这种可能性,采取一定的措施来保证不会在编程或擦除Flash存储器期间出现非预期的看门狗复位。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。