環境
- macbookair early2014
- OSX Mavericks
- H8/3069Fネット対応マイコンLANボード
- USBシリアル変換ケーブル
対象
12ステップで作る 組込みOS自作入門もしくはH8マイコン開発をmacで行いたい人
手順
0. 標準のgccをclangからapple-gccに変更
- Xcode command line toolsをインストール
- USBシリアルドライバインストール(書き込み用USBケーブル)
- H8用のビルドツールのインストール
- h8write(書き込みツール)のインストール
- 動作確認
0. 標準のgccをclangからapple-gccに変更
macportsでapple-gccをインストールし,標準のgccにセットする
$ sudo port install apple-gcc42
$ sudo port install gcc_select
$ sudo port select --set gcc apple-gcc42
1. Xcode command line toolsをインストール
-
Xcodeのインストール
App Storeからインストール
-
サインイン
Xcodeを起動し,Xcode->Open Developer Tool->More Developer Tools.
サインインを求められるのでサインイン(もしくは登録してサインイン) -
Command Line Toolsのインストール
$ sudo xcode-select --install
2. USBシリアルドライバインストール(書き込み用USBケーブル)
PL2303 USB to Serial Driver for Mac OS Xをダウンロード,インストール
再起動し,接続した状態でターミナルから以下のコマンドを実行し,デバイスの認識を確認
$ ls -l /dev/cu*
この環境では/dev/cu.usbserialと認識された
3. H8用のビルドツールのインストール
- Downloadディレクトリにsrcディレクトリを作り,その中に必要なソースをダウンロード
$ cd ~/Downloads
$ mkdir src
$ cd src
$ curl -O http://www.ring.gr.jp/archives/GNU/binutils/binutils-2.21.1.tar.bz2
$ curl -O http://www.ring.gr.jp/archives/GNU/gcc/gcc-3.4.6/gcc-3.4.6.tar.bz2
$ curl -O http://www.ring.gr.jp/archives/GNU/gmp/gmp-4.3.2.tar.bz2
$ curl -O http://www.ring.gr.jp/archives/GNU/mpfr/mpfr-2.4.2.tar.bz2
$ curl -O http://www.multiprecision.org/mpc/download/mpc-0.8.2.tar.gz
- ダウンロードしたアーカイブを展開
$ tar jxvf binutils-2.21.1.tar.bz2
$ tar jxvf gmp-4.3.2.tar.bz2
$ tar jxvf mpfr-2.4.2.tar.bz2
$ tar zxvf mpc-0.8.2.tar.gz
$ tar jxvf gcc-3.4.6.tar.bz2
- gcc3.4.6は64bit環境でエラーが出るため以下の修正をする
修正ファイル : ~/Download/src/gcc-3.4.6/gcc/config/h8300/h8300.c
55行目
-static void h8300_emit_stack_adjustment (int, unsigned int);
-static int round_frame_size (int);
+static void h8300_emit_stack_adjustment (int, HOST_WIDE_INT);
+static HOST_WIDE_INT round_frame_size (HOST_WIDE_INT);
371行目
-h8300_emit_stack_adjustment (int sign, unsigned int size)
+h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size)
400行目
-static int
-round_frame_size (int size)
+static HOST_WIDE_INT
+round_frame_size (HOST_WIDE_INT size)
- H8用gcc, binutilsなどのインストール
(/usr/local/h8-elfにそれぞれインストールする)
binutils
$ sudo mkdir /usr/local/h8-elf
$ cd binutils-2.21.1
$ mkdir build
$ cd build
$ CFLAGS=-Wno-error=deprecated-declarations ../configure --target=h8300-elf --disable-nls --prefix=/usr/local/h8-elf
$ make
$ sudo make install
gmpライブラリ
$ sudo mkdir /usr/local/gmp
$ cd ..
$ cd gmp-4.3.2
$ ./configure --prefix=/usr/local/gmp
$ make
$ make check
$ sudo make install
mpfrライブラリ
$ sudo mkdir /usr/local/mpfr
$ cd ..
$ cd mpfr-2.4.2
$ ./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
$ make
$ make check
$ sudo make install
mpcライブラリ
$ sudo mkdir /usr/local/mpc
$ cd ..
$ cd mpc-0.8.2
$ ./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
$ make
$ make check
$ sudo make install
gcc
/usr/local/h8-elf/binに一時的にpathを通す
$ export PATH=/usr/local/h8-elf/bin:$PATH
インストール
srcフォルダにbuildディレクトリを作る(解凍フォルダの外)。解凍フォルダ内でやるとエラーになる
$ cd ..
$ mkdir build
$ cd build
$ ../gcc-3.4.6/configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --disable-libssp --enable-languages=c --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc --prefix=/usr/local/h8-elf
$ make
$ sudo make install
4. h8write(書き込みツール)のインストール
Downloadフォルダに移動してダウンロード
$ cd ..
$ cd ..
$ curl -O http://mes.sourceforge.jp/h8/h8write.c
$ gcc -Wall -o h8write h8write.c
使用するディレクトリにソース(h8write.c)とバイナリ(h8write)を移動(フォルダはMakefileで指定)
5. 動作確認
以下は[12ステップで作る 組込みOS自作入門]のソースを使用
- Makefileの使用デバイスをデバイスを
[2. USBシリアルドライバインストール(書き込み用USBケーブル)]
で確認したものに置き換え
H8WRITE_SERDEV = /dev/cu.usbserial
- makeコマンド
$ make
オブジェクトファイルの生成
$ make image
実行ファイルの生成
$ make write
書込み(SW1 ON ON OFF ON)
$ make clean
生成ファイルの削除
- minicomでシリアル出力を確認
$ sudo minicom -s -o
設定:
シリアルデバイス:/dev/cu.usbserial
ボーレート:9600bps
データ長:8bit
ストップビット:1bit
パリティ:なし
ハードウェア・フロー制御 :なし
ソフトウェア・フロー制御 :なし
mode5でボードを起動(SW1 ON OFF ON OFF)
参考
12ステップで作る 組込みOS自作入門
[PATCH, h8300]: Fix build on 64bit targets
MacでH8開発環境構築 - 12ステップ本を試す
H8クロスコンパイル環境 on Mac OS X 10.9 (Marvericks)