(toppers-users 4713) Re: TOPPERS/ASP3ディスパッチ部におけるフリーズについて

kaneko-nao kaneko-nao @ numata.co.jp
2017年 12月 26日 (火) 10:21:17 JST


名古屋大学
高田広章 様

何度も失礼いたします。株式会社ヌマタです。

先ほど、「フリーズ状態になると、そのアドレスで固まってしまい、ICEでも、
ステップ実行すらできない状況です。」と表現しましたが、これはディスパッチャ内で 

フリーズした場合であり、アイドルタスクを設けた場合は、そのアイドルタスク内を
ループしている状況です。誤解を招く表現でしたので一部訂正いたします。
但し、前述の通り、割り込みは、受け付けません。

以上、よろしくお願いいたします。

株式会社ヌマタ



名古屋大学
高田広章 様

ご連絡、ありがとうございます。株式会社ヌマタです。

>質問を変えさせてください。ここで「フリーズする」というのは,無限
>ループから抜けてこなくなるということだと思うのですが,その時に,
>割込みも発生していないということでしょうか?

割り込みは、タイマ周期割り込みや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」は、一切変更せずに使用しています。
>>
>>