(toppers-users 3039) Re: H8/3069F 割り込みハンドラについて

大澤 国 oosawa.kuni @ amber.plala.or.jp
2009年 9月 27日 (日) 08:57:08 JST


なかね様  回答ありがとうございます。

>systask\timer.c に相当するソース(pulse.c かな)は作ってあるでしょうか?

これについては、作ってありました。ありがとうございます。

昨日もいろいろ作業をしていまして、1.の原因はメークファイルにありました。

#  システムサービスに関する定義
#
STASK_DIR := $(STASK_DIR):$(SRCDIR)/systask:$(SRCDIR)/library
STASK_ASMOBJS := $(STASK_ASMOBJS)
STASK_COBJS := $(STASK_COBJS) timer.o serial.o logtask.o pulse.o \
	      log_output.o vasyslog.o t_perror.o strerror.o \
	      $(CXXRTS)
STASK_CFLAGS := $(STASK_CFLAGS) -I$(SRCDIR)/systask
STASK_LIBS := $(STASK_LIBS)


上記のシステムサービスに関する定義で「pulse.o」を追記していないのが原因のよ
うです。

なお、一応割り込みが確認できましたが、当初、割り込みにシステムタイマーと同じ
タイマインタラプトステータスレジスタ(TISRA)を使用していたのでうまくいかな
かったようです。(TISRB)に変更したらうまくいきました。
ただ、使い方を知らなかったからだと思いますが・・

2.のカーネル一括メークのエラーはまだ解決していません。

ありがとうございます。

大澤 国

-----Original Message-----
From: Takayasu Nakane [mailto:nakane @ next-dimension.co.jp]
Sent: Saturday, September 26, 2009 2:42 PM
To: users @ toppers.jp
Subject: (toppers-users 3038) Re: H8/3069F 割り込みハンドラについて

systask\timer.c に相当するソース(pulse.c かな)は作ってあるでしょうか?

systask\timer.c に timer_initialise, timer_handler, timer_terminate が
あります。

なかね

>大澤と申します.
>
>いつも皆さんにご迷惑をおかけしております。
>
>H8/3069Fでパルス入力のカウントをしたいと思いまして割り込みハンドラの登録を
>したいと思っております。
>
>H8.txt(Release 1.4.3対応,最終更新: 08-Mar-2007)を見ながら検討していますが
>なかなかうまくいきません。
>
>マニュアルどおり実施してみましたが、理解不足のせいかマイコンが停止してしま
い
>ます。
>
>それで、
>Systaskに登録してある「timer.cfg」を参考に同じように「pulse.cfg」を作りmake
>してみました。
>そうしましたら、以下のエラーが出て、失敗します。
>
>kernel_cfg.o:kernel_cfg.c:(.text+0x4a): undefined reference to
>`_pulse_handler'
>kernel_cfg.o: In function `__kernel_call_inirtn':
>kernel_cfg.c:245: undefined reference to `_pulse_initialize'
>kernel_cfg.o: In function `__kernel_call_terrtn':
>kernel_cfg.c:251: undefined reference to `_pulse_terminate'
>collect2: ld returned 1 exit status
>make: *** [jsp.exe] Error 1
>
>kernel_cfg.cを見てみますと以下のようになっています。
>
>void
>_kernel_call_inirtn(void)
>{
>         init_cup_timer( (VP_INT)(0) );
>         timer_initialize( (VP_INT)(0) );
>         serial_initialize( (VP_INT)(0) );
>         pulse_initialize( (VP_INT)(0) );
>}
>void
>_kernel_call_terrtn(void)
>{
>         pulse_terminate( (VP_INT)(0) );
>         timer_terminate( (VP_INT)(0) );
>}
>
>1.何処かに、「handler」の「initialize」や「terminate」を定義しているとこ
ろ
>があるのでしょうか。
>
>なお、「jsp/config/h8/hw_timer.h」を参考に同じように
>「jsp/config/h8/hw_pulse.h」として登録しています。
>