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; }