MacOS X 上に PIC の開発環境を構築


覚え書き程度の内容...
以下のツールのインストールを行った。
MacOS X 10.3.6, Xcode 1.5 (gcc 3.3) にて。


gputils-0.12.4 (http://gputils.sourceforge.net/)

ごくフツーにインストールできる。

     tar xvzf gputils-0.12.4.tar.gz
     cd gputils-0.12.4
     ./configure --prefix=/usr/local/pic
     make
     sudo make install


sdcc-2.4.0 (http://sdcc.sourceforge.net/)

これもごくフツーにインストールできた。 (以下の方法では z80, 8051 等にも対応するバージョンができる)

     tar xvzf sdcc-2.4.0.tar.gz
     cd sdcc
     ./configure --prefix=/usr/local/pic
     make
     sudo make install
インストール後に、"sdcc/support/scripts/inc2h.pl" というスクリプトを使って、インクルードファイルを作る。
     (root になって)
     cp support/scripts/inc2h.pl /usr/local/pic/share/sdcc/include
     cd /usr/local/pic/share/sdcc/include
     mkdir pic14
     chmod +x inc2h.pl
     ./inc2h.pl 16f84 /usr/local/pic/share/gputils > pic14/pic16f84.h
     ./inc2h.pl 16f877 /usr/local/pic/share/gputils > pic14/pic16f877.h
     (その他、必要なインクルードファイルを作る)
ちなみに sdcc が対応している PIC16系 MPU は、16f627, 16f628, 16f84, 16f873, 16f877, 16f819 である。


gpsim-0.21.2 (http://www.dattalo.com/gnupic/gpsim.html)

こいつの build にはいろいろヒネリが必要。
まずは必要なライブラリ等をそろえる。gtk+extra 以外は fink で揃えた(popt, gtk, glib, gtk+, gettext, readline, iconv ...)。 gtk+extra のコンパイルはフツーにできる。ちなみに build 後の gpsim の依存ライブラリを調べてみると、

  otool -L /usr/local/pic/bin/gpsim
  /usr/local/pic/bin/gpsim:
     /usr/local/pic/lib/libgpsim.0.dylib (compatibility version 1.0.0, current version 1.0.0)
     /usr/local/pic/lib/libgpsimcli.0.dylib (compatibility version 1.0.0, current version 1.0.0)
     /usr/local/pic/lib/libgpsimgui.0.dylib (compatibility version 1.0.0, current version 1.0.0)
     /usr/local/pic/lib/libgpsim_eXdbm.0.dylib (compatibility version 1.0.0, current version 1.0.0)
     /sw/lib/libpopt.0.dylib (compatibility version 1.0.0, current version 1.0.0)
     /sw/lib/libgtk-1.2.0.dylib (compatibility version 10.0.0, current version 10.1.0)
     /sw/lib/libgdk-1.2.0.dylib (compatibility version 10.0.0, current version 10.1.0)
     /sw/lib/libgmodule-1.2.0.dylib (compatibility version 1.0.0, current version 1.10.0)
     /sw/lib/libglib-1.2.0.dylib (compatibility version 1.0.0, current version 1.10.0)
     /sw/lib/libintl.1.dylib (compatibility version 2.0.0, current version 2.1.0)
     /sw/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)
     /usr/X11R6/lib/libXext.6.dylib (compatibility version 6.4.0, current version 6.4.0)
     /usr/X11R6/lib/libX11.6.dylib (compatibility version 6.2.0, current version 6.2.0)
     /sw/lib/libreadline.4.dylib (compatibility version 4.2.0, current version 4.3.0)
     /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 71.1.1)
NetBSD の pkgsrc から patch をもらってきた。patch なしでも build はできるが、挙動不審なものになってしまう。また、その他にも一カ所修正の必要なところがある。これら全部をまとめたものを gpsim-0.21.2-darwin.patch として置いておく。
また、よくあるパターンの、"libtool が対応していない" という問題もあるので、 glibtoolize を使ったりして回避する。
他には、readline 等の場所指定のため CPPFLAGS 等を環境変数に設定する。これらの対処を行うことで、共有ライブラリ版の gpsim が build できる。
     tar xvzf gpsim-0.21.2.tar.gz
     cd gpsim-0.21.2
     patch -p0 < ../gpsim-0.21.2-darwin.patch
     glibtoolize --copy --force
     export CPPFLAGS='-I/sw/include'  (shell は bash)
     export CFLAGS='-O2 -I/sw/include'
     export CXXFLAGS='-O2 -I/sw/include'
     export LDFLAGS='-L/sw/lib'
     ./configure --prefix=/usr/local/pic
     cp /usr/bin/glibtool ./libtool
     make
     sudo make install


akipic-0.1.8 (http://members.jcom.home.ne.jp/pnms/akipic.html)

付属の Makefile でそのまま build できるのだが ...

     tar xvzf akipic-0.1.8.tar.gz
     cd akipic-0.1.8
     make
     cp akipic /usr/local/pic/bin/
シリアルポートに、SUNTAC VS-60R (USB-Serial) を使っているのだが、ドライバが良くないのか、非常に不安定(たま〜に読み書きできるが、ほとんどの場合はエラーで終わるか、返ってこない)。どの辺でトラブっているのかと思って、akipic のソース内に printf debug 文を入れたら、何故かそれだけで急に安定した。タイミングの問題なのか、file descriptor まわりに何か原因があったのか、よくわからんがちゃんと動いているので良しとして、深くは追求しないとする。実際に加えた変更の内容は、→ akipic-0.1.8-patch こんな感じ。(この変更が有効かどうかは、環境によると思う。)


sdcc 使用感

いくつかバグっぽいところも見つかっているが、ちゃんと使えている。 CCS-C ではコンパイラが勝手にやってくれたことも、sdcc では全部自分でやらなければならない。不便ともいえるが、コンパイラが勝手なことをしない=自分で全部でコントロールする、というのは、精神衛生上は良い。


戻る