SPIFI功能块与微控制器应用的高速
总线(AHB)矩阵连接,后者主要用于处理器内核和片上内存。SPIFI将外部SPI闪存内容映射到微控制器内存中。当片上ROM启动代码激活SPIFI接口后,外部SPI内存与核心处理单元上的片上内存功能完全相似。
初始化序列
SPFI接口的所有
驱动程序全部保存在ROM中。对于读取操作,只需一个例程调用指令即可启动SPIFI外设。初始化序列结束后,整个SPI闪存可以象正常内存一样由处理器和/或DMA通道按
字节、
半字、整字访问。擦除和
编程通过简单的API指令访问ROM命令调用即可,因此,使用外部SPI闪存与片上内存几乎没有差别。
从SPIFI启动
对于需要微控制器从外部
串行闪存启动的系统,恩智浦LPC1800微控制器已配置了SPIFI启动功能。启动源的选择有两种方法:第一种是使用微控制器
引脚确定启动源的接口;第二种由用户在
非易失性内存中
编程选择启动接口。使用
非易失性内存编程可保留
引脚的双重功能。
独立于CPU的运行
SPIFI软件可读取外部闪存数据,并将其写入RAM或外设,无需CPU支持。比如,对于集成LCD控制器的微控制器,此功能可以提高系统性能,节约功耗。外部闪存可以保存图像并通过LCD控制器读取。由于LCD控制器大多数按地址顺序读取数据,SPIFI外设可根据需要预先获取地址,无需等待。整个操作无需CPU参与,也不用将图像加载到片上RAM,而由LCD控制器直接获取。因此,系统对微控制器片上RAM的容量要求不高,或者可将现有RAM释放出来用于完成其他任务。由于LCD控制器直接获取图像,LCD显示屏图像刷新速度更快,简单的开关窗口等操作显得更加平滑流畅。另外,为降低功耗,系统还可以使用低时钟速率运行,不会对显示性能有太大影响。
直接执行代码
从软件的角度看,微控制器可以直接执行外部SPI闪存中的代码。直接执行代码有利于在线升级或者更新片上闪存的出厂功能。外部闪存可以存放通过验证的升级代码。例如,如果系统功能地址保存在片上闪存的表单中,通过外部闪存的例程地址即可对该表单重新
编程。或者,如果包含原始例程起始信息的内存页保存在片上闪存中,通过外部分支长跳转到外部闪存的新例程即可更新内存页。对于上述两例,由于SPIFI
外设可以实现外部闪存代码直接执行,因此新代码无需加载到片上RAM。
通过外部闪存执行代码的速度远不及片上内存。SPIFI外设设计并非针对需要峰值性能的实时运行功能,但是对于执行非关键代码序列,SPIFI具有很大的吸引力。
写/执行并行操作功能
SPIFI支持写功能和执行功能同时进行,换句话说,即使处理器正在执行片上闪存代码,也可以快速方便地对外部闪存进行
编程和擦除。由于SPIFI
外设可以独立运行,不受CPU影响,因此在外部
串行闪存编程的同时,系统可以继续执行相关任务。
由于系统在执行关键应用代码的同时可以对外部闪存进行写操作,因此该功能可用于在线软件更新。例如,智能电表即使在更新软件时也需要不间断工作。利用SPIFI,公用工程公司可以配置系统,向外部闪存写入任何代码,无需中断智能电表的计量工作,最后再将新代码集成到系统中。同样,对于使用USB端口的系统,新代码可以先保存在便携式USB驱动器中,再传输到外部闪存,无需中断重要操作。