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

koizumi yoshiyuki koizumiyoshiyuki @ gmail.com
2012年 8月 5日 (日) 16:20:01 JST


こいさんです。

いつもお世話になっています。SSP1.1.1のCortex-M3版の割り込み処理で解からないことがあります。

cq_starm_gcc版を見ています。

1 exc_entryから戻り処理(149行 b ret_exc)は正しいでしょうか。
ret_excは周辺IOからの割り込みで、多重割り込みを処理する為のintnest変数を加減算しています。
exc_entryはプロセッサ関連の処理でintnest変数は処理していません。このままだと、プロセッサ割り込みが発生した後、ret_excが実行されると、辻褄の合わないことになりそうです。
現状では、プロセッサ周りの割り込みから戻る処理は検証されていないのかも知れません。

2 int_entry_2の188行 push  { r3 } は不要だと思われる。
ここは単にデバッグされていないだけだと思います。push  { r3 } 動作に使用する割り込みログ周りはソースがありませんでした。

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

1,2はデバッグされれば修正されると思いますが、3は私の認識に抜けがあるのかも知れません。どなたかご教授願えればと思います。

以上
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/users/attachments/20120805/d29e9aad/attachment.html>