PICNICへのWeb Serverデモの移植


【TCP/IPスタックの準備】

TCP/IPスタックの移植を開始する前に、まずはスタックがオリジナル
のままで正常にコンパイルできるようにする必要があります。

TCP/IPスタックだけでは機能しませんから、マイクロチップ社からデモ
ソフトで提供されている「Web Server」を基本にしてコンパイルします。
このデモソフトでは、MPLAB用のプロジェクトが何種類か用意されて
います。
 下表がそのプロジェクトの種類で、Microchip社用と、Hi-Teck社用の
2つに対応し、さらにそれぞれが、MPFSのファイルにプログラムメモリを
使うか外付けEEPROMを使うか、LAN通信かシリアル回線によるSLIP
通信か、によって分けられています。

プロジェクト名 対応環境 機能内容
HtNICEE.prj Hi-Tech社用
外付けEEPROM使用
LAN使用
HTTP Server
DHCP、IP Greaning
FTP Server
ARP、ICMP(Ping)
TCP/IP/UDP
HtNICPG.prj Hi-Tech社用
プログラムメモリ使用
LAN使用
HTTP Server
DHCP、IP Greaning
FTP Server
ARP、ICMP(Ping)
TCP/IP/UDP
HtSlEE.prj Hi-Tech社用
外付けEEPROM使用
SLIP使用
HTTP Server
FTP Server
ARP、ICMP(Ping)
TCP/IP
HtSlPG.prj Hi-Tech社用
プログラムメモリ使用
SLIP使用
HTTP Server
ARP、ICMP(Ping)
TCP/IP
MPNICEE.prj Microchip社用
外付けEEPROM使用
LAN使用
HTTP Server
ARP、ICMP(Ping)
TCP/IP
MPNICPG.prj Microchip社用
プログラムメモリ使用
LAN使用
HTTP Server
ARP、ICMP(Ping)
TCP/IP
MPSlEE.prj Microchip社用
外付けEEPROM使用
SLIP使用
HTTP Server
ARP、ICMP(Ping)
TCP/IP
MPSlPG.prj Microchip社用
プログラムメモリ使用
SLIP使用
HTTP Server
ARP、ICMP(Ping)
TCP/IP

この中から条件として
 ・PICNICには外付けのファイル用のEEPROMが無い
 ・LAN通信を使う
 ・マイクロチップ社のフリーのCコンパイラを使う

この条件が満足できるプロジェクトとして、「MPNICPG.prj」を移植すること
にしました。

まずは、MPALBとMPLAB-C18をインストールしてから、TCP/IPスタックを
インストールしたフォルダのsourceフォルダにあるプロジェクト「MPNICPG]
をOpen Projectで開きます。
 次にEdit Projectで下図のように、Include PathとLibrary Pathについて、
MPLAB-C18をインストールしたフォルダを設定します。






こうしてMakeかBuildを実行してみます。
正常にコンパイルが終了すれば無事に準備が出来たことになります。

このプロジェクトのダイアログで「Project Files」の欄を見ると、このプロジェ
クトで使っているファイルが判ります。これ以外にヘッダーファイルが必要
です。


【PICNICへの移植】

PICNICへの移植をするためには、まず、PICNICとPICDEM.netの回路を
比較してその差異を知る必要があります。そしてそれらが関係する上記
のプロジェクトで使っているソースファイルを特定する必要があります。

私が調べた結果では下表のような差異となっていました。表の赤字部分
が異なっていて変更が必要なところです。表のように僅かの差異しかあり
ません。

またRT8019ASの起動時には、外付けEEPROMの93C46からConfiguration
のデータを読み込みますが、この機能はそのまま使えます。
PICNICには、購入時にMACアドレスがここに書き込まれていますが、
下記設定では変更していませんので、スタックのデフォルト値のままに
なります。

項 目 PICDEM.net PICNIC 関連ファイル
RTL8019AS制御
 アドレスバス
 データバス
 IOR/IOW/RESET

RB0-RB4
RD0-RD7
RE0-RE2

RC0-RC4
RD0-RD7
RE0-RE2
Mac.c
I/Oポート
 アナログ入力

 LED出力


 スイッチ入力

RA0(AN0)
RA1(AN1)
RA2(D6)
RA3(D5)
RA4(D4)
RB5(S3)

RA0
なし
RA2
RA1
なし
RA3
websrvr.c
compiler.h
websrvr.c
液晶表示器
 データバス
 RS
 R/W
 E 

RD0-RD3
RD4
RD5
RA5

