アットウィキロゴ

コンパイル

-

【覚え(あとで清書)】

これでコンパイル通って exec ffd940 で実行までできた
$ h8300-hms-gcc -O -mh -mint32 -T ram3068_ffd940.x -o blilk.coff -nostartfiles ramcrt0.S blink.c -lc
$ h8300-hms-objcopy -O srec blink.coff blink.mot
ram3068_ffd940.x (ram3068.xを修正)
OUTPUT_FORMAT("coff-h8300")。
OUTPUT_ARCH(h8300h)
ENTRY("_start")
MEMORY
{
	syscall(r) : o = 0x000100, l = 0x0200
	ram(rwx)   : o = 0xffd940, l = 0x1800
}

編集予定
みついわさんのところから h8300-hms-gcc の開発環境のrpmパッケージを持ってきてもできた。
今までできなかったのは、exec ffd940 をしてなかったからってだけ。
それなのにいろいろなところを調べまくった。。
最終的にはelf形式もcoff形式もどっちもコンパイルできるような環境にはなったが。。
elf版、coff版で、後日両方まとめておくことにする。


ヘッダ類

  • reg3067.h
  • syscall.h
を、
/usr/local/h8300-elf/include
に、h8 というフォルダを作って入れておく。
念のためパーミッションを 777 にする。
(上記フォルダに入れないと「見つかりません」と言われる)

メモリ定義ファイルの修正

ここを参照
iv. リンカスクリプトを修正する の部分を参照し、
今回 h8300-elf-gcc をインストールしたので対応したリンカを使うようにしなければならない
ram3068.x を emacs で開き、先頭部分を変更する
OUTPUT_FORMAT("coff-h8300")
を、
OUTPUT_FORMAT("elf32-h8300")
に変える。



コンパイル

みついわさんのところからもってきたram3068.xは、コンパイラがh8300-hms-gccを対象にしているため、さっき作った ram3068elf.xを使用してコンパイル&リンクする。
$ h8300-elf-gcc -O -mh -mint32 -T ram3068elf.x -o blink.coff -nostartfiles ramcrt0.S blink.c -lc
ここで、最初の"-O" は大文字であることに注意する!
大文字にせず、小文字にしてしまうと以下のようにエラーがでる!
(ここでだいぶはまった。。)
>/usr/local/lib/gcc-lib/h8300-elf/3.2.3/../../../../h8300-elf/bin/ld: unrecognised emulation mode: h 
>Supported emulations: h8300elf h8300helf h8300self
>collect2: ld はステータス 1 で終了しました

次に中間ファイル(.coff)をモトローラS形式へ変換する
# h8300-elf-objcopy -O srec blink.coff blink.mot

転送

みついわさんのところから put コマンドを入手して、以下のようにして put する。
# put -e blink.mot /dev/ttyUSB0
みついわさんによるとこれで自動的にRAM上に転送されたプログラムが実行されるとあるが、
これがどうやらそうでもない。
これを信じてずっと「動かん動かん」と言っていたが、試しに minicom を開いて
H8/OS > exec ffd940
として実行してやることで初めて作動。ここでもはめられた。


ちなみにソースはこれ。
<h8/reg3067.h>
<h8/syscall.h>

int main(){
 P4DDR = 0x01;
 while(1){
   P4DR = 0x00;
   sleep(5);
   P4DR = 0x01;
   sleep(5);
 }
}

syscall.h, reg3067.h が、どーこにおいても「見つかりません」と言われた時もあったので、
そういう時はソース blink.c と同じフォルダにおいて、ソースのインクルード行を
#include "syscall.h"
#include "reg3067.h"
にしてやればとりあえず見つけてもらうことはできる。

タグ:

+ タグ編集
  • タグ:
最終更新:2014年03月27日 22:38