SVX日記
2016-09-12(Mon) Fedora24でsdccしてrakipicする
先日、主たる環境をFedora24に移行したのだが、早々にPICマイコンを使って電子工作をする用事が出てきて、開発環境を整えることに。
基本、オイラはフリーのCコンパイラであるsdccを愛用しているので、Fedoraの標準リポジトリから導入すればいいのだが、Fedoraはフリーソフト原理主義なので、非フリーのライブラリやインクルードファイルが故意に外されていて、毎度ややこしい作業が必要になるのが面倒くさい。また、バージョンが上がるとコンパイラの仕様もチョイチョイ変わるので、それでコンパイルが通らなくなって悩まされることも多い……って、いわんこっちゃない。いってるそばから両方とも引っかかったワイ。
まずは、非フリーのライブラリやインクルードファイル関係。sdccのソースを持ってきて、ライブラリをコンパイルして、適切な場所にコピー……とかしようとしたが、以前のMINTと環境と様子が変わっていて何やらよくわからん。結局、非フリー除外のスイッチを外し、パッケージを丸ごと再ビルドするのが正解みたいだ。手順で言うと以下。これで、サクッとmakeが通るようになった。
# dnf install gputils
# dnf download --source sdcc
# rpm -ivh sdcc-3.6.0-2.fc24.src.rpm
# vi rpmbuild/SPECS/sdcc.spec
< %configure --enable-doc --disable-non-free STRIP=: ${OPTS}
> %configure --enable-doc STRIP=: ${OPTS}
# dnf install rpm-build
# dnf install python bison boost-devel flex latex2html lyx texlive-ulem texinfo
# dnf install gcc-c++
# rpmbuild -ba rpmbuild/SPECS/sdcc.spec
# rpm -ivh rpmbuild/RPMS/x86_64/sdcc-3.6.0-2.fc24.x86_64.rpm
< static __code char __at (__CONFIG1H) configword1h =
< _IESO_OFF_1H & // Oscillator Switchover mode disabled
< _FCMEN_OFF_1H & // Fail-Safe Clock Monitor disabled
< _OSC_INTIO67_1H; // Internal oscillator block, port function on RA6 and RA7
> #pragma config IESO = OFF // Oscillator Switchover mode disabled
> #pragma config FCMEN = OFF // Fail-Safe Clock Monitor disabled
> #pragma config OSC = INTIO67 // Internal oscillator block, port function on RA6 and RA7
最後に、自製のLinux用の秋月PICライタ「rakipic」もチョイチョイと修正。今回は、PIC16F688で赤外線リモコン信号の送信を行いたいので、ライブラリとサンプルプログラムも更新した。パッケージを置いておく。