RB4-7
RB2
GND
RB3
xlcd.h
compiler.h
デフォルトIPアドレス 10.10.5.15 192.168.1.10 stacktsk.h
デフォルトMACアドレス 00-04-a3-00-00-00 同左 変更不要(注1)
その他
 インターバル点滅

LATB7

なし
tick.c


ただし上記で前提としたPICNICボードには、拡張コネクタにボードを増設し、
ポートAに下図のような回路の拡張を施しています。



LED5
LED6


立上げ切り替え用の
スライドスイッチ


アナログ入力用の可変抵抗


(注1) もし、PICNICボードのMACアドレスが読み出して判っていれば
     stacktsk.hのデフォルト値を変更して下さい。

【必要な変更】

上表から関係するファイルを探すと下記のようになりました。

(1) LANコントローラ関連
 上表で判るように、LANコントローラのRTL8019ASの直接制御はすべて
 「Mac.c」の最初の方で定義していますので、これを修正すれば動作し
 ます。

(2) 入出力ポート関連
 入出力ポートについては、「websrvr.c」で使っていて、これの変数の
 定義を「Compiler.h」で行っていますので、両方をPICNICに合わせて
 修正する必要があります。

(3) 液晶表示器関連
 液晶表示器についてはちょっと変更が多いのですが、「xlcd.h」で全ての
 変更を済ませることが出来ます。websrvr.cでもLCDの禁止を初期化の
 時に実行しているのでここだけが関係します。
 このポートの定義をcompiler.hに追加変更する必要があります。

(4) デフォルトのIPアドレスの変更
 これは単純に「stacktsk.h」で定数宣言していますのでこれを変更します。
 このIPアドレス以外にGatewayやMask Byteの定数宣言も指定変更が
 出来ます。

(5) インターバル点滅の削除
 内部のインターバルタイマの動作確認用にLEDを点滅させていますが
ポートBを使っているので、これは削除します。

以上の変更を施してからコンパイルすればPICNICへの移植は完了です。
下記に変更を施したファイルをダウンロードできるようにしましたので、
下記をTCP/IPスタックのオリジナルのファイルと交換してコンパイルし直し
て下さい。
コンパイルが終了したらPIC18F452にPICSTARTPlusなどのプログラマで
書き込みます。

  ★★ 修正後のソースファイル(LZH圧縮)
  (注) デフォルトのIPアドレスが「192.168.1.10」となっています。
      デフォルトのMACアドレスは「00-04-a3-00-00-00と」なっています。


【デモの機能確認】

このようにして移植したPICNICによるWebサーバの機能は下記で確認
できます。

まず、パソコンとデバッグ用にシリアルケーブルを接続します。
そしてパソコン側でハイパーターミナルを起動し、下記の設定とします。

  COMポート :パソコンによるが通常はCOM1かCOM2
  ビット/秒  :19200
  データビット :8
  パリティ   :なし
  ストップビット:1
  フロー制御 :なし

次にLANのケーブルを接続してからPICNICの電源を接続します。
これで起動してRTL8019ASが初期動作としてEEPROMからConfiguration
のデータを読み込んで起動します。

(1) 起動時の切り替え確認
  増設したRA3のスライドスイッチにより、起動時に一旦パソコン側に
  メッセージを送信してコマンド待ちとなるようにするか、それを省略して
  いきなり起動するかを切り替えられます。

(2) Pingによる接続確認
 PICNICを起動すると液晶表示器にスタートメッセージとIPアドレスを
 表示しますので、このIPアドレスに対してPINGコマンドを実行します。
 PINGコマンドはパソコンのWindowsの「コマンドプロンプト」を開いて
 下記のようにコマンドを入力すれば出力されます。

   ping 192.168.1.10

(3) ARP動作の確認
 PINGコマンドが正常に返って来たらコマンドプロンプトの画面で、下記
 コマンドを入力すれば、検出されたIPアドレスとMACアドレスの対応表が
 表示されますので、Physical Addressの欄でMACアドレスが正しいかを
 確認します。

  コマンド: arp -a
  表示例  Internet Address   Physical Address    Type
         192.168.1.1     xx-xx-xx-xx-xx-xx  dynamic
         192.168.1.10     00-04-a3-00-00-00  dynamic

(4) ブラウザから監視制御
 上記のPICNICのIPアドレスをブラウザのURLとして指定すると、下図の
 ような画面が開いて監視と制御ができるようになります。
 左下が状態表示ですので、スイッチの状態やアナログAN0の内容、LED2個
 の状態が正しいかを確認します。さらに右下のボタンで2個のLEDの点滅
 制御が出来ることも確認します。






        目次に戻る