在新的嵌入式设计 中,有三分之一是采用8位CISC微控制器(MCU),嵌入式统计编程人员开始使用高级编程语言。闪存密度不断提高。所有这些趋势可以由一个设计方案关联起来:利用大容量闪存设计嵌入式MCU系统的解决方案。
用闪存替代PROM或EPROM的优点包括:开发代码的时间缩短;产品可以在组装线上完成测试和按需定制过程;可以现场纠正代码错误,不用拆除产品;增加产品新特性十分容易,甚至可以通过远程完成。
闪存有多大才够用
固件往往会超出系统最初设计的内存容量,产生这种现象有各种原因:固件所具有系统差异化特性;使用高级语言编写代码;采用OS内核;因此,64K字节闪存是今天嵌入式8位CSIC设计的最低配置需求,还需要把数据存储和记录功能所需的存储容量考虑在内。这些特性可以大幅度提升产品的可销售性。
系统内编程和应用中编程
一般情况下,系统内编程(ISP)应用于可编程逻辑以及可编程非易失性存储器(NVM)。但是,在本文中,我们将引用一个新的术语“应用中编程(IAP)”。当涉及到微控制器时,ISP和IAP之间存在着细微但重要的差别,内存ISP是指对内存进行编程时,MCU保持脱机状态,并且不涉及这一过程。而系统内IAP则是指MCU参加内存编程过程,这对更新固件过程中必须联机的系统来说很重要。在一般情况下,ISP适用于生产制造,而IAP则适合现场更新。
IAP并不是想象得那么简单
一个主机通过一个由MCU支持的信道,向嵌入式闪存系统下载固件,这个信道通常情况下是一个UART,但是由MCU支持的任何信道都可以提供这一功能(如CAN、调制解调器、USB、J1850等)。由于MCU参与IAP过程,因此,它必须执行由一个非可擦或非可编程的存储器阵列提供的代码。另外,MCU无法使用引导代码和闪存编程算法(IAP装入代码)。因此,必须使用一个备用存储器阵列来存储IAP装入代码。今天,AMD、Atmel、SST和ST等多家公司都能提供在单片上包含两个以上的独立并行闪存器件,而且,SST还提供了一带两个单板并行闪存的单芯片MCU。并行存储器特别适用于IAP应用。系统设计人员必须选择正确型号的备用存储器来存储IAP装入代码。每种备用存储器都有优点和缺陷,如表1所示,备用存储器可以位于MCU外部,也可以插件的形式装在MCU内。图1是一个带外存储器具有IAP功能的系统的顶视图。
其它问题
某些MCU(特别是8051)提供两个独立的地址空间,一个用于程序内存,另一个用于数据内存。因为,这些MCU不能在下载过程中向程序空间写入代码。今天,一些产品能够在IAP过程中,按数据空间而不是程序空间对闪存进行临时性的“重新分类”。SST开发的单片闪存MUC和ST推出的PSD都能提供这种功能,另一种方法是,通过外部合并,使闪存既能提供程序存储空间又能提供数据存储空间,但是这种方法丧失了独立空间产生的保护作用,并且整体地址空间也缩小了一倍。
8位CICS MCU通常提供的线性地址空间不足64K字节,要想超过64K,必须采用页面调度技术(或内存模块技术)。但当一个拥挤的内存印象图必须容纳临时IAP装入代码时,这项技术会变得十分复杂。设计人员必须提供IAP装入代码和主存储器之间的动态换入和换出方法,从而优化拥挤的地址空间。在IAP过程中,当需要一套中断向量时,或者应用程序需要不同的向量时,存储器交换功能特别重要。ST开发的PSD器件就在芯片上建设了动态映像能力。
ISP可选方案
一个独立配套的信道可以直接给闪存内容编程,无需MCU介入。Atmel和 Mitsubishi开发的闪存通过一个小型外设接口(SPI)实现ISP,同时保持MCU处于复位状态。ST开发的闪存PSD采用了JTAG,可直接实现闪存ISP。图2说明了两种方法。这些方案都引起了人们的关注,因为,在实现ISP过程中,它们要求开发和调试嵌入式软件,也不需要备用存储器。软件工程师可以直接为项目开发应用代码。
ISP还解决了制造问题,设计人员不喜欢用芯片插座设计产品,插座成本高、不可靠,插座部分必须预编程,而且还须库存,通过提供对完全空白的MCU和焊接在电路板上的内存的编程方法,一个独立的ISP信道可以解决这些问题。如果一个产品的设计具有ISP功能,那么,所有硬件都可以在出货时进行组装和测试过程,并按照客户的要求,准确修改产品。
如果在这一过程中,MCU可以脱机,那么ISP还可完成现场更新。
单板还是外部闪存
嵌入式闪存可以插件的形式装在MCU(单片MCU)之内,也可以装在外部套件内,让我们看一下,哪一种方法可行。
单片MCU
对目前所选的带单板闪存的8位CISC MCU进行的一项调查显示,密度范围在8K-64K字节之间。
单片MCU的优点:单一器件,节省空间;功耗低;安全存储,无权限访问无法查看或复制存储内容;无等待状态操作。
缺点:经常出现内存容量不足现象;固定特性设置;如果MCU不提供闪存,必须重写代码;一般情况下内存印象图固定;ISP/IAP信道类型固定;时常需要编程电压增加到12
VDC (VPP);大多数器件的擦/写循环次数少(限制数据使用闪存);调试可见度低,在线仿真器更加重要。
外部闪存
在MCU外部实现IAP闪存,带来了很多机会。
使用外存储器的优点:成本效益;可以实现更高的闪存密度;可以继续使用MCU和上次项目中开发的旧代码;内存印象图完全对设计人员开放;IAP信道的选择只受限于MCU能力;可以选择成本低廉的无ROM的普通MCU。
缺点:通常需要一个备用的IAP内存;MCU接口复杂(页面调度、交换、程序与数据空间);地址和数据总线连接占用了MCU I/O的全部管脚;功耗高;占据空间大;内存内容不安全,容易被无权限访问者偷看或复制。
跨越障碍:设计/调试外部IAP闪存时,设计人员面对的挑战;创建一个MCU到闪存IAP的接口(译码、控制、分段等);增加一个次存储阵列,使MCU在IAP过程中可以工作;克服一些MCU无法向程序内存写入代码的缺陷。
设计MCU接口和增加一个IAP次存储阵列,与闪存器件的集成化水平有关。一个普通的分立器件解决方案,包括一个闪存器件、一个IAP次存储器阵列和一个用于地址译码、信号分离、控制逻辑以及存储器页面调度、分段和交换实现的CPLD。因为大多数8位MCU具有512字节或容量不大的单板SRAM,所以,通常还需要一个外部元件。AMD、Atmel、ST
和 SST提供的闪存器件由两个大容量并行阵列组成,每个都有一个固定的地址映像图定义。ST提供的可编程系统器件(PSD)家族包含三个并行内存(2个闪存,1个SRAM),内建一个MCU接口及可编程地址映像逻辑。
假如一个8位IAP闪存的设计,要求代码或数据必须使用大容量的闪存,那么,只有AMD、Atmel、 ST 和 SST开发的高密度器件可以满足这样的需求。地址译码和信号分离、内存的页面调度、交换和分段译码需要可编程逻辑。见图3。
图4所示是ST开发的 PSD854F2器件,这是一个高度集成化双片解决方案。PSD 有三个独立的并行内存阵列和一个可以直接建立连接的可编程MCU接口。所有的地址译码和信号分离、存储页面调度、存储交换和扇区译码均通过可编程逻辑在内部完成。除提供IAP功能外,一个JTAG信道还提供直接ISP。
被外部地址和数据连接所占用的MCU I/O 管脚,通过增加管脚,恢复功能。安全性能确保PSD 内容不会被无权限人员偷看或复制。
|