(toppers-users 4712) Re: TOPPERS/ASP3ディスパッチ部におけるフリーズについて
kaneko-nao
kaneko-nao @ numata.co.jp
2017年 12月 26日 (火) 09:42:32 JST
名古屋大学
高田広章 様
ご連絡、ありがとうございます。株式会社ヌマタです。
>質問を変えさせてください。ここで「フリーズする」というのは,無限
>ループから抜けてこなくなるということだと思うのですが,その時に,
>割込みも発生していないということでしょうか?
割り込みは、タイマ周期割り込みやVSYNC割り込みのような、周期的に入る
ものがあるので、それらが起動してもおかしくないのですが、フリーズ状態
になると、そのアドレスで固まってしまい、ICEでも、ステップ実行すらできない
状況です。
以上、取り急ぎ、回答いたします。
株式会社ヌマタ
-----Original Message-----
From: Hiroaki TAKADA
Sent: Tuesday, December 26, 2017 9:18 AM
To: users @ toppers.jp
Subject: (toppers-users 4711) Re: TOPPERS/ASP3ディスパッチ部におけるフリーズについて
株式会社ヌマタ様
名古屋大学の高田です。すみませんが,昨日のメールを修正させてくだ
さい。
> (1) slp_tsk() で割り込み待ちをしているということですが,その時
> に,他に動作しているタスクが無い状況があるでしょうか?(ディス
> パッチャ内のアイドル処理を実行しているかどうか)
これは,不要な質問でした。「core_support.s」の223行目の割り込み待
ちのところでフリーズ,ということは,当然 YES ということですね。
質問を変えさせてください。ここで「フリーズする」というのは,無限
ループから抜けてこなくなるということだと思うのですが,その時に,
割込みも発生していないということでしょうか?
もし割込みが発生していないとすると,ループ内で割込みを許可してい
ますので,割込みコントローラ側の設定がおかしくなっているものと思
われます。
割込みが発生しているのであれば,割込みの出口処理でタスク切り換え
に失敗しているものと思われます。
この件,わかりましたら,お知らせ下さると幸いです。
高田広章
名古屋大学
On 2017/12/25 17:51, Hiroaki TAKADA wrote:
> 株式会社ヌマタ様
>
> ご報告,ありがとうございます。
>
> TOPPERS/ASP3 のディスパッチャのロジックは,ASP のものと考え方を
> 変えており,何か問題が残っている可能性は無いとは言えません。ま
> た,Release 3.1.0 と 3.2.0 でもロジックの修正を行っており,歴史
> が浅いコードになります。
>
> こちらでも調査したいと思いますが,まれにしか起こらない現象とい
> うことで,原因を絞り込むのにご協力いただけるとありがたいです。
>
> (1) slp_tsk() で割り込み待ちをしているということですが,その時
> に,他に動作しているタスクが無い状況があるでしょうか?(ディス
> パッチャ内のアイドル処理を実行しているかどうか)
>
> (2) もし可能なら,Release 3.1.0 でも同じ問題が発生するか,調べ
> てくださると助かります。
>
> よろしくお願いします。
>
> 高田広章
> 名古屋大学
>
> On 2017/12/25 15:05, kaneko-nao wrote:
>> はじめまして。
>> 株式会社ヌマタと申します。弊社では次の環境で設計をしていますが、ディスパッチ部でフリーズをするという現象があります。
>>
>> OS:TOPPERS/ASP3 3.2.0
>> CPU:ルネサス RZA1/L
>>
>> slp_tsk( )で割り込み待ちをし、割り込み内で当該タスクをiwup_tsk( )で起床する、というタスクを複数作成していると、ディスパッチ部でフリーズをするという現象が発生しました。フリーズする箇所は、「core_support.s」の223行目の割り込み待ちのところです。フリーズの頻度は、数時間に1回程度で、24時間正常動作を続ける場合もあります。
>>
>> ALABEL(dispatcher_1)
>> #ifdef TOPPERS_CUSTOM_IDLE
>> toppers_asm_custom_idle
>> #else /* TOPPERS_CUSTOM_IDLE */
>> msr cpsr_c, #CPSR_SVC_MODE /* 割込みを許可(スーパバイザモード)*/
>> #endif /* TOPPERS_CUSTOM_IDLE */
>> b dispatcher_1 /* 割込み待ち */ ←ここでフリーズ
>>
>> そこで試行錯誤の結果、割り込みを1個(OSが使用するタイマ割り込みを除く)にすればフリーズしない、ということが分かりました。現在、弊社のお取引先でも、全く同じ現象のトラブルがあるとの報告を受けておりますが、過去にこのような事例についてのご対応はおありでしょうか。ご指導を賜りたく、お願いいたします。因みに、「core_support.s」は、一切変更せずに使用しています。
>>
>>