LPC55S28 CASPER ECC Multiply Execution Time

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

LPC55S28 CASPER ECC Multiply Execution Time

ソリューションへジャンプ
81件の閲覧回数
guitardenver
Contributor IV

I am trying to figure out if the below code is expected to execute within the time I'm measuring or if I have something set up wrong and it's making it very slow. This code is part of a function that generates a Public Key from given private key using kCASPER_ECC_P256.

The below code uses a GPIO toggle to measure execution time. Between the Set and Clear GPIO calls, it takes 337mS. Which seems slow for hardware accelerated math for this operation. Is this expected? My MCU has a core clock of 148MHz. Is there a way to choose the clock source for the CASPER engine to speed this up?

   /* 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();
0 件の賞賛
返信
1 解決策
54件の閲覧回数
Harry_Zhang
NXP Employee
NXP Employee

Hi @guitardenver 

We measured the same operation using the MCUXpresso SDK CASPER example on an LPC55S28 EVK running at 150 MHz. A single call to CASPER_ECC_SECP256R1_Mul() required approximately 24.1 million CPU cycles, corresponding to about 160 ms execution time.

Based on this result, the measured 337 ms in your application does not appear unreasonable, especially if additional key formatting, data conversion, initialization, or debug-build overhead is included.

CASPER does not provide a separate user-configurable clock source. The execution time is primarily determined by the ECC software implementation that utilizes the CASPER accelerator.

BR

Harry

元の投稿で解決策を見る

0 件の賞賛
返信
3 返答(返信)
34件の閲覧回数
Niklschmidt
Contributor I
I am trying to figure out if the below code is expected to execute within the time I'm measuring or if I have something set up  Hey there! That 337ms for a hardware-accelerated ECC operation definitely sounds a bit high for a 148MHz MCU, even with P256. It's good you're looking into it. Sometimes driver overhead or clocking issues can sneak in. Have you checked the CASPER engine's specific clock source or any available documentation on optimizing its performance?
0 件の賞賛
返信
30件の閲覧回数
guitardenver
Contributor IV

There are a couple things you can do.  But I do not see any configurable clock options for CASPER engine on this MCU.

 

1. Use O2 optimizations for speed

2. Enable the Flash accelerator prefetch and wait state optimization. 

SYSCON->FMCCR |= SYSCON_FMCCR_PREFEN_MASK;
 
After this I am able to get it down to 160mS

 

0 件の賞賛
返信
55件の閲覧回数
Harry_Zhang
NXP Employee
NXP Employee

Hi @guitardenver 

We measured the same operation using the MCUXpresso SDK CASPER example on an LPC55S28 EVK running at 150 MHz. A single call to CASPER_ECC_SECP256R1_Mul() required approximately 24.1 million CPU cycles, corresponding to about 160 ms execution time.

Based on this result, the measured 337 ms in your application does not appear unreasonable, especially if additional key formatting, data conversion, initialization, or debug-build overhead is included.

CASPER does not provide a separate user-configurable clock source. The execution time is primarily determined by the ECC software implementation that utilizes the CASPER accelerator.

BR

Harry

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2413809%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ELPC55S28%20CASPER%20ECC%20%E4%B9%97%E7%AE%97%E5%AE%9F%E8%A1%8C%E6%99%82%E9%96%93%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2413809%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E8%A8%88%E6%B8%AC%E6%99%82%E9%96%93%E5%86%85%E3%81%AB%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E6%83%B3%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B%E3%80%81%E3%81%9D%E3%82%8C%E3%81%A8%E3%82%82%E8%A8%AD%E5%AE%9A%E3%81%AB%E4%BD%95%E3%81%8B%E5%95%8F%E9%A1%8C%E3%81%8C%E3%81%82%E3%81%A3%E3%81%A6%E5%AE%9F%E8%A1%8C%E3%81%8C%E9%9D%9E%E5%B8%B8%E3%81%AB%E9%81%85%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B%E3%82%92%E7%AA%81%E3%81%8D%E6%AD%A2%E3%82%81%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E3%80%81kCASPER_ECC_P256%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E6%8C%87%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%E7%A7%98%E5%AF%86%E9%8D%B5%E3%81%8B%E3%82%89%E5%85%AC%E9%96%8B%E9%8D%B5%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0%E3%81%AE%E4%B8%80%E9%83%A8%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E3%80%81GPIO%E3%83%88%E3%82%B0%E3%83%AB%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E5%AE%9F%E8%A1%8C%E6%99%82%E9%96%93%E3%82%92%E8%A8%88%E6%B8%AC%E3%81%97%E3%81%BE%E3%81%99%E3%80%82Set%20%E3%81%8A%E3%82%88%E3%81%B3%20Clear%20GPIO%20%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%AE%E9%96%93%E3%81%AB%E3%81%AF%20337%20%E3%83%9F%E3%83%AA%E7%A7%92%E3%81%8B%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E6%BC%94%E7%AE%97%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%A9%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%82%88%E3%82%8B%E8%A8%88%E7%AE%97%E5%87%A6%E7%90%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AF%E9%81%85%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E6%80%9D%E3%82%8F%E3%82%8C%E3%82%8B%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E6%83%B3%E5%AE%9A%E5%86%85%E3%81%AE%E3%81%93%E3%81%A8%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%EF%BC%9F%E7%A7%81%E3%81%AEMCU%E3%81%AE%E3%82%B3%E3%82%A2%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AF148MHz%E3%81%A7%E3%81%99%E3%80%82CASPER%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%81%AE%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%A6%E5%87%A6%E7%90%86%E9%80%9F%E5%BA%A6%E3%82%92%E5%90%91%E4%B8%8A%E3%81%95%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%20%20%20%2F*%20Base%20Generator%20Point%20G(x%2C%20y)%20for%20secp256r1%20in%2032-bit%20Little-Endian%20word%20arrays%20*%2F%0A%20%20%20%20static%20const%20uint32_t%20G_x_le%5B8%5D%20%3D%20%7B%0A%20%20%20%20%20%20%20%200xD898C296%2C%200xF4A13945%2C%200x2DEB33A0%2C%200x77037D81%2C%0A%20%20%20%20%20%20%20%200x63A440F2%2C%200xF8BCE6E5%2C%200xE12C4247%2C%200x6B17D1F2%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20static%20const%20uint32_t%20G_y_le%5B8%5D%20%3D%20%7B%0A%20%20%20%20%20%20%20%200x37BF51F5%2C%200xCBB64068%2C%200x6B315ECE%2C%200x2BCE3357%2C%0A%20%20%20%20%20%20%20%200x7C0F9E16%2C%200x8EE7EB4A%2C%200xFE1A7F9B%2C%200x4FE342E2%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20uint32_t%20scalar_le%5B8%5D%3B%0A%20%20%20%20uint32_t%20Q_x_le%5B8%5D%3B%0A%20%20%20%20uint32_t%20Q_y_le%5B8%5D%3B%0A%0A%20%20%20%20%2F*%20Copy%20Big-Endian%20private%20scalar%20and%20convert%20to%20Little-Endian%20for%20CASPER%20*%2F%0A%20%20%20%20memcpy(scalar_le%2C%20key_buffer%2C%2032)%3B%0A%20%20%20%20swap_endian_32((uint8_t%20*)scalar_le)%3B%0A%0A%0A%0A%20%20%20%20%2F*%201.%20Initialize%20CASPER%20coprocessor%20*%2F%0A%20%20%20%20CASPER_Init(CASPER)%3B%0A%20%20%20%20CASPER_ecc_init(kCASPER_ECC_P256)%3B%0A%0A%20%20%20%20HW_DB_PinSet()%3B%0A%0A%20%20%20%20%2F*%202.%20Compute%20Q%20%3D%20d%20*%20G%20using%20CASPER%20hardware%20*%2F%0A%20%20%20%20CASPER_ECC_SECP256R1_Mul(%0A%20%20%20%20%20%20%20%20CASPER%2C%0A%20%20%20%20%20%20%20%20Q_x_le%2C%20Q_y_le%2C%0A%20%20%20%20%20%20%20%20G_x_le%2C%20G_y_le%2C%0A%20%20%20%20%20%20%20%20scalar_le%0A%20%20%20%20)%3B%0A%20%20%20%20HW_DB_PinClear()%3B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2413891%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%20LPC55S28%20CASPER%20ECC%20Multiply%20Execution%20Time%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2413891%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F43524%22%20target%3D%22_blank%22%3E%40guitardenver%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E5%90%8C%E3%81%98%E6%93%8D%E4%BD%9C%E3%82%92%E3%80%81150MHz%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%99%E3%82%8BLPC55S28%20EVK%E4%B8%8A%E3%81%A7MCUXpresso%20SDK%20CASPER%E4%BE%8B%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6%E6%B8%AC%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82CASPER_ECC_SECP256R1_Mul()%20%E3%82%92%201%20%E5%9B%9E%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E3%81%AE%E3%81%AB%E7%B4%84%202410%20%E4%B8%87%20CPU%20%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A7%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E7%B4%84%20160%20%E3%83%9F%E3%83%AA%E7%A7%92%E3%81%AE%E5%AE%9F%E8%A1%8C%E6%99%82%E9%96%93%E3%81%AB%E7%9B%B8%E5%BD%93%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%81%93%E3%81%AE%E7%B5%90%E6%9E%9C%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%8F%E3%81%A8%E3%80%81%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%E6%B8%AC%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F337ms%E3%81%AF%E3%80%81%E7%89%B9%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E5%A4%89%E6%8F%9B%E3%80%81%E5%88%9D%E6%9C%9F%E5%8C%96%E3%80%81%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%83%93%E3%83%AB%E3%83%89%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%98%E3%83%83%E3%83%89%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8C%E3%81%B0%E3%80%81%E4%B8%8D%E5%90%88%E7%90%86%E3%81%A8%E3%81%AF%E6%80%9D%E3%81%88%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%0A%3CP%3ECASPER%E3%81%AF%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%8C%E8%A8%AD%E5%AE%9A%E5%8F%AF%E8%83%BD%E3%81%AA%E5%88%A5%E3%81%AE%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E5%AE%9F%E8%A1%8C%E6%99%82%E9%96%93%E3%81%AF%E4%B8%BB%E3%81%ABCASPAR%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%A9%E3%83%AC%E3%83%BC%E3%82%BF%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9FECC%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%AE%9F%E8%A3%85%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E6%B1%BA%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E3%83%8F%E3%83%AA%E3%83%BC%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2414511%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20LPC55S28%20CASPER%20ECC%20Multiply%20Execution%20Time%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2414511%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%20class%3D%22%22%3E%3CDIV%20class%3D%22%22%3E%3CDIV%20class%3D%22%22%3E%3CDIV%20class%3D%22%22%3E%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E8%A8%88%E6%B8%AC%E6%99%82%E9%96%93%E5%86%85%E3%81%AB%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E6%83%B3%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B%E3%80%81%E3%81%9D%E3%82%8C%E3%81%A8%E3%82%82%E4%BD%95%E3%81%8B%E8%A8%AD%E5%AE%9A%E3%81%8C%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3CSTRONG%3E%26nbsp%3B%3C%2FSTRONG%3E%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E3%80%81%E3%81%9D%E3%81%93%EF%BC%81%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%A9%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%82%88%E3%82%8BECC%E5%8B%95%E4%BD%9C%E3%81%A7%E3%81%AE337ms%E3%81%AF%E3%80%81P256%E3%81%A7%E3%82%82148MHz%E3%81%AEMCU%E3%81%A8%E3%81%97%E3%81%A6%E3%81%AF%E3%82%84%E3%82%84%E9%AB%98%E3%81%8F%E6%84%9F%E3%81%98%E3%81%BE%E3%81%99%E3%80%82%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%8F%E3%82%8C%E3%81%A6%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%80%82%E6%99%82%E3%81%AB%E3%81%AF%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%98%E3%83%83%E3%83%89%E3%82%84%E6%99%82%E8%A8%88%E3%81%AE%E5%95%8F%E9%A1%8C%E3%81%8C%E5%BF%8D%E3%81%B3%E8%BE%BC%E3%82%80%E3%81%93%E3%81%A8%E3%82%82%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82CASPER%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%81%AE%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%84%E3%80%81%E3%81%9D%E3%81%AE%E6%80%A7%E8%83%BD%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E5%88%A9%E7%94%A8%E5%8F%AF%E8%83%BD%E3%81%AA%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AF%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8B%3F%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2414646%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20LPC55S28%20CASPER%20ECC%20Multiply%20Execution%20Time%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2414646%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%84%E3%81%8F%E3%81%A4%E3%81%8B%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E3%81%93%E3%81%AEMCU%E3%81%A7CASPER%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%81%AE%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E8%A8%AD%E5%AE%9A%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AF%E8%A6%8B%E5%BD%93%E3%81%9F%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E1.%20%E9%80%9F%E5%BA%A6%E5%90%91%E4%B8%8A%E3%81%AE%E3%81%9F%E3%82%81%E3%81%ABO2%E6%9C%80%E9%81%A9%E5%8C%96%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%3C%2FP%3E%3CP%3E2.%3CSPAN%3E%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%A9%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E3%83%97%E3%83%AA%E3%83%95%E3%82%A7%E3%83%83%E3%83%81%E3%81%A8%E5%BE%85%E6%A9%9F%E7%8A%B6%E6%85%8B%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3ESYSCON%3C%2FSPAN%3E%20%3CSPAN%3E-%26gt%3B%3C%2FSPAN%3E%20%3CSPAN%3EFMCCR%3C%2FSPAN%3E%20%3CSPAN%3E%7C%3D%3C%2FSPAN%3E%20%3CSPAN%3ESYSCON_FMCCR_PREFEN_MASK%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E3%81%9D%E3%81%AE%E5%BE%8C%E3%80%81160%E3%83%9F%E3%83%AA%E7%A7%92%E3%81%BE%E3%81%A7%E7%9F%AD%E7%B8%AE%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FSPAN%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E