uTNET ユーザーズ・マニュアル TCP/IP プロトコルスタック ユーザーズマニュアル Rev1.0 株式会社 エル・アンド・エフ Rev1.0 -1- 2010/01/26 uTNET ユーザーズ・マニュアル 改訂履歴 日 付 訂正者 2010/01/26 ページ 橘 内 容 Rev1.0 発行 uTNET の機能 SOCKET 管理 TCP パケット処理 UDP パケット処理 ICMP パケット処理 IP パケット処理 ARP パケット処理 ETHERNET-LAN デバイスドライバ ARP はアドレス応答のみ搭載。 ICMP は PING のみ搭載。 uTNET は uTLIB の上で動作します。 uTLIB については別紙【uTLIB ユーザーズマニュアル】を参照して下さい。 Rev1.0 -2- 2010/01/26 uTNET ユーザーズ・マニュアル 【 目 次 】 1. 2. 3. はじめに ......................................................... パッケージ内ソースコード一覧........................................ ヘッダファイル(uTNET.h)の修正 ...................................... 3-1) LAN ドライバの設定.............................................. 3-2) 最大パケット内データサイズの設定 ................................ 4. 割り込み処理の実装 ............................................... 4 4 5 5 5 6 4-1) 割り込み初期化手順 ............................................ 6 5. ネットワーク開始イベント ............................................ 7 6. ソケットの使用法................................................... 8 6-1) ソケットの機能一覧 ............................................. 8 6-2) イベントの実装 ................................................. 9 7. イベントの詳細 ................................................... 10 7-1) 接続要求イベント .............................................. 10 7-2) 接続完了イベント .............................................. 11 7-3) 受信完了イベント .............................................. 12 7-4) 送信完了イベント .............................................. 13 7-5) 送信中イベント ................................................ 14 7-6) 閉鎖完了イベント .............................................. 15 7-7) エラー発生イベント ............................................. 16 8. ソケット関数の詳細................................................ 17 8-1) ソケットの作成 ................................................ 18 8-2) ソケットから送信 ............................................... 20 8-3) ソケットの閉鎖 ................................................ 21 8-4) ソケットの削除 ................................................ 21 9. その他の関数 .................................................... 22 10. コンソールコマンド............................................... 22 11. 付属 .......................................................... 23 11-1) LAN ドライバ.................................................. 23 11-2) サンプル .................................................... 23 11-3) uTLIB ....................................................... 23 12. uTNET のチューニング ............................................ 23 Rev1.0 -3- 2010/01/26 uTNET ユーザーズ・マニュアル 1. はじめに このたびは uTNET をお買い上げいただき誠にありがとうございます。 本製品を正しくご使用いただくために、本マニュアル及びソースコード内のコメント を熟読いただけますようお願いいたします。 2. パッケージ内ソースコード一覧 フォルダ L_AND_F\ ファイル uTNET\ 概要 プロトコルスタックフォルダ※1 uTNET.c プロトコルスタック本体 uTNET.h プロトコルスタックヘッダ LFA1\ デバイスドライバフォルダ※2 TLFA1.c LF-A1 ドライバ(AX88796) TLFA1.h LF-A1 ドライバヘッダ uTLIB\ プロトコルスタック付属ライブラリ※3 uTAlloc.c メモリアロケータ uTConsole.c コンソール uTKern.c カーネル uTTimer.c タイマー uTLIB.h ライブラリヘッダ Sample\ サンプルフォルダ※4 tcp_host.c ソケット通信サンプル(TCP/IP) tcp_client.c ソケット通信サンプル(TCP/IP) main.c LF64 用サンプルメイン VB6\ VB6 による TCP/IP 通信サンプル LF64\ LF64 用サンプル ※1 ヘッダファイル内の修正部は環境に合わせて変更します。 ※2 LF-A1 及び LF64-CPU 基板でご利用いただけます。 ※3 使用法は「uTLIB ユーザーズマニュアル」をご覧下さい。 ※4 自由に改変してご利用いただけます。 ヘッダファイルの組み込み用に各サブフォルダをヘッダ検索パスに登録してご利 用ください。(ファイルを移動する場合はソースコード中#include 部の修正が必 要になる場合がございますので、環境毎にご対応下さい。) Rev1.0 -4- 2010/01/26 uTNET ユーザーズ・マニュアル 3. ヘッダファイル(uTNET.h)の修正 uTNET を正しく実装するためには、ヘッダファイルを環境に合わせて修正する必要 がございます。また、割り込み初期化及び処理関数はユーザーが別途独自に実 装する必要がございます。 3-1) LAN ドライバの設定 uTNET は最大8個の LAN ドライバを制御することができます。 各ドライバは個別に初期化作業が必要となり、デバイスが実装されている物 理アドレスや使用する割り込み信号線のレベルなどを設定する必要がござい ます。 これらはヘッダファイルの「ネットワークドライバ定義」で定義しています。 ドライバの初期化関数を extern で参照可能にし、LAN_DEVICE_INIT_x に初 期化関数名を割り当てます。デフォルトは全て TLFA1_Init です。 次いでデバイスの物理アドレスを DEV_ETHER_TOP_x に設定します。 LF64 内蔵 LAN の場合は 0x14010000L です。 LF64 の PC104BUS に LF-A1 を搭載する場合は 0x1400XXXXL です。 次いで割り込み信号のレベルを DEV_ETHER_INF_x に定義します。 割り込み信号はデバイスの種類によっては変更できませんが、LF-A1 のよう に PC104BUS 接続で利用する場合は BUS の規格に合わせるためのレベル反 転が必要になります。(プッシュプルでハイアクティブの IRQ にします) 通常、マイコンに直結した割り込みでは 0 を指定し、PC104BUS 接続なら 1 とし ます。 最後に MAX_ETHERNET_DEVICES へ接続する LAN デバイスの数を設定します。 デフォルトは 1 個です。 デバイスの個数が 1 個の場合、設定値は末尾が_0 のものが使用されます。 接続予定の無い#define は削除しても構いません。 3-2) 最大パケット内データサイズの設定 送信時のパケット内データサイズを PACKET_MAX_BYTE で設定します。 デフォルトは 1024 で、この値は接続するネットワークに依存します。 TCP と UDP のデータサイズを定義するもので、パケット総バイト数ではありま せん。受信は ETHERNET パケットでデフォルト 1518 バイトまで受け取ります。 Rev1.0 -5- 2010/01/26 uTNET ユーザーズ・マニュアル 4. 割り込み処理の実装 uTNET はデバイスの割り込み受付関数を実装していません。 プラットフォーム毎に実装が異なるため、ハードウェア部はユーザー依存です。 まず、デバイス初期化処理を呼び出しますが、そこに引数でハードウェア初期化 関数と接続開始処理関数を渡します。 デバイスの初期化が正常終了すると、ハードウェア初期化関数が呼ばれます。 ハードウェア初期化関数は割り込み端子や関連するレジスタなどハードウェアの 初期化と利用開始を実装します。 また、この時引数で渡されたポインタはデバイス管理構造体へのポインタです。 引数は割り込み受付部から uTNET 割り込み処理呼び出し時に使用します。 割り込みを使用する場合、この引数は必ず保持して下さい。 尚、割り込みを使用しない場合は初期化関数名の引数に NULL を指定します。 NULL が指定された場合、uTNET はそのデバイスをポーリングで運転します。 4-1) 割り込み初期化手順 デバイスの初期化呼び出しでハードウェア初期化関数名を指定 TNet_init(0,"192.168.1.1","255.255.255.0", "00:09:B2:02:00:01",my_irq_init, my_tcp_open); 初期化に成功すると my_irq_init が呼び出されます LOCAL_CONF *snet_copy; void my_irq_init(LOCAL_CONF *snet) { snet_copy = snet; //引数をコピー ・・・ハードウェアの設定 ・・・割り込み許可 } 割り込み受付関数の例 interrupt void my_irq(void) { ((ENET_IRQ_PROC)snet_copy->proc->irq)(snet_copy); } Rev1.0 -6- 2010/01/26 uTNET ユーザーズ・マニュアル 5. ネットワーク開始イベント デバイスの初期化が終わり、割り込み設定も完了すると uTNET は物理層への接 続を確認しユーザーに通知します。リンク状態になるとデバイス初期化呼び出し で渡した接続開始処理関数が呼ばれます。 ユーザーは用意した接続開始処理関数内でリスニングポートの登録などの準備 作業を行えます。 例)TCP ポート 80 番を開き、接続を待つ場合 void my_tcp_open(LOCAL_CONF *snet) { TNet_sock_open(snet, SOCKET_TCP_MODE, 80, NULL, &my_sock, &my_event); } ポートを開くとき、引数でソケット変数とイベント関数リストを渡します。 ソケット変数(例では my_sock)は NULL でも構いませんが、リスニングポートの場 合、親となるソケットだけはローカル変数として用意します。 例)ソケット変数の定義 static SOCK_PK my_sock; イベント関数リスト(例では my_event)は必ず指定します。 このリストは PROC_LIST として定義されており、ソケット処理からイベント呼び出し されるユーザー関数を記載します。 例)リスニングポート用イベント関数リストの作成 EVENT_LIST my_event = { my_request, //接続要求イベント NULL, //接続完了イベント my_recv, //受信イベント(必須) NULL, //送信完了イベント NULL, //送信中イベント NULL, //切断要求イベント NULL //エラー発生イベント }; この例では接続要求と受信イベントだけを準備しています。 受信イベントは必須です。 他は必要な場合に定義・実装してください。 (1つのリスニングポートを複数のソケットで運用する場合は接続要求イベントの 処理が必要になります。) Rev1.0 -7- 2010/01/26 uTNET ユーザーズ・マニュアル 6. ソケットの使用法 uTNET で TCP/IP 通信を行う場合は搭載されたソケットを利用する方法が最も簡単 に実現できます。 6-1) ソケットの機能一覧 パラメータ 参照 概要 環境変数 LOCAL_CONF デバイス管理構造体へのポインタ ソケット変数 SOCK_PK ソケットパラメータ変数 イベントリスト EVENT_LIST ソケット処理からの呼び出しリスト イベント 参照 概要 接続要求 EVENT_LIST *request リスニングポートに接続要求発生 接続完了 EVENT_LIST *connect 通信可能状態になった 受信完了 EVENT_LIST *recv データを受信した 送信完了 EVENT_LIST *send データの送信が終わった 送信中 EVENT_LIST *progress 送信中のバイト位置を通知 閉鎖完了 EVENT_LIST *close ソケットが閉じられた エラー発生 EVENT_LIST *error 通信エラーが発生した 関数 参照 概要 ソケット作成 TNet_sock_open ソケットでポートを開きます ソケット送信 TNet_sock_send ソケットからデータを送信します ソケット閉鎖 TNet_sock_close ソケットを閉じます ソケット削除 TNet_sock_delete ソケットを削除します 普通の用法では、イベント処理内で各関数を呼び出すだけで通信できます。 多くの場合、通信中にパラメータを操作する必要はありません。 Rev1.0 -8- 2010/01/26 uTNET ユーザーズ・マニュアル 6-2) イベントの実装 ソケットからの各種通知を受け取る関数は、ソケットの作成時にイベントリスト として渡します。イベントリストは以下のように定義されています。 typedef struct { void *request; //接続要求 void *connect; //接続完了 void *recv; //受信完了 void *send; //送信完了 void *progress; //送信中 void *close; //閉鎖完了 void *error; //エラー発生 } EVENT_LIST; uTNET はこのリストに従い、イベント発生時の呼び出しを行います。 各イベント呼び出しは複数の引数を伴います。 イベントを受け取る関数の型は固定で、下に雛形を示します。 void request(LOCAL_CONF *net, SOCK_PK **sock) void connect(LOCAL_CONF *net, SOCK_PK *sock) void recv(LOCAL_CONF *net, SOCK_PK *sock, unsigned short size, unsigned char *bin) void send(LOCAL_CONF *net, SOCK_PK *sock) void progress(LOCAL_CONF *net, SOCK_PK *sock, long r_size, long l_size) void close(LOCAL_CONF *net, SOCK_PK *sock) void error(LOCAL_CONF *net, SOCK_PK *sock, int err_code, char *err_message) 関数名はソケット毎に変更し、引数名は自由に変更してください。 (異なるソケットで同じ処理を行う場合、関数は同じものを使用できます) Rev1.0 -9- 2010/01/26 uTNET ユーザーズ・マニュアル 7. イベントの詳細 ソケットによる送受信では、イベント呼び出しに連動した処理が要求されます。 ここではイベントの意味とイベントを受け付けるユーザー関数の実装法について 詳しく説明します。 7-1) 接続要求イベント リスニングポートへの接続要求があった場合に呼び出されます。 イベントリストの該当位置に NULL が指定されている場合はリスニング用に作 成したソケットが使用されます。相手のリスニングポートに接続要求を行うク ライアント動作では当イベントは発生しません。 【関数型】 void proc(LOCAL_CONF *net, SOCK_PK **sock) 【引数】 LOCAL_CONF SOCK_PK *net **sock デバイス情報へのポインタ ソケット情報ポインタへのポインタ 【実装例】 1つのリスニングポートで複数の接続を行う場合は接続要求毎に新しいソケ ットを作成する必要があり、その手順を以下に示します。 void request(LOCAL_CONF *net, SOCK_PK **sock) { *sock = TNet_sock_open(net, SOCKET_TCP_MODE, PORT, NULL, NULL, &event_list); } ※PORT にはリスニングポート番号を指定します。 ※event_list にはイベントリストを指定します。 接続先 IP アドレスは自動的に代入されます。 ソケットは動的に作成するため NULL 指定とします。 Rev1.0 - 10 - 2010/01/26 uTNET ユーザーズ・マニュアル 7-2) 接続完了イベント ソケットが通信可能になると呼び出されます。 クライアント動作では、ここでデータを送信します。 【関数型】 void proc(LOCAL_CONF *net, SOCK_PK *sock) 【引数】 LOCAL_CONF SOCK_PK *net *sock デバイス情報へのポインタ ソケット情報へのポインタ 【実装例】 接続完了と同時にメッセージを送信します。 void connect(LOCAL_CONF *net, SOCK_PK *sock) { TNet_sock_send(sizeof(message), message, sock); } Rev1.0 - 11 - 2010/01/26 uTNET ユーザーズ・マニュアル 7-3) 受信完了イベント ソケットにデータが届いた場合に呼び出されます。 受信イベントは必ず実装しなければなりません。 パケット毎に呼び出されますので、1つのパケットに収まらないデータの場合 はイベント関数内で結合する必要があります。 【関数型】 void proc(LOCAL_CONF *net, SOCK_PK *sock, unsigned short size, void *data) 【引数】 LOCAL_CONF *net SOCK_PK *sock unsigned short size void *data デバイス情報へのポインタ ソケット情報へのポインタ データのバイト数 データへのポインタ(型は自由) 【実装例】 データを文字列として受け取り、対応するコマンドはエコーバック送信し未対 応のコマンドはコンソールに渡します。 void recv(LOCAL_CONF *net, SOCK_PK *sock, unsigned short size, char *cmd) { cmd[size] = 0; if(strcmp(cmd, “COMMAND1”) == 0) { TNet_sock_send(strlen(cmd), cmd, sock); } else uTConsole_Direct(cmd); } コンソールの使用法は uTLIB ユーザーズマニュアルを参照してください。 受信データの型定義は自由に定義できます。 Rev1.0 - 12 - 2010/01/26 uTNET ユーザーズ・マニュアル 7-4) 送信完了イベント データの送信が完了したら呼ばれます。 送信を継続する場合はここから送信できます。 送るデータが無くなった場合はソケットを閉じてください。 【関数型】 void proc(LOCAL_CONF *net, SOCK_PK *sock) 【引数】 LOCAL_CONF SOCK_PK *net *sock デバイス情報へのポインタ ソケット情報へのポインタ 【実装例】 送信するデータが無いのでソケットを閉じます。 void send(LOCAL_CONF *net, SOCK_PK *sock) { TNet_sock_close(sock); } Rev1.0 - 13 - 2010/01/26 uTNET ユーザーズ・マニュアル 7-5) 送信中イベント 送信データがまだ残っていてパケットが送出された時に呼ばれます。 【関数型】 void proc(LOCAL_CONF *net, SOCK_PK *sock, long fin, long rem) 【引数】 LOCAL_CONF SOCK_PK long long *net *sock fin rem デバイス情報へのポインタ ソケット情報へのポインタ 送信済みバイト数 送信待ちバイト数 【実装例】 コンソールに送信状況を出力します。 void progress(LOCAL_CONF *net, SOCK_PK *sock, long finsize, long remsize) { sprintf(uTConsole_Comment(), "送信中 済み %ld / 待ち %ld\r\n", finsize, remsize); } Rev1.0 - 14 - 2010/01/26 uTNET ユーザーズ・マニュアル 7-6) 閉鎖完了イベント ソケットが正しい手順で閉じられた時に呼び出されます。 特別な理由がない限り、閉じられたソケットは削除します。 もし親リスニングポートを閉じたり削除してしまうと次回の接続要求に応答で きなくなりますので、その場合は再度オープンする処理が必要となります。 【関数型】 void proc(LOCAL_CONF *net, SOCK_PK *sock) 【引数】 LOCAL_CONF SOCK_PK *net *sock デバイス情報へのポインタ ソケット情報へのポインタ 【実装例】 一旦閉じられたソケットは再度オープンしない限り通信できないソケットとなり ますので、このイベントで削除します。 void close(LOCAL_CONF *net, SOCK_PK *sock) { TNet_sock_delete(sock); } Rev1.0 - 15 - 2010/01/26 uTNET ユーザーズ・マニュアル 7-7) エラー発生イベント ソケットが何らかの理由で強制的に閉鎖された時に呼び出されます。 閉鎖されたソケットはエラーを含んでいるため、関数内で削除します。 【関数型】 void proc(LOCAL_CONF *net, SOCK_PK *sock, int err_code, char *err_message) 【引数】 LOCAL_CONF SOCK_PK int char *net *sock デバイス情報へのポインタ ソケット情報へのポインタ err_code エラー番号 *err_message エラーメッセージ文字列へのポインタ 【実装例】 エラーコードとエラーメッセージをコンソールに出力します。 void error(LOCAL_CONF *net, SOCK_PK *sock, int err_code, char *err_message) { sprintf(uTConsole_Comment(), "Error Code[%d]:%s\r\n", err_code, err_message ); TNet_sock_delete(sock); } Rev1.0 - 16 - 2010/01/26 uTNET ユーザーズ・マニュアル 8. ソケット関数の詳細 ソケットを経由した通信はソケット関数を呼び出すことで実現します。 以下に関数の利用法を示します。 関数の戻りがエラー値を示す場合、次の値となります。 Rev1.0 Err_NONE Err_INIT エラー無し 初期化エラー Err_TIMEOUT Err_SEND Err_RECV Err_DATA Err_OTHER Err_NOCON タイムアウトエラー 送信エラー 受信エラー データエラー その他エラー 未接続エラー - 17 - 2010/01/26 uTNET ユーザーズ・マニュアル 8-1) ソケットの作成 通信を開始するにはソケットを作成します。作成するソケットの動作によって 作り方が異なります。ソケットは TCP と UDP 共通の構造となっています。 UDP の場合はオープン直後から通信可能になりますが、TCP では接続手順が 終わってから通信できるようになります。 【関数型】 SOCK_PK *TNet_sock_open(LOCAL_CONF *net, int mode, unsigned short port, unsigned char *ipaddress, SOCK_PK *sock, EVENT_LIST *event) 【引数】 LOCAL_CONF *net int mode unsigned short port unsigned char *ipaddress SOCK_PK *sock EVENT_LIST *event デバイス情報へのポインタ ソケットのプロトコルモード選択 ポート番号 接続先 IP アドレスへのポインタ ソケット情報へのポインタ イベントリスト mode には定数 SOCKET_TCP_MODE 又は SOCKET_UDP_MODE を指定します。 ipaddress に NULL を指定するとサーバーソケットとして、NULL 以外の値を指 定するとクライアントソケットとして作成します。 IP アドレスは 4 バイト変数へのポインタとして与えます。 例)アドレス 192.168.1.5 は unsigned char ip[4]={192,168,1,5} クライアント動作では port に接続先のポート番号を指定し、自分のポート番 号は自動的に割り当てられます。(40960∼45055 の範囲) サーバー動作の場合、port で指定したポート番号で接続を待ちます。 【戻り】 SOCK_PK Rev1.0 * 作成したソケット情報へのポインタ 作成に失敗すると NULL が戻ります。 - 18 - 2010/01/26 uTNET ユーザーズ・マニュアル 【実装例】 TCP サーバー(リスニングポート)ソケットの作成 TNet_sock_open(net, SOCKET_TCP_MODE, port, NULL, &sock, &event); 与えるソケットは次のように静的変数で確保しておきます。 SOCK_PK sock; port に指定したポート番号を開いて接続を待ちます。 戻り値は与えたソケットへのポインタか、失敗した場合は NULL となります。 【実装例】 TCP クライアントソケットの作成 TNet_sock_open(net, SOCKET_TCP_MODE, port, ip, NULL, &event); ip に指定した IP アドレスの port に指定したポート番号へ接続します。 戻り値はソケットへのポインタか、失敗した場合は NULL となります。 Rev1.0 - 19 - 2010/01/26 uTNET ユーザーズ・マニュアル 8-2) ソケットから送信 ソケットは与えられたデータのコピーを作成することはしないため送信が完了 するまでデータ維持を厳守してください。 ソケット送信関数はデータ送信中に呼び出されると与えられたデータを数珠 繋ぎにし、全てのデータが送り終わると送信完了イベントが発生します。 メモリが少ない場合は送信開始と送信完了を繰り返すことで送信します。 【関数型】 int TNet_sock_send(long size, void *data, SOCK_PK *sock) 【引数】 long void SOCK_PK 【戻り】 int size *data *sock データのバイト数 データへのポインタ ソケット情報へのポインタ エラー情報 【実装例】 固定のメッセージ文字列を送信する例。 char message[] = "Hello World!"; TNet_sock_send(sizeof(message), message, sock); Rev1.0 - 20 - 2010/01/26 uTNET ユーザーズ・マニュアル 8-3) ソケットの閉鎖 ソケットでの通信が終了した場合はソケットを閉じます。 通常ソケットの閉鎖は送信完了イベントから呼び出します。 【関数型】 void TNet_sock_close(SOCK_PK *sock) 【引数】 SOCK_PK *sock ソケット情報へのポインタ 【戻り】 無し 【実装例】 TNet_sock_close(SOCK_PK *sock); 8-4) ソケットの削除 閉鎖したソケットは閉鎖イベントで削除します。 TCP では閉鎖するときに決められた手順に従って行う必要がありますので、 特別な理由がない限り閉鎖前に削除することはできません。 【関数型】 void TNet_sock_delete(SOCK_PK *sock) 【引数】 SOCK_PK *sock ソケット情報へのポインタ 【戻り】 無し 【実装例】 TNet_sock_delete(SOCK_PK *sock); Rev1.0 - 21 - 2010/01/26 uTNET ユーザーズ・マニュアル 9. その他の関数 uTNET には複数の関数が存在しますが、ユーザーが直接操作する必要がある関 数はごくわずかです。 関数 用途 TNet_arp_request(*,*,*) ARP を実行します。 TNet_ping_request(*,*,*) PING を実行します。 TNet_sock_keep(*) TCP の KeepAlive パケットを生成します。 これら以外の関数を直接呼び出すと問題が発生する可能性があります。 10. コンソールコマンド uTNET は uTConsole にコマンドを1つ追加します。 【コンソールコマンド】 NET 【コマンドライン引数】 /? コマンドヘルプ /S<offset address>,<socket id> ソケット状態出力 【/S】 スイッチの動作 <offset address>には LAN デバイスの物理アドレスを指定します。 <socket id>にはソケットの論理番号を指定します。 ソケットの番号は作成された順に連続的に割り当てられます。 このコマンドはプログラム内部から発行されることを前提に作られていますので、 CUI から手打ちで実行する場合、ソケット番号を 0 から順に入力します。 Rev1.0 - 22 - 2010/01/26 uTNET ユーザーズ・マニュアル 11. 付属 11-1) LAN ドライバ uTNET に標準付属する LAN ドライバは LF-A1 及び LF64 用です。 他の LAN ドライバを作成する場合、参考にしてください。 TLFA1.c はプラットフォームに合わせて修正する必要があります。 【修正箇所】 エンディアンの設定を A1_LITTLE_ENDIAN の値で設定します。 バイトの上下入れ替えコードを Swap(w)に設定します。 デフォルトは LF64 用となっています。 11-2) サンプル TCP/IP によるデータ通信の雛形として利用できます。 VB6 のサンプルも付属しています。 LF64 で動作する初期化ソースサンプルは初期化手順の参考にしてください。 11-3) uTLIB uTNET は uTLIB の上で動作します。 uTLIB は別紙 uTLIB ユーザーズマニュアルを参照してください。 12. uTNET のチューニング uTNET が使用する動的メモリは uTmalloc によって取得した領域に限られます。 もし、この領域に空きが無くなってしまうと処理速度が低下したり停止します。 実動作中に速度が落ちた場合は利用できるメモリ量を増やすと改善できます。 Rev1.0 - 23 - 2010/01/26 uTNET ユーザーズ・マニュアル 株式会社 エル・アンド・エフ Logic And Firm inc. 〒175-0083 東京都板橋区徳丸 4-2-9 TEL 03-5398-1116 / FAX 03-5398-1181 E-mail l-and-f@l-and-f.co.jp(代表) Rev1.0 - 24 - 2010/01/26
© Copyright 2024 Paperzz