環境セットアップがこの章のメイン。
ubuntu16.04LT上にクロス開発環境を構築した.
12ステップすべてを振り返ると、ここの環境構築に一番時間がかかった。
基本概念のお勉強
クロス環境構築の手順
binutils, gccのダウンロード
binutils-2.19.1を以下から持ってくる
Index of /pub/GNU/binutils
gcc-3.4.6は以下から持ってくる。
http://www.ring.gr.jp/pub/GNU/gcc/
binutils-2.19.1のインストール
tar xvzf binutils-2.19.1.tar.gz cd binutils-2.19.1 ./configure --target=h8300-elf --disable-nls --disable-werror make sudo make install
gcc-3.4.6のインストール
tar xvzf gcc-3.4.6.tar.gz $ cd gcc-3.4.6 $ ./configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --disable-werror --enable-languages=c $ make $ sudo make install
本に書かれている通り、gcc/collect2.cを直さなくてはならない。
一行直すのみ。
ただ、直してからmakeしても新たに下記のエラーが出る。
この時にはgcc3.4.6/gcc/config/h8300/h8300.cに、
以下のパッチを当てる必要がある。
55,56c55,56 < 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); 371c371 < h8300_emit_stack_adjustment (int sign, unsigned int size) --- > h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size) 400,401c400,401 < static int < round_frame_size (int size) --- > static HOST_WIDE_INT > round_frame_size (HOST_WIDE_INT size)
これでmakeできる。
フラッシュROM書き込みツール
http://asakita.net/kabekin/2013/01/1209.html
からそのまま引用。
H8Writerを下記から入手
http://mes.sourceforge.jp/h8/writer-j.html
/usr/local/binにコピーして実行属性を付けておく
#chmod +x h8write
ubuntu10.04 では M/B内蔵COM0はデバイス名=ttyS0でOK
Hello world
各種ファイルを写経する。
ここのへんは黙って写していく作業。
- main.c
- startup.s
- スタートアッププログラム。
- 各種初期化を行ったあとmain()関数を呼び出す処理が書かれている
- vector.c
- 割り込みベクタ。
- 関数へのポインタの定義がある。
- lib.h, lib.c
- serial.h, serial.c
- defines.h
- ld.scr
- Makefile
make make image sudo make write
として書き込む.
シリアルUSBケーブルの種類によって書き込めない場合がある.
これに切り替えてパスできた.
https://www.amazon.co.jp/gp/product/B00QUZY4WO/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
あとはminicomをインストールし,シリアル通信の設定を行う.
通信の値は下記のようにする
ボーレート | 9600bps |
データ長 | 8ビット |
ストップビット長 | 1ビット |
パリティ | 無し |
ハードウェアフロー制御 | 無し |
ソフトウェアフロー制御 | 無し |
バッファに残ってるけど,成功