(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