【TCP/IPライブラリとは】
本TCP/IPライブラリは、PIC18FシリーズのPICと、イーサネットコントローラとして
RTL8019ASを接続した構成をベースにしています。
割込みは使用せずバッファにデータがあるかをポーリングしながら動作しています。
従って関係する処理はできるだけ短時間に完了して再びバッファの受信チェック
に戻る必要があります。
本ライブラリの使用例として、PIC用リアルタイムOSであるPICROSと組合わせて
いますが、このようなOSを使わずに、単独でも使用することが出来ます。
本ライブラリは、すべてCCS社のC言語で作成されていて、しかも専用の組込み
関数を多用していますので、CCS社Cコンパイラでしかコンパイルできません。
また、メモリ容量を必要とするため、PIC18シリーズのハイエンドファミリで動作する
ようになっています。
参考までに、秋月電子通商で販売しているPICNIC Ver2 のPIC16F877を
PIC18F452に差し替えればそのまま動作するようになっています。
【TCP/IPライブラリ全体構成】
本TCP/IPライブラリの全体構成は下図のようになっています。図のように
プロトコル毎に独立のモジュールとなっており、全体を制御するメインモジュール
のもとで動作するようになっています。
この各モジュールの概略機能は下記となっています。
(1) Stackメインモジュール
スタックの初期化関数と、プロトコル解析関数で構成されていて、データ
受信を検知したとき最初に実行され、プロトコルの種別に従って関連する
処理関数を呼び出します。ここで区別されるプロトコルはIPとARPです。
(2) MACハンドラモジュール
LANコントローラLSIの直接の制御を行って、LAN通信によるデータの
送受信を実行します。送受信のために必要な多くの関数群から構成
されています。
(3) IPプロトコルモジュールとICMPプロトコルモジュール
IPプロトコルレベルの処理を行い、受信したデータをバッファに格納して
上位プロトコルに渡す役割を果たしています。
ICMPプロトコルの代表サービスであるPINGコマンドの要求に対し応答
する機能を含んでいます。
(4) ARPプロトコルモジュール
ARPプロトコルのアドレス要求によりMACアドレスを要求された場合には、
ARP応答を返すことでMACアドレスを通知します。
(5) DHCPプロトコルモジュール
DHCPプロトコルによるアドレス割付を指定された場合には、自動的に
DHCPプロトコルによる通信を行い、サーバーからIPアドレスを割付を
行います。
(6) UDPプロトコルモジュール
UDPプロトコルにより指定されたポート間でデータ通信を行い、ユーザ
とのデータ送受を行います。
ユーザー用のAPI関数を用意していて、UDPプロトコルによるデータ受信
と、データの取り出しをサポートします。
またユーザーから送信をするための送信用関数も用意されています。
(7) TCPプロトコルモジュール
TCPプロトコルによりホストとの間でセッションを構成し、ソケットバッファ
経由で、データ送受信を行います。
ユーザーAPI関数が用意されていて、データの受信、送信、通信のクローズ
などを行うことができます。