半田ごてを握ったら書くブログ 2nd

半田ごてを握ったら書くブログの続きです。

blackfin の Mac開発環境 (gcc 6.3.0)

自分用のメモ。

■目的
Interface誌の別冊
「音遊び!Blackfin DSP基板でディジタル信号処理の部屋」の付属基板「IFX-49」をmacで開発するためのgcc/ライブラリの類をできるだけ最新(2017-02-17時点)にするためのメモ。

なお、Blackfin-toolchainはgcc4.3か4.5のみのサポートのため、下記のようにgcc6.3.0をインストールするのはオススメできません。こんなブログを参考にする人はいないと思うのですが、これはあくまでgcc6.3.0がインストールできた!といって自己満足した方法ですのあまり本気にしないでくださいね。

■参考にしたURL
http://rohi.hatenablog.com/entry/2015/05/19/DSP%E5%9F%BA%E6%9D%BF%E7%94%A8%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92Mac%E3%81%A7%E9%96%8B%E7%99%BA%E3%81%99%E3%82%8B
http://blog.livedoor.jp/ooonzzz555/archives/cat_1244809.html

ほぼこのサイトに書いてある通り。多謝。多謝。


■インストール先ディレクト
/usr/local/bfin-elf

export PATH=$PATH:/usr/local/bfin-elf/bin


binutils
https://ftp.gnu.org/gnu/binutils/binutils-2.27.tar.bz2

      • -

tar xjf binutils-2.27.tar.bz2
cd binutils-2.27
./configure --target=bfin-elf --without-newlib --prefix=/usr/local/bfin-elf --disable-nls --disable-shared
make
make install


gcc 1回目
https://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2

      • -

tar xjf gcc-6.3.0.tar.bz2
cd gcc-6.3.0
mkdir build
cd build
../configure --disable-multilib --enable-languages=c --with-gmp --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib --with-isllib=/usr/local/lib --with-mpfr --with-mpc --prefix=/usr/local/bfin-elf --target=bfin-elf --disable-shared --disable-threads --disable-nls --with-newlib --without-headers --with-gnu-as --with-gnu-ld
make all-gcc
make install-gcc


■newlib
ftp://sources.redhat.com/pub/newlib/newlib-2.5.0.tar.gz
最新はnewlib-2.5.0だけど、ビルドに失敗するのでとりあえず2.2.0-1でやってみる。

ftp://sourceware.org/pub/newlib/newlib-2.2.0-1.tar.gz

      • -

tar zxvf newlib-2.2.0-1.tar.gz
mkdir build-newlib
cd build-newlib
../newlib-2.2.0-1/configure --target=bfin-elf --prefix=/usr/local/bfin-elf
make all
make install


gcc 2回目
cd gcc-6.3.0/build
../configure --disable-multilib --enable-languages=c --with-gmp --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib --with-isllib=/usr/local/lib --with-mpfr --with-mpc --prefix=/usr/local/bfin-elf --target=bfin-elf --disable-shared --disable-threads --disable-nls --with-newlib --with-gnu-as --with-gnu-ld --disable-libssp
make all
make install


gdb
http://ftp.gnu.org/gnu/gdb/gdb-7.12.1.tar.gz

      • -

tar xjf gdb-7.12.1.tar.gz
mkdir build-gdb
cd build-gdb
CFLAGS="-O1" CC="clang -std=gnu89" ../gdb-7.12.1/configure --prefix=/usr/local/bfin-elf --target=bfin-elf --enable-sim-bfin
make all
make install


ldr
https://osdn.net/projects/sfnet_adi-toolchain/downloads/2014R1/2014R1-RC2/src/blackfin-toolchain-2014R1-RC2.src.tar.bz2/

      • -

mkdir blackfin-toolchain-2014R1-RC2
mv blackfin-toolchain-2014R1-RC2.src.tar.bz2 blackfin-toolchain-2014R1-RC2/
cd blackfin-toolchain-2014R1-RC2

tar xjf blackfin-toolchain-2014R1-RC2.src.tar.bz2
tar xjf uClibc.tar.bz2 uClibc/include/elf.h
tar xjf ldr-utils.tar.bz2
cd ldr-utils
cp ../uClibc/include/elf.h .
./configure --prefix=/usr/local/bfin-elf CFLAGS="-Wno-gnu-designator"
make
make install
ln -s /usr/local/bfin-elf/bin/ldr /usr/local/bfin-elf/bin/bfin-elf-ldr


■libdsp
(PATH に /usr/local/bfin-elf/bin が通ってること)

cd blackfin-toolchain-2014R1-RC2
tar xjf libdsp.tar.bz2
cd libs
make CROSS=bfin-elf-
make CROSS=bfin-elf- install DESTDIR=/usr/local/bfin-elf/bfin-elf

rm libdsp/libbfdsp.a
make CROSS=bfin-elf- LIBC_HAS_NO_CMATH=1
make CROSS=bfin-elf- LIBC_HAS_NO_CMATH=1 install DESTDIR=/usr/local/bfin-elf/bfin-elf

    • -

一応、これでツール類はすべてビルドされるが、まだBlackfinを触りはじめたばっかりなので、なにか問題あるかもしれない。


[追記 2017-02-19]
上記の方法だとbfin-gdbproxyが入らないみたいだ...

gcc6.3.0でサンプルをコンパイルすると一部動かないものがあるみたいです。少なくともUSB DACのサンプルコードは動作しませんでした。