(toppers-users 3080) Re: [H8]E_CTX reported by `isig_tim()' in line 63 of `../jsp/systask/timer.c'. 頻発

中村和博 norichan1108 @ gmail.com
2010年 2月 14日 (日) 17:50:01 JST


こんにちは、中村です。

お返事遅くなり申し訳ありません。

To: 中根 様

> To. 中村 様
> シリアルはうまく動作するようになったでしょうか。
> 何か相談に乗れることがあるなら個人のメールアドレスへ送ってくれたら協力し
> ますよ。

ありがとうございます。
その後、シリアルは無事動きました。
何のことはないポカミスでした。先日までToppersで組んでいたのもあり、
割り込みルーチンを普通の関数と定義してしまっていたためというおちでした(--;
それに気づくのに何時間費やしたか・・・。
__attribute__ ((interruput_handler))を追加する事で無事動きました。
ところで、25MHzのH8のCで書いた多チャンネルシリアルルーチンの処理能力は
どれくらい出るものなのでしょうか?(扱い的にはToppersのserial.cと同様。PGは
8bit3ステート接続外部RAM(AKIH8の仕様)での動作)
38400N81でPCより80kB程のテキストを送信し、エコーバックさせてみたところ、
送受信バッファ16byteでは大半が文字落ち(--;。64byteでも多少文字落ちして
しまうのです。フロー制御を行っていないのもあるとはおもうのですが、この程度
の処理で文字落ちしちゃうものなんでしょうか(^^;。昔組んだZ80 8MHzでももう
少しまともにうごいたきがするんですが・・・。もっともそちらはフルアセですが。
まぁ、きっと組み方が悪いんでしょうね。
今回扱うデバイスのコマンドパケットは最大でも32byte程度で、ホスト主導なの
でこの程度でも問題がないといえばないのですが個人的には納得できる結果
ではないです。やはりアセンブラで書くべきだったか・・・。
その後グラフィックLCDのライブラリも移植しなおして、あとはステコンとかを組み
上げていくところなんですが、そこで眠さにまけてダウンしてしまいましてレスが
遅くなってしまいました。

と、MLに直接関係ない話題になってしまいましたので、このお話はここでクローズで。

もしかしたら、どうしてもわからないことがありましたら直接メールする事があるかも
しれません。そのときはお手数ですがよろしくお願いいたします。

以上


2010年2月14日12:11 Takayasu Nakane <nakane @ next-dimension.co.jp>:
> ROM 状態でごめんなさいの中根@NDです
>
> H8/3052 で問題があるようですが,かなり前に気が付いて指摘したような気がす
> るのですが(記憶が曖昧で済みません),直っていなかったようですね。
>
> ご指摘のように h8_3052.h では以下の様に定義されています。
> H8IN_RAM_BASE           0xffef10
> H8IN_RAM_SIZE           0x001000
>
> RAMの先頭アドレスの間違いが指摘されていますが,H8IN_RAM_SIZE の方も間違
> っています。
> 3052 は 8kbyte の RAM ですので 0x002000 が正解です。
>
> もし,3052 で jsp を使おうかと思っている方はご注意を。
>
> To. 中村 様
> シリアルはうまく動作するようになったでしょうか。
> 何か相談に乗れることがあるなら個人のメールアドレスへ送ってくれたら協力し
> ますよ。
>
> (株)ネクスト・ディメンション
>      中根
>      nakane @ next-diemnsion.co.jp
>
>>こんばんは、中村です。
>>
>>TO: 坂元 様
>>
>>> TOPPERSの実装には詳しくないのですが、可能性として多重割込みに絡む
>>> 問題のような気がします。シリアルとtimerの割込みレベルを同じにする
>>> などして多重割り込みを使わなければ問題を回避できるかもしれません。
>>
>>上記、先日試してみたのですが、残念ながらうまくいきませんでした。
>>単に、シリアルにタイマーが割り込んでいるというわけではなくて、
>>おそらく、送信バッファにデータを挿入する際に結構長い時間cpuロックを
>>しているのですが、そのロックをかける瞬間に割り込まれてしまうのでは
>>ないかとおもっています。
>>ただ、具体的にどう手を入れていいのかがさっぱりわかりません(--;。
>>それに、E_CTXをださずそのままフリーズするケースもあるため、
>>単純にそれだけが原因とも言い切れないのです。
>>
>>今回は、TOPPERSの使用をあきらめて、現状まっさらな状態から
>>作り直しているところですが、実は単純なシリアル送信割り込みではまって
>>いたりします。コードを見る限り問題なさそうなのですが、どういうわけか
>>うまくうごいてくれず・・・。間に合うのか心配になってきました(--;
>>
>>
>>2010年2月13日14:25  <titicaca @ buz.bbiq.jp>:
>>> 中村様
>>>
>>>> その後、ですが、syslogを止めてもtimerが動いているとやはりNGでした。
>>>> 根本的に?TOPPERSの組み込みシリアルルーチンとtimer処理の相性が悪いようにお
>>>> もいます。
>>>
>>> TOPPERSの実装には詳しくないのですが、可能性として多重割込みに絡む
>>> 問題のような気がします。シリアルとtimerの割込みレベルを同じにする
>>> などして多重割り込みを使わなければ問題を回避できるかもしれません。
>>>
>>>> 追伸:
>>>> 坂元様、MLでのファイル添付は極力避けたほうがよいです。FTPなりWebなりにあげ
>>>>>>>
>>> 失礼しました、了解です。
>>>
>>> 256 坂元
>>>
>>>
>>>
>>
>
>
>