智能卡操作系统的生命周期可分成两部分—卡完工之前和卡完工之后。在卡完工之前的期间,来自工厂的 微控制器的eeprom是空的,所有程序都在rom里运行。从eeprom里既读不到数据,也没有任何运行的代码。 如果在这个时候发现rom里的代码错误而使得完工成为不可能时,这一批微控制器都必须整个报废掉,因为 芯片根本不能使用。
为了把类似这样的情况减到最少程度,有可能只是把一个很小的用于eeprom的加载程序放在rom里,并且把 实际的操作系统下载到eeprom中。当然,相对于rom来说,eeprom的每1位的芯片表面积大了4倍,这就意味 着这种方法将对芯片的成本产生很大的影响。所以,基于纯经济方面的考虑,必须把尽可能多的程序代码放 在rom里。因此,所有操作系统程序的核心部分以及其余的重要部分都存储在rom中,在完工后的版本中,只 允许一小部分程序跳转到eeprom。
有些操作系统甚至在完工之后都是完全在rom中运行,只是把数据存储在eeprom中,以尽可能减小那代价昂 贵的eeprom尺寸。当然,这种使存储器芯片占用面积的最小化是以牺牲操作系统的灵活性为代价的。
在完工过程中,rom里的代码是适应于实际应用的。rom代码可以看成是一个大的内部互通的数据库与 eeprom的代码一起组成一个功能应用,其间的关系如图1所示。另外,在完工期间几乎所有的操作系统都允 许附加指令或专门的加密算法的程序代码放在eeprom里。在这里还用不着任何可执行文件,因为这样的文件 内容可以在晚些时候,例如当卡个人化时再下载进去。只是在卡完工的期间把上述程序装入卡里时才算把操 作系统完全装人了,再通过操作系统来直接应用这些程序。
图1 利用在操作系统完工时存储在eeprom里的链接表把rom里程序代码段联接起来
1.硬件识别
绝大多数较新的操作系统在具有不同大小的eeprom存储器的微控制器上运行。当然,rom和ram的大小必须 保持恒定。这对于卡的发行商来说就总工会是使用最便宜的微控制器类型来满足其需要。例如,开始时只用 一种带有1kb eeprom的廉价的单应用卡,稍后再使用具有2、4、8或16kb eeprom等较为昂贵的微控制器的多应用卡。为了扩展微控制器制造商支持的芯片范围,智 能卡操作系统也必须表现出与其相当的功能相匹配的能力。也就是说操作系统必须能够自动地识别eeprom的 大小并进而设置其内部指针结构来适合于最大自由存储量、文件的大小以及和运行相关的操作参数。这方面 的技术实现涉及到一个操作系统程序在读取制造商的最终数据和依此信息计算出可用的eeprom的大小。这一 过程只适合于可变大小的eeprom。目前的智能卡操作系统软件自身还不能适应rom或ram的大小变化。
这种硬件识别能力的主要优点是智能卡操作系统的生产者在eeprom的大小变化时不再一定要对程序代码修 改。从而消除了一种可能的错误根源,特别是它意味着操作系统没必要对新的硬件平台重新评估。现代操作 系统的这种硬件识别能力节省了在软件开发方面的大量时间,也可以减少几个星期的硬件产品开发时间。
2.软掩膜和硬掩膜
“软掩膜”和“硬掩膜”的术语常被用在现场试验和智能卡操作系统方面。严格地说,从纯逻辑的观点来 看这两个术语都是没有意义的,因为所谓rom掩膜就意味着位于rom里的程序代码总是不变的因而是“硬”的 。然而,在智能卡世界的常用行话里,术语“软掩膜”只表示一些类似于掩膜的东西,当智能卡操作系统的 部分或全部程序代码以及相关应用命令是放在eeprom里时就用这个术语。这就表示程序代码可以相对容易地 进行改变,而不需要制作一个新rom掩膜的时间和费用。这种类型的“掩膜”是可变的,或者说是“软”的 。软掩膜主要用在试验期间或现场试验中,这样可以纠正错误并迅速地修改程序而花费却最少。其缺点就是 它们需要使用具有较大容量的eeprom芯片,它们确实比程序代码量相同的rom芯片要贵些。然而,由于现场 试验不会涉及到发行上百万张卡的问题,所以采用大容量eeprom芯片所增的成本是可以承受的。
一旦软掩膜的测试或现场试验完成,放在eeprom中的程序代码再没有任何修改而准各投人正式使用的话, 就可以通过真正的rom掩膜生产过程把程序代码从eeprom中转移到rom中。这样做的结果称之为“硬掩膜”, 因为它不能再轻易地修改了。严格地说,硬掩膜的惟一优点就是对于给定数量的存储器用rom比用eeprom所 占芯片面积要大大地减少,这样就可以在具有相同数量的程序代码情况下获得更小、更便宜的微控制器。
通过软、硬掩膜两步处理,在卡发行到用户之前的很短的时间里对新卡应用来说创造了为程序代码的实际 修改提供了更多的灵活性。要是用rom掩膜处理的话,一旦生产商完成了掩膜,再对程序代码做改动就不可 能了。相对于旧的处理方式来说,两步处理方式具有明显的优势,现在每当引入新