[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(toppers-users 896) Re: kz_sh4でサンプルプログラムが動きません



池内さま

>  VC++ でコンパイルしたものは、正常に動作しましたので、評価キット
> の動作をデバッガで追って、比較してみました。評価キットでは、 logtask()
>  ( システムログタスク ) が走りっぱなしになって、 main_task() が
> 起動できなくなっているようです。
>
> 具体的には、 logtask.c:logtask() の中 : 
> 
> 	while (TRUE) {
> 		while ((n = syslog_read(&syslog)) >= 0) {
> 			if (n > 0) {

** Cut quoted 13 lines by the mail filter. **

解決策ではありませんが、解決へのヒントになるかと思い、お知らせします。

ログメッセージが連続して出力され、シリアルポートから出力できる速度を越
えた場合、ここの n はいつまでも正の値になります。main_task への切り替
えは、syslog_printf の中で呼び出す logtask_putc の中で待ち状態(セマフォ
待ち状態)になった時に起ります。

ですので、logtask_putc から呼んでいる serial_write の中で、正しく待ち
状態になっているかが1つのポイントです。

より根本的には、ログメッセージが連続して出力されるのは、それ以前に何か
らの問題が発生しているためと思われます。これに関しては、

(1) syslog_buffer の中をみて、どういうメッセージが溜っているかを調べる

(2) すべてのメッセージを低レベル出力に出してみる(syslog_setmask を使
    うか、もっと手っ取り早く syslog_write を書き換えてしまう)

という手で調べることができると思います。

高田広章
名古屋大学