2017/12/03

Raspberry PiのAVR開発環境を最新化する

より良い方法があったのでこちらをご覧ください。


先日、avr-libcのHomePageを眺めていた時にtime.hを見つけました。time.hはその名の通り時刻に関する操作を行うライブラリです。時計を作るのに使えそうだなと思い、簡単なコードを書いてコンパイルしたところコンパイラが"time.hがない"と言うではありませんか! ソースコードを確認したけどスペルミスはない。「またまた、ご冗談を…」と/usr/lib/avr/include/を覗いてみたところ確かに無かった。(絶句)

どうやらavr-libcのバージョンが異なるのが原因のようです。

  • avr-libcのHomePageの最新バージョンはv2.0.0
  • Raspberry Piにインストールされているavr-libcバージョンはv1.8
そこでRaspberry PiのAVR開発環境を最新化することにしました。

(1)最新化に必要なソフト


せっかくなのでgccも最新化します。

・binutils-2.29.1.tar.xz
 https://www.gnu.org/software/binutils/

・gcc-7.2.0.tar.xz
 https://gcc.gnu.org/

・gmp-6.1.2.tar.xz
 https://gmplib.org/

・mpfr-3.1.6.tar.xz
 http://www.mpfr.org/

・mpc-1.0.3.tar.gz
 http://www.multiprecision.org/index.php?prog=mpc

・avr-libc-2.0.0.tar.bz2
 http://www.nongnu.org/avr-libc/

・avr-size用パッチ
 https://gist.github.com/larsimmisch/4190960

(2)コンパイル手順


avr-libcのHomePageにコンパイル手順の説明があります。基本的にこの手順で実施すればOKです。

(2-1)環境設定


$ mkdir ~/local
$ PREFIX=$HOME/local
$ export PREFIX
$ PATH=$PATH:$PREFIX/bin
$ export PATH

(2-2)GNU Binutilsのコンパイル


$ cd ~/src/avr
$ wget https://ftp.gnu.org/gnu/binutils/binutils-2.29.1.tar.xz
$ tar xvf binutils-2.29.1.tar.xz
$ wget https://gist.github.com/larsimmisch/4190960/archive/16c6b9627f8451eeebd644a4b9a741edfdb0c45e.zip
$ unzip 16c6b9627f8451eeebd644a4b9a741edfdb0c45e.zip
$ cd binutils-2.29.1/binutils
$ patch -u < ../../4190960-16c6b9627f8451eeebd644a4b9a741edfdb0c45e/avr-binutils-size.patch
$ cd ..
$ mkdir obj-avr
$ cd obj-avr/
$ ../configure --prefix=$PREFIX --target=avr --disable-nls
$ make -j4
$ make install

(2-3) GNU gmpのコンパイル


gccをコンパイルするためにはgmp, mpfr, mpcが必要なため、先にコンパイルします。
$ cd ~/src/avr
$ wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
$ tar xvf gmp-6.1.2.tar.xz
$ cd gmp-6.1.2/
$ ./configure --prefix=$PREFIX
$ make -j4
$ make -j4 check
$ make install

(2-4) GNU mpfrのコンパイル


$ cd ~/src/avr
$ wget http://www.mpfr.org/mpfr-current/mpfr-3.1.6.tar.xz
$ tar xvf mpfr-3.1.6.tar.xz
$ cd mpfr-3.1.6
$ ./configure --prefix=$PREFIX --with-gmp-build=../gmp-6.1.2
$ make -j4
$ make -j4 check
$ make install

(2-5) GNU mpcのコンパイル


$ cd ~/src/avr
$ wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
$ tar xvf mpc-1.0.3.tar.gz
$ cd mpc-1.0.3
$ ./configure --prefix=$PREFIX --with-gmp=$PREFIX --with-mpfr=$PREFIX
$ make -j4
$ make -j4 check
$ make install

(2-6) gccのコンパイル


$ cd ~/src/avr
$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.2.0/gcc-7.2.0.tar.xz
$ tar xvf gcc-7.2.0.tar.xz
$ cd gcc-7.2.0/
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2 --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX
$ make -j4
$ make install

(2-7)avr-libcのコンパイル


$ cd ~/src/avr
$ wget http://download.savannah.gnu.org/releases/avr-libc/avr-libc-2.0.0.tar.bz2
$ tar xvf avr-libc-2.0.0.tar.bz2
$ cd avr-libc-2.0.0/
$ ./configure --prefix=$PREFIX --build=`./config.guess` --host=avr
$ make -j4
$ make install

【備忘録】時系列データの編集方法(R言語, tidyverse)

TimeSeries.knit 1 サンプルデータ作成 2 日付単位に集計する 2.1 月毎集計 2.2 四半期毎集計 ...