ctr_eFuse/trunk/document
n2460 b9c1620726 sample:パッケージに含まれる文書の移動。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_eFuse@215 ff987cc8-cf2f-4642-8568-d52cce064691
2013-06-06 06:31:18 +00:00
..
function_spec.pdf document:吉岡さん謹製の関数仕様文書を追加。 2013-06-05 07:51:25 +00:00
function_spec.xls document:吉岡さん謹製の関数仕様文書を追加。 2013-06-05 07:51:25 +00:00
LICENSE_en.txt sample:パッケージに含まれる文書の移動。 2013-06-06 06:31:18 +00:00
LICENSE_jp.txt sample:パッケージに含まれる文書の移動。 2013-06-06 06:31:18 +00:00
readme_openssl.txt sample:パッケージに含まれる文書の移動。 2013-06-06 06:31:18 +00:00
readme.txt sample:パッケージに含まれる文書の移動。 2013-06-06 06:31:18 +00:00

CTR - ID生成関数について : 2013/06/05

-----------------------------
ファイル構成
    readme.txt
        このファイルです。

    readme_openssl.txt
    LICENSE_en.txt
    LICENSE_jp.txt
        ID 生成関数ライブラリは OpenSSL の機能を一部利用しているため、これらのライセンスファイルを含んでいます。

    libgenid.a
        ID 生成関数のライブラリファイルです。

    cr_generate_id.h
        上記ライブラリのヘッダファイルです。

    function_spec.pdf
        ID 生成関数の仕様について記述しています。

    sample.c
    util.c
    util.h
    Makefile
        ID 生成関数を使った動作サンプルです。

----------------------------
関数仕様

function_spec.pdf をご参照下さい。

cr_generate_id 関数の実行速度は
Intel Pentium4 3.2GHz CPU にて 約 85 msec です。

----------------------------
サンプル

展開したディレクトリの中で make を実行すると gen_id プログラムが作成されます。
このプログラムは eFuseID を生成するサンプルプログラムです。

起動時にはボンディングオプションの指定が必要です。

例
$ ./gen_id 00

プログラム中でキーボードからの入力受付を行います。
以下のキーに対応しています。

p : デバイス ID とそれから生成される eFuseID データ、そして生成に掛かった平均時間を表示します。
s : デバイス ID[0] をファイル名として実行ディレクトリにバイナリとして保存します。
q : プログラムを終了します。

以下、sample.c の一部を抜粋します。
util.c はユーティリティ関数を集めたもので ID 生成関数ライブラリで必要なものではありません。

int main(int argc, char* argv[])
{
    --- 省略 ---

    // cr_generate_id を使用する前に呼び出す
    ret_code = cr_generate_id_initialize( id_buf );
    if ( ret_code != CR_GENID_SUCCESS )
    {
        printf( "error : cr_generate_id_initialize\n" );
        return -1;
    }
    printf("done.\n");

    --- 省略 ---

    for ( i = 1; i < 0xffffffff; i++ )
    {

        --- 省略 ---

        // ID 生成
        time_start = gettimeofday_sec();
        ret_code = cr_generate_id( device_id, id_buf, bonding_option );
        if( ret_code != CR_GENID_SUCCESS )
        {
            fprintf(stderr, "cr_generate_id failed c=0x%08x\n", counter0);
        }
        else
        {
            time_end = gettimeofday_sec();
            time_total += (long double)(time_end - time_start);
            time_count++;
        }

        --- 省略 ---
    }

end:
    --- 省略 ---

    // cr_generate_id を使用した後に呼び出す
	if ( cr_generate_id_finalize( id_buf ) != CR_GENID_SUCCESS )
	{
		printf( "error : cr_generate_id_finalize\n" );
		return 0; // error
	}

    printf( "end of main.\n" );

    return 0;
}