KBC-P18LAN2のサンプルコードのライブラリをバージョンアップ
「KBC-P18LAN2」のサンプルコードのライブラリを「v2010-10-19」から「v2012-08-22」にバージョンアップしてみた。
その時の備忘録。
Microchip社のライブラリは、ヘッダファイルとコンパイルオプションを駆使して
いろいろなPICといろいろな使用方法に対応できるようになっている。
TCPIPのライブラリだけでも、IP/UDP, DHCP, DNS等々、使うモジュールを設定できるようになている。
しかし、テキトウに設定してしまうと、ヘッダファイルのインクルード地獄に落ちてしまう。
「v2010-10-19」から「v2012-08-22」にバージョンアップする場合、以下にあげる2つ問題があった。
The extended CPU mode対策
ビルド時に以下のエラーがでる場合は、コンフィギュレーションビットの設定ができていないため。
"The extended CPU mode configuration bit is enabled, but the program that was loaded was not build using extended cpu instructions"
ソースコードで設定するため、以下のようにする。
#define THIS_IS_STACK_APPLICATION を#include "TCPIP Stack/TCPIP.h"の前に宣言する。
「Invalid MAX_UDP_SOCKETS value specified 」対策
TCPIPConfig.hから以下をコメントアウトする
※サンプルの場合は、「TCPIPConfig ENC28J60 ETH97J60.h」
#include "TCPIP Stack/TCPIP.h"
しかし、いろいろやっかいだった。ビルドエラーの内容と対策が一致していない。ライブラリのヴァージョンが違うだけでいろいろと変わってくる。
原因をつきとめて、そのために必要な設定(#defineや#ifdef等)を通すためには、なにを定義しておかないといけないかを調査しないといけないため、煩雑だ。
最初に何もしないTCPIPライブラリをリンクするプログラムを作って、だんだんリンクするモジュールを増やしてひとつひとつ、潰していった。
こういう作業は非生産的で、いらいらするが、やっているうちに楽しくなってくるから自分はこの仕事に向いているのだろう。。