[Suzaku:01665] Re: Linuxフリーズ時の調査方法について

菊地 義和 email@hidden
2009年 10月 28日 (水) 17:40:07 JST


yashi さま

菊地です。御世話になります。

確認してみました。

コードは次のようにしました。
 for(llpcnt=0; lpcnt<18; lpcnt++){
   for( mscnt=0; mscnt<(18*9+1)*5; mscnt++ )   {    ←ここが
    tmp = ioread32( adr );                       ←問題の
    if( tmp == 0){                                   ←箇所
     break;                                          ←です。
    }                                                   ←
    udelay(192);                                    ←この時間に注意
   }                                                     ←
   {
    tmpとlpcntの関係による条件分析と表示
     (if文とprintk文による状態3バイト表示)
   }
   条件ごとの実施したい処理
 }

上記「←ここが」のfor文から抜けないように見えます。

コードイメージに「この時間に注意」と書きましたが
その設定時間が短いと停止してしまうように感じました。

「ioread32( adr )」は余り短い間隔で呼び出すことは
よくないのでしょうか。

アドバイス宜しくお願いします。

以上


----- Original Message ----- 
From: "菊地 義和" <email@hidden>
To: "Yasushi SHOJI" <email@hidden>
Cc: "SUZAKU general discussion list" <email@hidden>
Sent: Wednesday, October 28, 2009 9:56 AM
Subject: [Suzaku:01664] Re: Linuxフリーズ時の調査方法について


> yashi さま
>
> 菊地です。おはようございます。
> 夜遅くにお返事をくださいまして、ありがとうございます。
>
>> おぉ!! じゃぁ、確定じゃないですか?
>
> というと、「置き換えたところがよくない」ということですか。
> 症状はよくなった気がしますが、フリーズしている
> (While文から抜けない)ことは変わらない様に見えます。
>
> コードは次のようにしております。
>   for(llpcnt=0; lpcnt<18; lpcnt++){
>      tmp = ioread32( adr );     ←ここが
>      while( tmp < lpcnt ){      ←問題の
>       tmp = ioread32( adr );   ←箇所
>      }                  ←です。
>        {
>      tmpとlpcntの関係による条件分析と表示
>       (if文とprintk文による状態3バイト表示)
>        }
>     条件ごとの実施したい処理
>     }
>
> この「tmp = ioread32( adr );」がよくない、
> と思ってしまいました。
> これで「どうして」、と思ってます。
>
>>> for (i=0; i<10; i++) {
>>>     if (registor_changed) {
>>>         break;
>>>         gotit = 1;
>>>     }
>>>     mdelay(1);
>>> }
>>
>> にしてみるとか。
>
> 条件が変化するのが約9msec毎、18回です。
> それに合わせて実装してみます。
>
> また、報告いたします。
>
> 以上
>
> ----- Original Message ----- 
> From: "Yasushi SHOJI" <email@hidden>
> To: "菊地 義和" <email@hidden>
> Cc: "SUZAKU general discussion list" <email@hidden>
> Sent: Tuesday, October 27, 2009 10:46 PM
> Subject: Re: [Suzaku:01658] Re: Linuxフリーズ時の調査方法について
>
>
>> At Tue, 27 Oct 2009 21:04:48 +0900,
>> 菊地 義和 wrote:
>>>
>>> > IPのレジスタが memory map されているってことですよね? これ cache され
>>> > るってことはないですか?
>>>
>>> ioremap_nocache()で取得したアドレスを
>>> ioread32()を使って読取ればキャッシュはされない、
>>> と思っていますが、よいでしょうか。
>>
>> たぶん。(^^;
>>
>>> > 1 秒毎に、FPGAへの readが 発生しているのは確認されていますか?
>>>
>>> 確認しておりません。
>>> 1秒毎といっているのは、時簡に1secを設定しているためでしょうか。
>>> また、確認の方法を教えていただけると助かります。
>>
>> あ、ごめんなさい。time out が 1秒でしたね。wait...は、scheduleされるたびに 
>> 
>> 調べるはずなので、何度か見にいくはずです。
>>
>>> >> なるほど。wait_event_interruptible_timeout()ですとそういう可能性がある わけですね。
>>> >> そうすると、これを使わない方法も考えられますので、試してみます。
>>> >
>>> > いや、そういう訳ではなく、sleepするってそういう事です。
>>>
>>> いや、なんとも。。。そうですね、「可能性」ではないですよね。
>>>
>>> ここの待ち時間は9msec程度です。
>>>
>>> ためしに、while文での処理に置き換えてみましたが、
>>> wait_eventと同じような現象が発生し、while文から抜けて
>>> こないように見えます。
>>
>> おぉ!! じゃぁ、確定じゃないですか?
>>
>>> for (i=0; i<10; i++) {
>>>     if (registor_changed) {
>>>         break;
>>>         gotit = 1;
>>>     }
>>>     mdelay(1);
>>> }
>>
>> にしてみるとか。
>> -- 
>>           yashi
>
> _______________________________________________
> suzaku mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/suzaku 




suzaku メーリングリストの案内