eCos/RedBoot for H8/300H

[English]

H8/300H版uClinuxのブートローダとして、 RedBootを使ってみよう、 というページです。
当初の予定では、H8/300Hに移植されているeCosを探してきて、RedBootを動かしておしまい。 というお手軽コースのつもりだったんですが…。
ちなみに、RedBootを動かす方がメインなので、eCosの方にはちょっと手抜き気味です。


現在の状況

eCos Ver2.0-Alphaが公開されました。H8/300サポートが入っています。
ということで、パッチの公開をしばらく中止します(意味がないので)。
間に合わなかったパッチをv2.0に対応させたので、取り込まれるまで公開します。
最新版がほしい人は、ecos-h8 projectへ、飛んでください。

現状は、かなり人柱版です。 いろいろとあやしいので、何か問題が起きた時に自力で解決できる自信の無い人は 手を出さない方が無難です。
だいぶましになりました、コンパイル環境以外は…。
ようやくbinutils/gcc/gdbのh8300-elf対応版がそろいました。あとは、eCos Ver2.0リリースかな。 秋月の3068ボードで動くようになりました。ただし、メモリ増設が必須です。 内蔵メモリは、ワークで使い果たしてしまいました。 もう少し減らせそうなので、気力のある人は頑張ってみてください。
ちなみにネットワークはまだ動いてません。 早く対応させたいと思っていますが…。
ネットワークも使えるようになりました。ダウンロードが早いので快適です。

動いた記念にコンパイル済みmotを置いておきます。 自分用のバックアップをかねて…

秋月 H8/3068ボード用RedBoot
ちなみにIPアドレスはBOOTPで取得する設定になってます。

いまのところ、 というレベルです。

RedBootを動かすことがメインなので、使っていない機能はほとんどテストしていません。
eCosのサンプルプログラムは動いているので、 eCosのHALとして最低限のレベルには達していると思いますが。

確認できている(&直すつもりは無い)問題点として、libmが使えません。
修正は簡単なんですが、テストが面倒・RedBootで使っていない等の理由により 手をつけていません。必要な人は自力で直してください。


パッチ

以下のパッチがあります。必要な物を持っていってください。
開発版へのパッチなので、Rejectされた場合は適当に直してください。

コンパイル環境

いまのところ、ここが最大の難関です。そのうち何とかなると思いますが。

h8300-hitachi-elfに対応したgccとbinutilsが必要です。
h8300-hitachi-hmsでは、コンパイルできません。 正確にはCOFFの制限に引っかかって、リンクエラーになります。
少しがんばってみましたが、アーキテクチャ依存部分の変更だけでは どうやっても通らなかったのであきらめました。ごめんなさい。
がんばってみようという人がいたら連絡を下さい。 必要な情報を提供します。

話がそれましたが、現在正式にリリースされている最新のgcc-3.0.4/binutils-2.11.2でも ELFには対応していません。次のバージョンからサポートされることを期待しましょう。
ということで、現在のところ正式リリースのバージョンは使えないので snapshotを使うかCVSから持ってきてください。

2002/03/28追記
binutils-2.12がリリースされています。当然ELF対応しています。
2002/05/20追記
gcc-3.1がリリースされています。 スナップショットの追っかけから開放されました。

ちなみに、今使っているのは、
h8300-hitachi-elf-gcc (GCC) 3.1 
GNU assembler 2.12
GNU ld version 2.12
です。 ただ、gccは以下のような問題があるためeCosをコンパイルできません。

これ以外にも3.1の仕様変更?がありますが、gcc側の対応が必要なのはこの4 点です(直ってないのが2個)。 最後の問題がgccの仕様変更であれば、影響が大きいので何とかしてもらいたいと思いますが…。
とか書いておいたら直りました。バグレポートだそうと思ったのに。
危なそうなのはパッチを出しました。3.1リリースまでに改善されることを 期待しましょう。 直りませんでした(T_T)。そのうち直ることに期待しましょう。 long longはeCosの正式サポートになったら考えます。

この問題を修正するための、パッチ を作成したので、当ててからELFのgccを作ってください。 binutilsもなんとなくあやしい所がありますが、 バイナリは出来るので気にしないことにしています。 正式版はまだ検証してません。今のところよさそうですが、 リンク時に解決出来ないシンボルがあると、変なエラーを出してくれます。 実害は無いので、気にしないことにします。

