【问题标题】:Predicting JavaCard applet size on card预测卡上的 JavaCard 小程序大小
【发布时间】:2019-01-18 11:18:59
【问题描述】:

当我“清理并构建”一个 JavaCard 项目时,它会生成一个 CAP、EXP 和 JCA 文件。通常,CAP 文件将被 GlobalPlatformPro 或其他 GlobralPlatform 工具包等工具用于将 CAP 文件安装到 JavaCard 中。

我注意到我的 CAP 文件大小徘徊在 44 KB 左右,而我的 JCA 为 82 KB。在 CAP 和 JCA 文件之间,我应该使用哪一个来最准确地衡量我的代码的大小?

【问题讨论】:

  • 我知道 JCOP 工具会显示卡上的大小以及上传大小。但是,这可能特定于他们的平台,因为实际存储大小可能会有所不同(有些)。据推测,大多数平台上的字节码大小都是相同的。

标签: javacard


【解决方案1】:

GPPro 将使用-cap file.cap -info 显示代码大小

【讨论】:

  • 您能添加此命令的示例输出吗?我想对输出有所了解,而无需自己实际执行它;我想其他人也会。
  • 只是一个额外的问题,如果我要导入其他 EXP 文件和其他 JAR 文件库,这是否也会计入总代码大小,因为它说 5242 字节和 17345 带有调试?此外,在 Windows 文件系统视图中,CAP 文件显示 test.cap 的大小为 44 KB。那么,我是否将 5242 字节报告为卡上的实际大小或 17345 字节(带调试)在卡上或 44 KB 从 Windows 视图?
  • CAP 文件是一个(通常是未压缩的).zip 文件。查看它以了解更多发送到卡的信息。并非所有的 .cap 文件都必须发送(主要是 debug.cap),也不是所有数据都必须存储。
【解决方案2】:

JCA(Java Card Assembly)是 CAP 文件的文本表示。

CAP 文件是一个容器文件,并且该容器中的每个组件本身就是一个文件。它包含有关转换包的信息,其中每个组件都包含有关转换包的信息。该文件将用于 GP 客户端(或类似的东西)将字节码(在 cap 文件中)加载到卡中。

如果您要将小程序转换为最终安装到智能卡上,您可以生成一个 CAP 文件和一个 JCA 文件。然后,您可以检查 JCA 文件,以用户友好的可读方式检查 CAP 文件中的内容。

所以,

我应该使用哪一个来最准确地衡量我的代码的大小?

相对而言,这两个文件(CAP 和 JCA)的大小都会随着源代码的任何变化而变化,但您可以为此检查 CAP 文件大小。

有关 CAP 和 JCA 的更多信息,请参阅。 https://www.oracle.com/technetwork/java/embedded/javacard/documentation/applet-136808.html#capfl

【讨论】:

    【解决方案3】:

    回复@Martin Paljak,这是 GPPro 输出:

    GlobalPlatformPro v0.3.10rc4-0-gb81610e
    Running on Windows 7 ..... , Java 1.8.0_151 by Oracle Corporation
    **** CAP info of test.cap
    CAP file (v2.2) generated on Fri Jan 18 ......... 2019
    By Oracle Corporation converter  [v3.0.4] with JDK 1.8.0 (Oracle Corporation)
    Package: ..... v1.0 with AID ..........
    Applet: ..... with AID ..........
    Import: A0000000620001 v1.0
    Import: A0000000620102 v1.5
    Import: A0000000620201 v1.5
    Import: A0000000620101 v1.5
    Total code size: 5242 bytes (17345 with debug)
    SHA256 (code): 2AC53C69054C0B33BC2814A514A60BDE8B4E084FC2136AB562492D54A55C1129
    SHA1   (code): B523BF8E49C86157988FD1BDD667E4CC68CFF8EF
    No smart card readers with a card found
    

    【讨论】:

    • 好的,很酷。我认为这是上传代码的大小;代码本身所需的闪存 / EEPROM 可能会更低,当然,在实例化 Applet 本身之后可能会更高(因为类字段也将存储在持久内存中)。而且,如前所述,芯片上所需的精确内存量也因平台而异——元数据量是未知的,平台可能会产生例如关于内存对齐的不同决定。请注意,将其编辑到 Martin 的答案中而不是单独发布是更受欢迎的。
    猜你喜欢
    • 1970-01-01
    • 2014-06-28
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多