USL-5P
現時点でのものを置きましたので、どうぞ。
ダンマリしてしまうのは、タイマーが動作していないんじゃないんですかね。LANDISK は SH4 内蔵 RTC を使用していない様ですし。
USL-5P で CF 上の ffsv1 からカーネルを読み出せるブートローダなら提供できますが、いかがでしょうか。多分 LANDISK でも使えるのでは無いかと思います。 今は netboot できるように SH7751R PCIC と RTL8139 のドライバを書いている所です。まあ、いつ完…
CF 上の ffsv1 からダミーカーネルを読める程度の能力は実装した。 SH IPL+g version 0.9, Copyright (C) 2000 Free Software Foundation, Inc. This software comes with ABSOLUTELY NO WARRANTY; for details type `w'. This is free software, and you ar…
レジスタのダンプやらに使ってたデバッグルーチン。また書くのが面倒なのでバックアップ。 .align 2 print_hex: mov #-28, r2 mov #0xf, r3 mov r4, r7 1: mov r7, r1 shld r2, r1 and r3, r1 mova .L.hexchr, r0 mov.b @(r0, r1), r0 mov r0, r4 mov #31, r…
やっと Primary Bootstrap の文字を拝む事に成功。が /boot の open() が失敗した。
ネタも無いので sh-ipl+g BIOS call の仕方。r0 に機能番号、r4-r7 に引数を設定して trapa 0x3f で起動する。処理結果は r0 に設定される。破壊されるレジスタは r0 のみ。まあ、trap なんであたりまえって言えばあたりまえだけど。 またソースを見るのも嫌…
ldscript を見たら解決方法が判った。ld のオプションに -N を付けると .data セグメントをアラインせずに .text セグメントと同一ページに置いてくれるらしい。Makefile の LDFLAGS に -N を追加してみたら、自分が欲しかったデータが生成される様になった…
bootxx がとりあえずリンクできる様になったので objcopy -O binary してみたら、何か ELF 形式の実行ファイルより大きくなってしまってアルェ〜な感じ。objdump で ELF ヘッダを見てみたら .data セグメントの配置アドレスが離れているのが原因っぽいなぁ。…
PBR の先頭は 3 バイトしか使えないのか。つーことは、遅延スロットの命令を無害なものになる様にするしかないのかぁ。 sh-lilo の r12 にはそういう秘密があったのね、あー。
やられたー。4 バイトアラインされていないメモリから mov.l しようとしてアボートしてた。そりゃ、パーティションテーブル走査処理から抜けないわ。
MBR→PBR→boot1→boot2 の順なのか。
多大なる勘違いをしている事に気付いたので修正。
sh-lilo の動作シーケンス解説を元にして、ちまちまとブートローダを書いていくかね。
とりあえず、LED を点灯させるコードを書いてみた。で、CF の先頭セクタに書き込んでブートさせてみたら、電源と LAN の LED が点灯する事が確認できた。おっけ。 sh-ipl+g で起動時に電源と LAN の LED が点灯させられているので、動作確認するには LED を…
sh-ipl+g では MBR のセクタを読み込んで、読み込んだメモリアドレスの先頭にジャンプしてくれるのか。って事は MBR の +000h〜+01BDh までのコード部分に 1st boot loader を書く必要があるのか。
sh-ipl+g の動作シーケンス解説 sh-lilo の動作シーケンス解説
内蔵 CF のイメージをバイナリエディタで覗いてみる。ほー、MBR があるのね。ファイルシステムは ext2 なのかな。 んー、今のカーネルだと ext2 をマウントできる様になってないな。じゃあ、カーネルとクロスツールチェイン作るか。で、エンディアンはどっち…
CF を抜いたままブートしてみたら、sh-ipl+g 起動後 IDE 関連のエラーを延々と吐き続けた。カーネルは CF 上のものを読むのか。それじゃカーネル差し替えも楽だね。 んー、sh-ipl+g って何だろ。やっぱり g られてんの?
とりあえず、手元にあったクロスケーブルで接続してみたけど駄目だった。USB-RSAQ2 と直結したら通信できた。
「USL-5Pで遊ぶ」を参考にしてシリアルコンソールをつけてみる。真似して IC 上に直接コンデンサをハンダ付けしてみたけど、もう二度とこんな事したくないよ…。 で、この図には TxD が二つあるんだけど、ここら辺を見ると CN7-2 が RxD って事で良いのかなぁ…
電源を入れる前に分解。内蔵されている CF を引っこ抜いてバックアップ。
とりあえず、買ってきた。ちっちゃくって良いね。