こちらからユーザーズマニュアルがご覧頂けます。

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 [email protected](代表)
Rev1.0
- 24 -
2010/01/26