(toppers-users 4023) Re: Cortex-M3のSSP1.1.1の割り込みまわりで解からないことがあります。

Shinya Honda honda @ ertl.jp
2012年 8月 19日 (日) 22:51:22 JST


本田です.

返答が遅くなり申し訳ありません.

SSPの担当ではないですが,元になったASPのARM_M依存部を担当しています.

(2012/08/05 16:20), koizumi yoshiyuki wrote:
> こいさんです。
> 
> いつもお世話になっています。SSP1.1.1のCortex-M3版の割り込み処理で解からないことがあります。
> 
> cq_starm_gcc版を見ています。
> 
> 1 exc_entryから戻り処理(149行 b ret_exc)は正しいでしょうか。
> ret_excは周辺IOからの割り込みで、多重割り込みを処理する為のintnest変数を加減算しています。
> exc_entryはプロセッサ関連の処理でintnest変数は処理していません。このままだと、プロセッサ割り込みが発生した後、ret_excが実行されると、辻褄の合わないことになりそうです。
> 現状では、プロセッサ周りの割り込みから戻る処理は検証されていないのかも知れません。
ASPはintnet変数は存在していません.SSPのコードは理解していないので,チ
ケットを発行しました.

SSPの担当の方お願いします.


> 2 int_entry_2の188行 push  { r3 } は不要だと思われる。
> ここは単にデバッグされていないだけだと思います。push  { r3 } 動作に使用する割り込みログ周りはソースがありませんでした。
192行目でpushしているので,必要ないですね.こちらもチケットを発行しました.


> 3 ret_excに記述されているコメントの言いたいことは理解できましたが、
>今回の実装で、コメントのようなことが発生するのでしょうか。
>割り込み処理から戻りは254行の bx r2 と、303行の bx r2
>の2箇所だと思います。何れも直前でbasepriに割り込んだ時保存した値を戻し
>てます。
>尚、303行では0を書き込んでいますが、ここから戻る場合は必ず0のはずでの
> で、実質保存した値をかき戻すことと同じですね。
>よって「cpsid f」ではなく、「bsepriをCPUロックの値」にしても、
>「basepri の設定内容は元に戻らないため」と言うことにはならにと思ってい
> ます。
> (プロセッサの割り込みの終了処理が一緒になっていることに理由があるのか
> も知れません)
「basepri の設定内容は元に戻らないため」は,1行上の文とまとめて意味があ
ります.

「割込みからリターンしてもbasepri の設定内容は元に戻らないため」

です.このため,FAULTMASKを使って割込みロック状態としています.

以上,よろしくお願いします.