Saturday, June 14, 2014

今日の作業

  • ICE使えない問題で、e2studio,CubeSuite+とかで状況が変わるか試してみるがいずれも芳しくない。
    • もうこの方法はダメポなのか・・・
    • gdb対応モニタとかがないかも含めて検討する必要ありなのかも
      • いずれにしてもしばらく膠着状態、最悪断念か。
        • あーーーーーーーーーーーーー

Thursday, June 12, 2014

今日の作業

  • static変数が初期化されていなかった件
    • ROMにstatic変数が配置されていなかった。
      • そのためその領域をRAMへコピーしても意味が無い状態になっていた。
    • リンカに --ignore-lma を渡して該当領域へ初期値が配置されていることを確認した。
    • しかし、ロード時にはRAM領域にも変数が配置されている。
      • なんで????
  • ターゲットのメモリが足りないためか、ソースデバッグ時に必要なシンボル名とかが足りない
    • これは致命的
      • ICE前提でやっているため、アセンブラレベルでのデバッグ/トレースに自信がまったくない。
        • あーーーーーーーーーーーーーーーーーー 打ち止めか?

今日の作業

  • 例外/割り込みベクタテーブルに手をつける。
    • これに手をつけないと次に進めなさそうだから
    • ちょっとずつ理解しているがH8のコードはトリッキーなことをしているように見える。これには意味があるのだろうか?
    • H8/300Hだと jsr @addressがちょうど4バイトなのが羨ましい。
  • 上記だけだと頭がうにになってしまうので、メインルーチンもトレースして進めることに
    • どうやらstatic変数を初期化できていないらしいことが判明
    • すごく読みにくいリンカースクリプトを読まなきゃならないはめに
    • HEWでダウンロードしたらRAM領域にロードされてしまっているらしい。
      H8のやつからあまりいじってないのに。それが悪いのか?
      • この状態で動かしたら起動メッセージとプロンプトが出る所まで来た。
        ちょっとやる気が出てきた。
      • コマンドプロンプトで入力できるところまで来た。

Wednesday, June 11, 2014

今日の作業

  • システムコールで止まっているみたい、といったところはVirtual Vector Tableを呼び出すところだった。
    • 解析したところ、そのアドレス設定が間違ったところ(メモリがない領域)に設定されていて”飛んでいる”だけだった。
      • アドレス設定を行って処理は通るようになった。
  • なにかしら表示をしたがっているらしいコードのところで止まるところまで来たのでシリアル関係の初期化/関数の移植に入りたい。

Tuesday, June 10, 2014

今日の作業

  • リセットベクタを正規の位置に配置
    • それ以外のベクタは”ガワ”だけ正規の場所に配置
  • シリアル初期化に手をつけるかどうか悩み中。
    • 止まっていたのはシステムコールの部分みたい。
      マクロがいっぱいねすとされてて訳わからん。
      さっそく移植辞めたい症候群発症。

今日の作業

ソースファイルを追加したいのだけれどコンパイルされるがリンクされない現象に悩まされる。
んー

Monday, June 9, 2014

今日の作業

  • コンパイル/リンクがとおり readboot.elf ができるところまでいった。
    けどこれはram用?rom用どっち用? 
    • ROM用っぽい。readelfで見たところ
    • CYG_HAL_STARTUPのdefault_valueを {RAM}にすればRAM用になるみたい。
  • コンパイルを”通すための”コメントアウトは最小限だとは思うけど
    理解&移植しないといけないところ多数。
  • ひとまずRAMにロード出来て先頭番地へ飛ぶところまではやらなきゃいけない。
    resetベクタは最小限必要+rom固定ベクタ関係の扱いをちゃんとする。
    • resetベクタの定義の仕方を思案中。rxのほうをごそっと持ってきてh8のやり方をやめるか、その逆か。
  • Wikiが必要。資料をまとめながやらないと頭爆発。
    • とりあえず作った。
  • resetベクタはさておき(おいとくのかよ)少しずつスタートアップコードの移植に着手。
    リセットしていちいち先頭アドレスにpcを移してステップ実行。
    もうE1なしでの生活には戻れない…



Sunday, June 8, 2014

今日の作業

ひとまず、特殊電子回路 究極のRX62Nボードベースで開始。
  • ソースツリーの生成が通ること(多少のウォーニング/エラーあり)
    ecosconfig new ultimaterx62n redboot
    ecosconfig tree
  •  移植作業一部
    できるだけCにする。わかりやすいよう。あとでチューニング
    • hal_misc.c
      • hal_lsbit_index,hal_msbit_index
  • シリアル(SCI)のドライバ以外のウォーニングを消した。
    • breakinstってやつが見つからなくってひとまずコメントしたけど
      あとのこと考えるとチョー不安。




ソースを読めば読むほど終わる気がしなくなってきた…

ベースはやっぱりh8にします

コンパイルが通らないh8ですが、rxとはよく似ているため、やっぱりh8をベースと
します。





package/hal内のh8300をコピー、リネームしていくところから開始。
ベースはrxアーキテクチャとしてrx62、将来的にrx63を追加していく構造にする。


ドライバ関連は最小限、動き出したらethernetサポートなどを追加していく予定。
ethernetは独自ドライバになるため、ゼロから書かなきゃいけないのが憂鬱だけど。

-mh -mint32ではまる

CYGBLD_GLOBAL_CFLAGSから "-mh -mint32"を抜いているのに、makefile生成時に
復活してくる… なんで?


今のgccでは -mh -mint32は使えないからなしにしたいのに…
(rxは32bitだから何もなくても大丈夫なはず)


※環境変数ECOS_REPOSITORYが指す先がオリジナルのh8になってた… 

Saturday, June 7, 2014

ここまででわかっていること。

ここまででわかっていること。
(順次増えるかもしれない)


  • redbootはecosというosの一部
  • 現在のecosのバージョンは3.0
  • ビルドにはC++コンパイラが必要
  • h8でビルドしようと思ったがC++ライブラリ stdc++がビルドできないこと。
    • いろいろgccのバージョンを変えてやってみたけど無理だった…
    • h8からフォークして作業しようと思ったけどビルドできないのを
      ベースにするのは心もとないなぁ…

とりあえずはじめます

redbootをrenesas rxシリーズに移植しようと思います。


技術的にできるかどうか、また自分のスキルでできるかどうかまったく白紙のため、
最終的にモノになるかどうかはわかりません。