/var/log/messages

debugging with sixth sense

crosstool-NG 入れるなど

先日入手した、BareMetalで遊ぶ RaspberryPi に出てるソレを云々してみます。

とりあえずパケジを導入。

$ sudo apt-get install build-essential python3 python2.7 \
python-dev libzip-dev automake libncurses5-dev gperf bison \
flex gawk libtool libexpat1-dev expat

あるいは 32bit 環境用ライブラリを、とのことで以下。

$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install ia32-libs libgtk2.0-0:i386

久しぶりに apt-get update とかしたのですが apt-line に docker だの heroku の toolbelt とか入っててアレですね。ともあれ、これで crosstool-NG の導入準備は OK とのこと。

とりあえず環境構築の手順としては

  • crosstool-NG の導入
  • 環境設定
  • コンパイルとインストール

とあります。とりあえずディレクトリを掘って

$ mkdir ~/cross
$ mkdir ~/cross/rpi
$ mkdir ~/cross/src

rpi にコンパイラ、src にソースを、とのこと。で http://crosstool-ng.org からソースコードを取得して展開して ~/cross 配下に導入なのか。

cross 配下ですが以下なカンジになりました。

$ ls
bin  lib  rpi  share  src

次に環境設定、ということで

  • 環境設定を保存するディレクトリを掘る
  • 設定テンプレをそこに保存

とのことで以下。

$ mkdir ~/cross/src/ct-ng_rpi
$ cd ~/cross/src/ct-ng_rpi
$ ~/cross/bin/ct-ng arm-unknown-eabi
$ ls
config  config.gen

何かができてます。glibc 使いたくないので arm-unknown-eabi 選択ですか。そしてこのテンプレのままでは RasPI への最適化が不十分とのことで以下四点の設定を、とのこと。

  • インストール先
  • RasPI 最適化 (hard-float 対応、arm1176jzf-s 最適化)
  • BareMetal 環境特有の設定 (MMU 無効化、libc システムコール未実装)
  • gcc やライブラリのバージョン指定

で、何するか、というと menuconfig みたいのを出して設定を変えて build する模様。

$ ~/cross/bin/ct-ng menuconfig

これはこれはなソレが出てきました。諸々修正を盛り込んでいるのですが gcc を最新に、ってこれは端末に導入されている、という理解で良いのだろうか。あるいは build の中で自動取得なのかな。

ええと gcc は 4.8.2 が最新。newlib は 2.1.0 が最新なのか。テキストでは 1.20.0 ってなってますが最新を指定してしまえ。

と思ったら指定できる最新は 4.8.1 ですね。そして newlib は 1.20.0 でした。

で、build を実行。

$ ~/cross/bin/ct-ng build

あとは PATH を通しておけば良い模様。menuconfig にて設定変更した項目を以下に列挙しておきます。

  • Paths and misc options の Local tarballs directory
  • Prefix directory に ~/cross/rpi/${CT_TARGET} 指定
  • Target options の Use the MMU のチェック外す
  • Target optimisations は以下を指定
    • Architecture level は armv6zk
    • Emit assembly for CPU および Tune for CPU には arm1176jzf-s
    • Use specific FPU は vfp
  • C compiler および C-library のバージョンは最新を選択
  • Companion libraries の GMP, MPFR, MPC のバージョンを全て最新に

ちょっと BareMetal 本もきちんと目を通せていないので今のうちに確認しとこ。

Comments