假设 Java Card 小程序中存在错误:临时字节数组存储在 EEPROM 而不是 RAM 中。此外,假设这个字节数组被每个 APDU 覆盖。
这个错误迟早会损坏卡。
我们可以期待什么症状?没有任何明确警告或错误的数组中的值不正确?访问这个数组时抛出了一些异常?小程序无法选择?整张卡完全没有反应?
卡应该“一劳永逸”地损坏,还是这些故障会越来越频繁地发生?
在我的实验(J2E145)中,在 5 000 000 个 APDU 之后出现了第一次故障,症状是卡根本没有发送 R-APDU 并且就死了。然而,下一个 APDU 再次正常,然后大约 10000 个 APDU 失败(频率增加),最后在 5 100 000 个 APDU 之后,卡永远停止通信。
是否有任何标准说明在 EEPROM 损坏的情况下会发生什么?(我正在寻找它,但我没有找到任何东西。)
我知道这个问题很广泛,它可能取决于特定的芯片(我对 NXP 芯片特别感兴趣),但我认为您的评论、答案和经验可以帮助许多 Java Card 开发人员,他们在部署后发现他们的代码中存在错误。