コンパイル方法は変わっていないので、 ターゲットをh8300-hitachi-elfと指定して、 H8のクロスコンパイラとしてコンパイルしてください。


eCos/RedBootのコンパイル

CVSから最新ソースを持ってきて、 H8パッチを当ててください。
CPUとしてh8300h、ターゲットとしてh8300h_simが追加されます。
Ver2.0-Alpha版で、パッチが取り込まれました(少し古いけど)。 コンフィグレーション・ビルド方法は、eCosとRedBootのドキュメントを参照してください。 私も、他人に説明できるほど理解してません。

ターゲットの名前を見れば分かりますが、例によってシミュレーター上での動作しか 確認していません。
実機で動かす場合は、ターゲットを追加する必要があります。


秋月ボード版の構築方法

長くなったので、別ページにしました。 aki3068netターゲットの構築

予定(ToDo)

今後は、
  1. gdb_stubを入れる。(ほとんど出来てるので、入れるだけ) (入れたけど未チェック)動きました。
  2. Networkサポートを入れる。(必要な物はそろっているので、それほどの手間は無いはず)
  3. 秋月の3068ボードをターゲットに入れる (ROMに焼けるようにすればほぼ終わり)。
  4. eCosのカーネルをまともにする。
  5. eCosのCVSに入れてもらう。(eCosの需要はあるらしい)
というところを目指していきます。 ほぼ達成しました

Networkが使いたい&gdbでデバッグしたいという理由でRedBootをのせたので、 最初の二つは(いや、三つか)とっとと片付けたいと思っています。 残りは…あまり期待しないで下さい。あくまでRedBootを動かすのがメインの目的なので。

サポートCPUの追加は…H8Sは時間を見てを入れるつもりですが、 H8/300は需要が無ければ私のほうでは入れません。 (ネタとしてはこっちの方が面白いんですが、 メモリが足りるかどうかもわからないし)。 H8Tinyも入れる予定は今のところありません。 (300Hコアなので、H8/300よりは希望が持てますが)
ターゲットの方は、3068ボードのサポートは間違いなくやりますが、 それ以外はどうするか決めてません。手に入ったらサポートすると思いますが。


試行錯誤の記録

移植作業中の日記です。時々更新するかもしれません。
他のアーキテクチャへ移植する時の参考になればいいかなーと思っていますが、 無理な気がする…。
読む

更新履歴

2002年 3月24日公開
2002年 3月25日英語ページ公開。ecosパッチ更新。
2002年 3月27日gccパッチ更新
2002年 3月28日gccパッチ更新。 binutils-2.12の記述を追加。 eCosパッチ更新。gccの修正に追随しました。
2002年 4月10日eCosパッチ更新。 それ以外のところは追いついていません。
2002年 4月11日eCosパッチ更新。昨日のは腐ってます。 ごめんなさい
2002年 4月19日eCosパッチ更新。ネットワークに対応しました。
コンパイル済みバイナリを追加しました。
2002年 4月26日eCosパッチ更新。SCIドライバが入ってませんでした。
諸般の事情により、それ以外の変更は入れてません。
sourceforge.jpのCVSの全部置いてあるので、 ほしい人はそこからどうぞ
2002年 5月 9日eCosパッチ更新。WDTドライバ追加。GDB stub修正
当初の予定はほぼ完了しました。
2002年 5月20日GCC-3.1関係の記述を追加。
eCos 2.0が出るまで更新しなくなるかも。
2002年 5月21日GCC-3.1パッチが壊れていたので差し替え。 今度こそ、eCos 2.0が出るまで更新しなくなるかも。 前にも同じことをやったような気がしないでもない
2002年 5月23日↑とか言ってたら、2.0が出ました(Alpha版だけど) 少し前(たぶん4/26)までのパッチが取り込まれています。
ついでに少しいじりたいので、5/9の修正分の パッチは少し待ってください。
2002年 6月 2日お待たせしました。5/9分のパッチを2.0に対応させました。 マージされるまでの期間限定です。
マージされたら、予定通りパッチの公開をやめます。

リンクはご自由に
Yosinori Sato
戻る