(toppers-users 2178) Re: SH3リトルエンディアンでの使用について

ykominami ykominami @ nifty.com
2005年 10月 5日 (水) 09:17:32 JST


小南と申します。
私の使用しているCPUはSH7727ですが、ボードはHSB7727ST(北斗電子
製)とは異なりますし、自分のボードでは新井田の仰る症状を経験したことは
ありません。
しかし、いくつか気になる点を指摘させてください。

http://www.hokutodenshi.co.jp/7/71.htmから入手できるSH7727スタータキット
の資料PDF(http://www.hokutodenshi.co.jp/80/7727stinf.pdf)の2ページ目下段
のジャンパスイッチの説明で「本製品はビッグエンディアンで動作させます」と
ありますので、そもそもリトルエンディアンでは動作しないのではないでしょう
か。

以下は蛇足ですが、もし正常に動作しない場合に遭遇したら、私でしたら以下の
点を確認しようと思うことを書きます。

On Tue, 4 Oct 2005 14:50:42 +0900
ハッピー工業__ミシン技術部 <sew-gijyutsu @ happy-ind.co.jp> wrote:

>  新井田と申します。
 
>  HSB7727ST(北斗電子製)のボードをリトルエンディアンで動かしたいの
> ですが、GDBでボードを認識出来なくなってしまうようです。
>  状況は、以下の通りです。
 
>  ・スタブをリトルエンディアンでMake
> config.hに #define CONFIG_LITTLE_ENDIAN 1 を追加
> config.mkに CONFIG_LITTLE_ENDIAN=y を追加
 
> して、makeして、できあがったsh3-stub.srcをボード上のEEPROMに転送。
 
> ボードのMD5端子をグランドに落としているジャンパーをオープンにし、
> sh-hitachi-elf-gdbを立ち上げ、(SH3-stubのREADMEを参照しています)

>    (gdb) set remotebaud BPS
>    (gdb) set endian little
>    (gdb) target remote /dev/TTY
> とすると、

BPSの部分は数字、TTYの部分は実際に存在するデバイスファイル名を指定する
はずですが、これらは正確に指定されているのでしょうか。

TTYの部分がttyS0だとして、/dev/ttyS0はボードと接続されているのでしょう
か。

>  Remote debugging using /dev/ttyS0
>  Ignoring packet error, continuing
>  Coudn't establish connection to remote target
 
> と、でてしまいます。

このメッセージはホスト側のGDBがボード上のリモートスタブからパケットを
まったく受け取れないか、期待するのとは異なるパケット、またはチェック
サムが間違った壊れたパケットを受け取った場合が考えられます。

> スタブを元に戻して、ビッグエンディアンにすると普通に動作します。

正常操作しない場合に、私でしたら以下のことを確認しようと思います。

1.スタブのコンパイルが正しくできているか。
1.1 作成したオブジェクトはリトルエンディアンであるか。
  例えばfileコマンドやobjdump -hで調べてみて、SHのリトルエンディアンに
  なっているのでしょうか
1.2 元に戻したスタブは、ビッグエンディアンを指定してコンパイルしたもの
  なのか。
  ビッグエンディアンを指定して再コンパイルしたスタブでも、正常に動作し
  なければ、開発環境のインストールが正しくないと言う可能性が考えられま
  す。

2. ジャンパをオープンにした時に、CPUはリトルエンディアンになっているか
2.1 ジャンパをオープンにした状態で、ビッグエンディアンのスタブを転送、
  起動したら正常に動作するのか、しないのか
2.2 (可能ならば)ジャンパをオープンにした状態で、MD5端子の電圧を測定する

  なんらかの事情で、CPUがハード的にリトルエンディアンになっていなければ、
  リトルエンディアンのスタブが正常に動作しないでしょう。

3. リトルエンディアンのスタブが起動してからどの当たりまで処理が進むのか
確認する。
3.1  LEDなど簡便に確認できる方法で、ソースに手を加えて、コンパイル実行
させる
     HSB7727STには利用可能なLEDは無いようですので、スタブが使用
     しないSCI1からメッセージを出力させるなどが考えられます。
     TOPPERSプロジェクトのサイトから入手できるSH3用GDBスタブの場合、正常
     に処理が進めば、最後にTRAPAを発行して、ホスト側にシリアルを通して
     "S05#b8"という文字列を送ります。これをGDBではなくターミナルソフト
     で確認できれば、少なくともスタブによる初期化が正常に行われたか否か
     を確認できると思います。
------------------------------------
小南 ykominami @ nifty.com