(toppers-users 1857) 初めて投稿します。JSPカーネル初心者
Hiroshi Seki
hi_seki @ ued.janis.or.jp
2005年 1月 28日 (金) 14:11:10 JST
(tab:4)
初めて投稿します。
関製作所 関です。
SH2を用いた計測用ボードのハード開発およびソフトウェア開発をしています。
今まで設計したボードに使用していたOSを、
次回の改造からは TOPPERS JSP カーネルに変更して、
将来的にはネットワーク接続できるように対応したいと思い、
今年に入ってから JSP カーネルを使わせて頂いています。
デバック環境には Cygwin 上の Insight(GDB) を使用しています。
GDB を使うにあたり sh2 の GDB STUB を自社製のボードに対応する際
気がついた点をご報告いたします。
なお、sh2 GDB stub オリジナルソースは、北海道立工業試験場 様
で公開されているものです。
変更点1.
setjmp.h が含まれていなかったので、sh3 用の GDB stub から
コピーしました。
(私の環境では、setjsp.h がないとコンパイルが通りませんでした。)
sh3 用の GDB stub は TOPPERS プロジェクトで配布されて
いるものです。
変更点2.
Makefile.(ターゲット名)の作成および変更
ベースはアルファプロジェクト様の Makefile.apsh2f6a です。
2-1.
外部メモリアドレス先頭アドレスの変更(自社製ボードに対応)
DATA_START_ADDRESS=0x00200400 <--- に変更。
CS0空間を外部メモリエリアとして使っているので
これを 0x00200400 に変更。
JPSカーネル使用時には、GDB stub のベクタテーブルと
プログラムのベクタテーブルが共有される為、
0x00200000 でかまいませんが、JSPカーネル対応前の、
プログラムでも、 Insight(GDB)を用いてデバックして、
OS同士の比較をしたかったので、このように0x400 バイト分
明示的にずらしました。
2-2.
sh-stub7145.c の変更。
上記 2-1.の変更のために、
static Function vectable[vector_size];
をコメントアウト。
/*static Function vectable[vector_size];*/
#define TARGET_VECTOR 0x00200000
const Function* vectable = (Function*)TARGET_VECTOR;
を追加。
2-3.
sh-stub7145.c の変更。
Insight でデバッグ時にサイズの大きい配列をポインタ
渡しで関数呼び出しするとき、関数側にブレークポイント
があると、サイズの多きいメモリリードコマンドが
GDB stub に対して発行され、これが stub 側で、
処理できずに、Insight および、ハードウェア側双方で
ハングアップしてしまう現象がありました。
sh3 用のコードを参考にして、関数 putpacket 内の1行
if (src[0] != src[runlen]) {
を、コメントアウトし、
/*if (src[0] != src[runlen]) {*/
if (src[0] != src[runlen] || runlen == 99) {
を追加しました。
これにより、上記のバグが解消されました。
2-4.
sh-stub7145.c の変更。
ハードウェア設定の変更。
(基本的な変更です。)
hardware_init_hook を自社製ボード用に変更。
2-5.
Makefile の変更
ターゲット名に自社製ボードを追加および、変更。
(基本的な変更です。)
#SYS= hsb7616it
#SYS= apsh2f6a
SYS= jsp03207 <--- 自社製ボードの名称 Makefile.jsp03207を追加。2-1.
2-6.
スタートアップ時、上記ベクタテーブルのクリア。
(基本的な変更です。)
start.S に追加しました。なくても問題ないです。
2-7.
その他、GDB stub のワークRAMエリアサイズが大きかったので、
(0x00020000)128kバイト
これを小さくするように各部を変更して
64k or 32k バイトで動作するように修正。
変更点3.
その他、幾らかいじったと思いますが、まだ全てをまとめていません。
自社製ボードに対する変更なので、ご参考になるかどうか
わかりませんが、興味のあるお方はご連絡くささればソースファイルを
添付したメールを差し上げます。
JSPカーネルをいじり始めて10日程なので、まだまだ使いこなして
いません。
JSPカーネルに自社製ボードのターゲット依存部を追加変更して。
一応、サンプルプログラムのコンパイル、Cygwin 上の Insight
でのデバックができるようになりました。
ただし、Insight のデバック時には、ソースコードに日本語のコード
(EUC,SJIS)が含まれると、Insight が誤動作をして、ブレークポイントが
ずれるので、日本語のコメント類は全て削除しています。
結構使えるので、これからの製品設計開発にメインに使っていこうかと
おもっています。
なお、Cygwin のバージョンは調べていませんが、2005.01.24 に
full download して、full install したものです。
その他。
gcc :2.95.3
biutils :2.13.2.1
insight :6.0
上記cygwin上にて、コンパイルしたものです。(sh-hitachi-elf...)
なぜか、プロジェクトにて配布されている同じバージョンのgcc では、
sample プログラムは問題なくコンパイル デバックできましたが、
自社製基板の過去のプログラムはうまく動作しませんでした。
上記ツール類を全てソースからコンパイルすると、問題なく
動作しました。
やはり、ツール類はそのマシンでソースファイルからビルドし直した
ほうが良さそうです。
あと、いろいろなバージョンの組み合わせを試して、実基板にて、
動作確認をしていますが、私の環境と、過去の設計資産では、
上記のバージョンの組み合わせが一番良さそうで、問題が発生していません。
パソコン側
OS : Windows2000(SP5)
celeron : 1.0MHz.
メモリ : 512M Byte.
です。
JSPカーネル初心者にて申し訳ございません。
乱筆失礼します。
(このメーリングリストの作法がまだよくわかっていないので
お気を悪くした方がおられるようでしたら、お手柔らかにお願いします。
私は、気が小さいので、次回から投稿できなくなってしまいます。)
小心者故、ご勘弁ください。
hi_seki @ ued.janis.or.jp