2413809_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2413809_zh-CN

2413809_zh-CN

LPC55S28 CASPER ECC 乘法执行时间

我正在尝试弄清楚下面的代码是否应该在我测量的时间内执行完毕,或者我的设置是否出错导致它运行速度非常慢。这段代码是使用 kCASPER_ECC_P256 从给定的私钥生成公钥的函数的一部分。

以下代码使用 GPIO 开关来测量执行时间。设置和清除 GPIO 调用之间需要 337 毫秒。对于这种硬件加速的数学运算来说,这个速度似乎太慢了。这是预期之内的吗?我的MCU核心时钟频率为148MHz。有没有办法选择 CASPER 引擎的时钟源来加快速度?

   /* Base Generator Point G(x, y) for secp256r1 in 32-bit Little-Endian word arrays */
    static const uint32_t G_x_le[8] = {
        0xD898C296, 0xF4A13945, 0x2DEB33A0, 0x77037D81,
        0x63A440F2, 0xF8BCE6E5, 0xE12C4247, 0x6B17D1F2
    };

    static const uint32_t G_y_le[8] = {
        0x37BF51F5, 0xCBB64068, 0x6B315ECE, 0x2BCE3357,
        0x7C0F9E16, 0x8EE7EB4A, 0xFE1A7F9B, 0x4FE342E2
    };

    uint32_t scalar_le[8];
    uint32_t Q_x_le[8];
    uint32_t Q_y_le[8];

    /* Copy Big-Endian private scalar and convert to Little-Endian for CASPER */
    memcpy(scalar_le, key_buffer, 32);
    swap_endian_32((uint8_t *)scalar_le);



    /* 1. Initialize CASPER coprocessor */
    CASPER_Init(CASPER);
    CASPER_ecc_init(kCASPER_ECC_P256);

    HW_DB_PinSet();

    /* 2. Compute Q = d * G using CASPER hardware */
    CASPER_ECC_SECP256R1_Mul(
        CASPER,
        Q_x_le, Q_y_le,
        G_x_le, G_y_le,
        scalar_le
    );
    HW_DB_PinClear();
回复: LPC55S28 CASPER ECC Multiply Execution Time

@guitardenver

我们使用 MCUXpresso SDK CASPER 示例在运行频率为 150 MHz 的 LPC55S28 EVK 上测量了相同的操作。对 CASPER_ECC_SECP256R1_Mul() 的一次调用大约需要 2410 万个 CPU 周期,相当于大约 160 毫秒的执行时间。

根据这一结果,您应用程序中测得的 337 毫秒似乎并不算不合理,特别是如果考虑到额外的密钥格式化、数据转换、初始化或调试版本开销的话。

CASPER 不提供单独的用户可配置时钟源。执行时间主要取决于使用 CASPER 加速器的 ECC 软件实现。

BR

哈里

Re: LPC55S28 CASPER ECC Multiply Execution Time

你可以做以下几件事。但是,我没有在这个MCU上看到CASPER引擎的任何可配置时钟选项。


1. 使用 O2 优化来提高速度

2.启用 Flash 加速器预取和等待状态优化。

SYSCON -> FMCCR |= SYSCON_FMCCR_PREFEN_MASK ;
 
之后我把它降到了160毫秒。

 

Re: LPC55S28 CASPER ECC Multiply Execution Time
我正在尝试弄清楚下面的代码是否应该在我测量的时间内执行,或者我是否设置了某些限制。 嘿!即使使用 P256,对于 148MHz 的 MCU 来说,硬件加速的 ECC 操作耗时 337 毫秒也确实有点高。你调查这件事是件好事。有时驱动程序开销或时钟问题可能会悄悄出现。您是否检查过 CASPER 引擎的具体时钟源,或者是否有任何关于优化其性能的可用文档?
Tags (1)
No ratings
Version history
Last update:
Saturday
Updated by: