在智能卡微控制器里的三种不同类型的存储器具有完全不同的性能。ROM只能在制造期间通过掩膜来编程, 而且是所有的编完,在芯片的整个生命周期里它都是固定不变的。一旦给定了它的结构,要想在ROM的 内容上做一点偶然改动的可能性实际上为零。
RAM与ROM相反,它只有把电源加到智能卡时才能保持住其内容。一旦发生电源故障,则保存在RAM里的所有 数据就会全部失掉。然而,可以把数据以处理器的工作速度写入到BAM里,RAM可不限次数地进行擦除。另一 方面,EEPROM可以在没有外电源的情况下保持住数据。然而,它有三个缺点,即有限的寿命次数,较长的写 入/擦除时间(大约1ms/字节)和按页操作的结构。
存储在ROM中的操作系统的程序代码并不需要按照特别的结构来排列,除了对于中断向量来说,它已经按微 控制器的规定具有固定的格式。这样相互独立的程序段可以按任何希望的顺序彼此连接起来,不过我们还是 需要把软件跳转表的长度限制得短些,以便节省一些存储器空间。重要的是由差错检测码(EDC)对ROM的 保护,因为在ROM里偶尔发生错误是完全可能的。例如,在微控制器的ROM区域中的一个伤痕,或者在导线压 焊处理过程中发生的裂缝都可能导致在ROM里数据出错。令人注意的是,这并不一定代表操作系统就不起作 用,相反可能只有一些专用程序在错误地运行。为了把这样的错误情况一开始就排除掉,当操作系统运行开 始时就'总是测试ROM,看它是否出错。
图1 一个256字节RAM分区方式
图1给出一个256字节BAM的分区方式。它分成寄存器、堆栈、通用变量区、加密算法工作区和I/0缓存器。 例如,如果需要一个256字节的I/0缓存器或者如果必须把附加的变量存储在RAM里,那么可用存储器的极限 很快就达到了。这个问题可以通过在EEPROM中设置工作区来解决,即把EEPROM像RAM那样来使用。这样做的 缺点是其写人时间要比RAM寻址的时间长约10 000倍;另一个缺点是EEPROM单元的寿命有限,它不像BAM单元 那样可以不限次数的写人。然而,如果一个I/0缓存器,比整个可用的RAM单元还要多时,把RAM中的内容移到EEPROM中去通常是惟一的解决方案。
EEPROM的分区要比任何一种存储器都要复杂并难以理解得多。对于现代操作系统来说,EEPROM的分配基本上按图2所示。许多微控制器中在EEPROM的起始部位都有一个具有特殊硬件保护功能区。在这儿存放一些特殊的完工信息,诸如只使用的芯片惟一的编号。许多半导体制造商也在这个区域里标明芯片的类型和操作系统可使用的EEPROM的大小。这个区域通常会设计成写,多次读WORM(Write Once,Read Multiple)的存取方式,也就是说它只能写人,而后就只能读出了。在技术上,这一功能可以采用一般不能电擦除的EEPROM单元来实现,其内容如表5.4所示。
图2 智能卡操作系统分区的EEPROM
在这个区域的顶部,其大小通常为16~32个字节,做成了一个表和操作系统的指针。这些数据是在卡完工时就被放进EEPROM里的。这个列表和指针与ROM程序结合在一起就构成了完整的智能卡的操作系统,而只有在它们被装入之后,保存在卡里的操作系统才是完整的。这个区域由差错检测码EDC来保护,在第1次存取之前或在许多情况下的每次存取访问之前都要对差错检测码重新计算。这样才能保证操作系统可以在一个安全可靠的环境中运行。如果当EDC校验时检测到存储器出错,那么受影响的EEPROM部分以后就不能再使用,因为这个错误说明操作系统的正确的功能不再能够得到保证。
表 当芯片完工时,由半导体制造商写入EEPROM的WORM区中有关制造商的数据
(前5个制造数据项合在一起形成一个惟一的8字节芯片编号,其主要优点是它不要求与数个生产岗位的时间信息高同步,对所有生产机器中的每一台制造设备只能得到惟一可用的数据)
上述被保护的操作系统部分外,有一个包含有附加应用程序代码的区域。如果需要的话,这个区域也可以通过校验和的方式来防止变更。那些不应该放在ROM里的或者是因为太大而不适合放在ROM里的专用命令或算法就放在这个区域里。
接下来的区域包含着所有的文件结构,或换句话说,就是整个的外部可见的文件树。这个区域不是作为整体由校验和保护的,相反,通常有很强的面向文件的保护。这个区域更为详细的内部结构如图3所示。
图3 智能卡操作系统文件分区存储之例(它支持相互分开而独立的多应用)
在EEPROM的顶部,有一个可选自由存储区,它有自己的存储管理器。然而,自由存储区经常被分配给在文件区的各个应用,它可在应用内使用以建立新的文件。否则,它属于通用文件区并可为整体上装入的所有新应用来使用。
如果一个文件被删除,则自由存储器区域将把那些变成自由的存储器接管下来。如果存储器是被分成文件存储器和自由存储区域的话,那么只有的文件,如果被删除的话,所占据的存储器实际上才可以被转换给自由存储器区域,这大大地限制了存储管理器的选择,在智能卡里供程序代码使用的有限的空间容量也不允许有任何别的解决方案。
一种理想的解决方案应该是分别对已占用和未占用的存储器带双重跳转表的存储器管理方式。这样才使它能够以类似于DOS或UND(文件管理的方式那样来创建新的文件和删除文件。然而,文件管理程序的成本和文件描述等的开销对智能卡操作系统来说,并不是一个合理的设计,而实践中出现应用必需创建或删除文件的情况是极其罕见的。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。