H8 3052FをUbuntuで開発する際のメモ
クロスコンパイラーの整備
rpmパッケージは,みついわゆきおさんのLinuxによるマイコンプログラミングのページの「GCC for SuperH,H8/300,AVR」から,H8/300H用バイナリパッケージ(Linux version)をダウンロード
alienがない場合はインストールする
$which alien
$aptitude search alien
$sudoaptitudeinstallalien
RPMパッケージをdebパッケージに変換する
$sudoalien Package.rpm
packageの変換に少し時間がかかるが,同じディレクトリにPackage.debができる。
作成した.debをインストールするのは
$ sudo dpkg -i Package.debRPMパッケージを直接インストールする
$sudo alien -i Package.rpm
インストールが完了したならば,
私の場合は,Using built-in specs.
Configured with: ./configure --prefix=/usr/local
--target=h8300-hms --with-newlib
Thread model: single
gcc version 3.2 と表示されました。
書き込みツールの整備
H8に転送するツールをインストールします。
みついわゆきおさんのLinuxによるマイコンプログラミングのページの
「Open SH/H8 writer」に公開されていますので,
使わせてもらっています.C言語のソースファイル
をダウンロードして,コンパイル。
出来上がった実行ファイルは,パスの通った適当なディレクトリーに入れる。
私は /usr/local/bin にコピーしました.
# gcc -o h8write h8write.c
# cp h8write /usr/local/bin
テスト
3052F用の良いサンプルプログラムがないため、自作する。
#include "3052.h"
int main(void)
{
PA.DDR = 0x00;
PB.DDR = 0xff;
while(1){
PB.DR.BYTE = PA.DR.BYTE;
}
return 0;
}
つぎにリンカスクリプトとスタートアップルーチンが必要になる。
今回は3052FのROMに書き込むので、
リンカスクリプト:h8rom.x
スタートアップルーチン:h8crt0.s を用意する。
これらのファイルは
(3052.hも同じ場所にあります)
もうすぐでゴールなのでがんばってください。
必要なファイル:
#make
そうするとモトローラSフォーマット(*.mot)のファイルが出来上がる。
h8led.motをH8に転送すれば,実行できます.
転送をするさいのスイッチやジャンパの設定はH8_3052F使ってみる(Win)を参照。
#sudo h8write -3052 hello.mot /dev/ttyUSB0
を参照
# H8/3052F sample makefile
#
TARGET = hello.mot
CFLAGS = -O -mh -mint32 -g
TOOL_PREFIX = h8300-hms-
CC = $(TOOL_PREFIX)gcc
LDSCRIPT = h8rom.x
CRT0 = h8crt0.s
SRCS = hello.c
# make all source trees
all : $(TARGET)
hello.mot: hello.exe
$(TOOL_PREFIX)objcopy -O srec hello.exe $@
hello.exe: Makefile $(SRCS:.c=.o) $(LIBS)
$(TOOL_PREFIX)gcc $(CFLAGS) -T $(LDSCRIPT) -nostdlib $(CRT0) $(SRCS:.c=.o)
-o $@
clean :
rm -f $(TARGET)
rm -f hello.exe
rm -f $(SRCS:.c=.o)
USB-Serialの接続
H8マイコンボードのシリアルポートにケーブルを接続して
writeできたらよいが,私の場合はUSBポートを持ったPCを使用している
ため,USB-シリアル変換ケーブルを使用する。
どのポートにアクセスすればよいのかを調べる必要がある。
この時点でUSB-シリアル変換ケーブルが接続されていたら、
いったんケーブルを抜く。
以下のコマンドを実行して、現在Linuxシステムにロードされているドライバを確認しておきます。
#lsmod
この状態にしておいて、以下のコマンドを実行してください。
#ls -l /dev/ttyUSB