SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|

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

  次に、コンパイラの仕様もチョイチョイ変わる関係。PIC18系のコンフィグ指定のスタイルが変更されている。

< 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で赤外線リモコン信号の送信を行いたいので、ライブラリとサンプルプログラムも更新した。パッケージを置いておく。