〜 SDCC (NetBSD編)〜

NetBSD 1.6.2

 NetBSD は 1.6.2 で確認しました。  実は、NetBSDの pkgsrc にも sdcc があります。さっすがー。
 ですが、折角なので最新ソースを cvsでゲットして同様にPIC16F84に対応させてビルドしてみました。
 configureスクリプトを実行させるいつものパターンなんですが、gmake install でコケました。
ちょっとここで注意なんですが、make じゃなくて gmake じゃないと通らないんでお気をつけて..
 で、追うのがいやだったんですが(笑)、PC-UNIXでも cpや、findのオプションの違いがあって どうやらそれが原因であることが分かりました。NetBSD の cp、find では存在しない オプションを使ってて怒られていました。cp は -u 、find は -maxdepthがそれです。 ここを適当に修正して、無事インストールもできました。
 個人的には、両オプションとも対応しているものと思っていたがそうじゃなかった。ちょっと 痛かった。

ビルドの前に知っておいた方がいいこと

 gputilsをインストールしたら headerディレクトリ下にPICデバイスの インクルードファイル(p16f84.incなど..)がたくさんコピーされますが、このファイルを 利用して、Cのヘッダファイル(pic16f84.hなど..)を作成します。 作成するのは、sdcc/support/scripts/inc2h.pl です。
 このPerlスクリプトはデフォルトで gputilsが/usr/share/gputilsにインストール されているとして処理します。自分でスクリプト中のパスを変更すればいいだけなんですが、 面倒なら、最初から configure でインストール先を指定しておいた方が楽です。  同様に sdcc も /usr/share/sdcc にしておいた方がいいでしょう。

ソースゲット

sourceforgeのcvsサーバーから直接いただきます。login時のpasswordはリターンのみでOKです。
% cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/sdcc login
% CVS password:
% cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/sdcc co sdcc
 これで最新のソース一式がゲットできた。
 ここから、三岩幸夫氏が雑誌「Software Desigen」 の2004年7月号〜10月号の「Linuxパワーアップ講座」で紹介された修正を盛り込む。

ビルド

--prefixで/usr/shareを指定します. gmake は通るけど、installでこけた。
% ./configure --prefix=/usr/share
% gmake
% su
% gmake install
ってしたら、

cp -r -u build/* /usr/share/sdcc/lib

で怒られちゃった。 -u オプションなんか無いってことだ.
cp は環境によってオプションが違うので、 Linuxを想定しているようなら、BSD系にはないオプションだってある。 man cp してみよう。NetBSD 1.6.2 にはもちろん -u はない。

installエラーの対応

 エラーは具体的に以下の2個所だ。(*) 2004/12/25時点のソースです。

  1. findエラー (-maxdepth)

  2. /usr/bin/install -c -d /usr/share/sdcc/doc/aslink find: -maxdepth: unknown option
    usage: cp [-R [-H | -L | -P]] [-f | -i] [-p] src target
    cp [-R [-H | -L | -P]] [-f | -i] [-p] src1 ... srcN directory
    gmake[1]: *** [install-doc] エラー 1
    gmake[1]: Leaving directory `/usr/local/src/sdcc/as'

     やりたいことはdoc/ 以下のファイルをコピーしただけのようだ。
    拡張子は, txt , lyx しかないんで、
    cp doc/*.txt /usr/share/sdcc/doc/aslink
    cp doc/*.lyx /usr/share/sdcc/doc/aslink
    としてお茶を濁そう;-P
    で、これを操作するファイルを探すとしよう

    find . -name "Makefile" | xargs grep "maxdepth"
    find . -name "Makefile.*" | xargs grep "maxdepth"
    find . -name "*.mk" | xargs grep "maxdepth"
    カッコ悪いがありそうなファイルを探せば見つかる.
    as/Makefile の 22行目だと分かった。 ここを修正する。

  3. cpエラー (-u)

  4. mkdir -p /usr/share/sdcc/lib/src
    cp -r -u build/* /usr/share/sdcc/lib
    cp: unknown option -- u
    usage: cp [-R [-H | -L | -P]] [-f | -i] [-p] src target
    cp [-R [-H | -L | -P]] [-f | -i] [-p] src1 ... srcN directory
    gmake[1]: *** [install] エラー 1
    gmake[1]: Leaving directory `/usr/local/src/sdcc/device/lib'

     これも cp の -uオプションを使用していそうな場所を同様に探して見る。 さらに手抜きだが、

    find . -name "Makefile" | xargs grep -n "\-u"
    で探すと、
    device/lib/Makefile:267:
    device/lib/Makefile:268:
    がヒットした。ここを修正した。とりあえず -u を外した。

 これで gmake install が通ってインストールが完了する。

サンプルソースのビルド

 手っ取り早くサンプルソースで確認してみましょう。 すごく手抜いてるソースですが、確認ということで...
 sdccに gpasm, gplink まで通しもらって foo.hex を得ます。
 リンカスクリプトは 16f84a.lkrをそのまま使用します。別途用意はしていません。

 
 Windows編と同じです。
% sdcc -V -mpic14 -p16f84a foo.c
 これで、foo.hex が生成されています。

PIC Writer

 秋月電子AKI-PICプログラマ Ver.3 を使用しました。
 ライタソフトは akipicを使用させて いただきました。ありがとうございます。

 また、自分のマシンは IBM ThinkPad X21 なので 232Cコネクタがありません。USB からシリアル変換するしかないのですが、私はIO DATA の USB-RSAQ2 を使用しました。
 幸いにも NetBSD 1.6.2 ではUSB-RSAQ2に対応済みでした。スゲーぞぉ。

 
 USB-RSAQ2を挿して /var/log/message を覗くと..
Dec 21 01:00:41 hostname /netbsd: uplcom0: at uhub1 port 1 (addr 3) disconnected Dec 21 01:00:41 hostname /netbsd: uplcom0 detached
Dec 21 01:00:48 hostname /netbsd: uplcom0 at uhub1 port 1
Dec 21 01:00:48 hostname /netbsd: uplcom0: Prolific Technology PL2303 Serial adapter (IODATA USB-RSAQ2), rev 1.10/0.01, addr 3
Dec 21 01:00:48 hostname /netbsd: ucom0 at uplcom0
 
 ってな具合で認識してくれている。デバイスは /dev/ttyU0 だ。一般ユーザーでも このデバイスが使えるように、
% su
% chmod 666 /dev/ttyU0
 としておいた。
 
 akipic もすんなりビルド、インストールは完了した。
% tar zxvf akipic-0.1.8.tar.gz
% cd akipic-0.1.8
% make
% su
% make install
 /usr/local/bin にインストールされる。
 
 使用方法は以下のとおり。
% /usr/local/bin/akipic -p /dev/ttyU0 -d 16f84a -w foo.hex
 秋月のPICプログラマのソフトより断然早いので驚いた。動作確認もOKだった。 ちょっと感動した。


2004/12/29

Copyright(C) 2004 masu, All rights reserved.
massun.masumoto@nifty.ne.jp