[H8-ML(2447)] RE: [H8-ML(2445)] Re: sprintfを使うと暴走?
From: "Norio Onda" <n.onda@xxxxxxxxxxxxxxxxxxx>
Date: 2002年11月25日(月)14時05分54秒
eqpredさん、こんにちは。恩田です。

> > H8OS、私もはまりました。
> え"。皆さんH8OSをお使いでなかったのですか?
 私もつい先週H8OS(AKI-H8LAN)についてこちらで質問をして、皆さんあまり使ってないのかな?
という感じを受けました。インターネットを検索しても”こんなの作ったぞ”というようなHPもないですよね。
(AKI-H8LANに別のOSを載せましたという、つわものの方はいらっしゃいます -> ね、hamayanさん)
 先の当MLのやり取りで、現状のH8OSには不安定要素があることがわかったので、私はpingで
応答確認、LCDの接続と表示確認をした段階ど止まっております。別のマイコン(AVR)のOSで、
アプリを書き始めました。

過去ログアーカイブ
http://www.exp.org/h8/ml/archive/cgi/view.cgi


> >  H8OSは、そのままの状態ではH8内蔵メモリ16KBしか使用してないようです。(外部RAMは
> そうなんですか。外部RAMはデフォルトでは使っていない。というより、使えない、ですか。
 そうですね。ユーザープログラムの中から使用するとか、デバッガのメモリ書き込みコマンドで書き込むとか
しか出来ないですよね。付属のユーザープログラムをRAMに転送するDOS/Winプログラムは、内蔵RAM
しか転送できないです。いくら外部RAMにプログラムを置くと動作が遅くなるといっても、これでは2MBが
もったいないですよね。


> > ユーザーがすべて利用可能という記述がありました)したがって、スタック・ユーザープログラム
> > システムが使用するメモリなど全て内蔵RAMで行っているので、スタックがオーバーフロー
> > しているのかなと思います。
> たしかに、そうかもしれません。調べる方法があると思うので、勉強してみます。
 スタックポインタの指すアドレスが、内蔵RAM上のユーザープログラムと重なってないか調べれば
いいのかなと思います。しかし、H8OSのデバッガ(コマンドインタプリタ)は、ステップ実行やレジスタ
を表示することは出来なかったので、ユーザープログラムでスタックポインタを調べなければならない
かなと思います。結局ニーモニック(アセンブラ)で書かなければ判らないかな?


> >  これを後からいじるには、スタートアップルーチンに手を加えねばならないのでは?と思います。
> うーむ。すこし勉強してみます。
 たぶん、H8OSのスタートアップルーチンの中で、インラインアセンブラでスタックポインタ(SP)に値をロードしている
個所があると思います。(探してみましたがまだ見つけてません。)


> > もしくは、あまり期待できないですが、運良く、ユーザープログラムを走らす前にシステムがサブ
> > ルーチンコール・退避していなければ、ユーザープログラムでスタックポインタを外部RAM領域に
> > 変更してもいいんじゃないでしょうか?
> これも考えてみます。
> 
> > (インラインアセンブラでSP(ER7)を直接いじってみてはどうでしょうか?)
> これは最後にとっておきます(^^;)。
いずれにしても、ニーモニックが必要かなと思います。

-----------------------------
恩田紀雄
n.onda@xxxxxxxxxxxxxxxxxxx
スレッド概略
[2434(R)](起点)
 └[2445(U)]
   └[表示中]
     └[2448(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]