アナログ電子回路技術者同士の交流のためのアナログ・デバイセズ提供の掲示板サイトです。
日々の回路設計活動での課題や疑問とそれらの解決、あるいはご意見やご提案などの投稿を是非お寄せください!
  トップページに戻る
 現在の総記事数
 Translation
スタッフ
 

閲覧数の多い投稿

* ランキング情報は約24時間おきに更新されます。
ポイント数が高い投稿

* ランキング情報は約24時間おきに更新されます。

アナログ電子回路コミュニティサービス終了のお知らせ

平素はアナログ電子回路コミュニティをご愛顧いただき誠にありがとうございます。

この度、アナログ電子回路コミュニティは2018年3月末日をもってサービスを終了することとなりました。それに伴いまして、本サービスへの新規会員登録は2月末日をもって締切りといたします。約10年という大変長い間、たくさんの皆様にコミュニティをご利用いただきましたこと、深く感謝申し上げます。

なお、コミュニティに掲載しているコンテンツは編集の上、アナログ・デバイセズ社のウェブサイトに随時掲載していく予定です。詳細は追って会員の皆様にお知らせいたします。

今後ともEDN Japanをご愛顧くださいますようお願い申し上げます。


アナログ電子回路コミュニティ運営事務局
* LTC製品に関するご注意
申し訳ございませんが、現時点ではリニアテクノロジー社製品についてのお問い合わせは、リニアテクノロジー社の 技術サポートページ からお問い合わせください。

スレッド一覧に戻る

ホリエ
タイトル
BlackfinのILATについて
ポイント []
pt.
アクセス3827
カテゴリーDSP
キーワード Programming Reference   At the point the interrupt is accepted   will be cleared and IPEND   Blackfin   ILAT   Powered by Yahoo
投稿日時12/08/25 13:46
別スレッドで質問中ですが、もう一つ質問させてください。

Blackfinコア(BF533コア)のILATはレベル・トリガ動作だと理解していますが、間違い無いでしょうか。

長年メンテしているソフトの割り込み処理部を見直す作業をしており、Programming Referenceを読んでいて疑問が浮かんできました。

Blackfinの内部割り込みアーキテクチャはコアもシステムもレベル・トリガと理解しています。ですから、割り込みハンドラの中では必ず割り込みソースをクリアしてssyncしなければなりません。

しかし、Programming Reference 2.0のp4-41にはこう書いてあります。

At the point the interrupt is accepted, ILAT[N] will be cleared and IPEND[N] will be set simultaneously.

これは不思議な事で、ILATはエッジ動作していることを示しています。つまり、この一文に従うならば、割り込みハンドラの中で急いで割り込み源をクリアする必要はありません。割り込みから戻ってタスクの中でゆっくりやればいいことになります。

どうもProgramming Referenceの間違いではないかと思うのですが、いかがでしょうか。

以上、質問です。

余談ですが、この質問は割り込み許可、禁止操作の見直しから来ています。BlackfinはSIC_IMASKxで割り込みを安全に禁止する方法が難しく、バグがないか再検査しているうちに上記の疑問に行き当たっています。

コメントする     


ホリエ 回答番号 8
タイトル
ありがとうございました
ポイント
pt.
アクセス3596
投稿日時12/09/23 13:05
返事が遅れたことをお詫びいたします。

ご指摘ありがとうございます。そうですね、これではっきりしたかと思います。CECはレベルトリガで動いており、ILATの自動クリアには意味がない、という認識であっているようです。

何故クリアしているのかは未だにわかりませんが、とにかく、今までの解釈を変える必要はなさそうです。

ありがとうございます。

BigBandBeat 回答番号 7
タイトル
SIC → CEC
ポイント
pt.
アクセス3638
投稿日時12/09/13 23:08
PRMの以下の記述は回答になりませんでしょうか?

When the processor services a core event, it automatically clears the requesting bit in the ILAT register and no further action is required by the interrupt service routine. It is important to understand that the SIC controller does not provide any interrupt acknowledgment feedback mechanism from the CEC controller back to the peripherals. Although the ILAT bits clear in the same way when a peripheral interrupt is serviced, the signalling peripheral does not release its level-sensitive request until it is explicitly instructed by software to do so. If the request is not cleared by software, the peripheral keeps requesting the interrupt, and the respective ILAT bit is immediately set again. This causes the processor to vector to the service routine again as soon as the RTI instruction is executed.

個人的な考えで恐縮ですが、CECに上げられた割り込みトリガは、ILATの該当ビットのクリアによってクリアされるのではなく、IPENDの該当ビットのクリア(すなわち、RTI命令の実行)によってクリアされるものと理解しています。
そして、CECに上げられた割り込みトリガとは、上の記述にあるSICからの「level-sensitive request」であり、このリクエストがソフトウェアによってクリアされていなければ、再びILATのビットがセットされ、IPENDビットのクリアと同時(直後)に再び割り込みルーチンがサービスされることになります。
これは、まさにレベルトリガの動作ではないかと思うのですがいかがでしょうか?


ホリエ 回答番号 6
タイトル
ILAT
ポイント
pt.
アクセス3675
投稿日時12/09/10 07:25
先の書き込みで"IPEND"としたところは、"ILAT"の間違いです。失礼しました。

これまでSIC/CECがレベルトリガだと理解していてそれで問題なくやっていました、ただ、「ILATを自動的にクリアする」とうPRMの表記を見て、動揺しているとういのが今の状態です。

レベルトリガであれば自動クリアには意味がありまん(というかまずい)。意味があるのなら、ソフトウェアにどのような変更を加えるべきかというのが疑問点です。

BigBandBeat 回答番号 5
タイトル
Edige Trigger / Level Trigger
ポイント
pt.
アクセス3724
投稿日時12/09/06 13:26
ご説明ありがとうございます。
しかしながら、未だ問題のキーポイントがよくわかっておりません。物分かりが悪く申し訳ないです。

ひとまず、私のわかる範囲の部分でコメントいたします。

まず、「IPENDのビットが自動的に~、自動的にクリアしている意味がわかりません(あるいは本当はクリアしていない)。」についてですが、

PRMに、以下の記述がありますように、IPENDビットは自動的にはクリアされません。
RTI命令をいつ発行するかは割り込みサービスルーチンの設計次第ですので、ある意味、IPENDをクリアするタイミングをユーザー(プログラマ)が制御できます。

When an interrupt’s service routine is finished, the RTI instruction clears the appropriate bit in the IPEND register. However, the relevant SIC_ISR bit is not cleared unless the service routine clears the mechanism that generated the interrupt.

また、文中にあるように、IPENDをクリアしたとしても、そもそもの割り込み要求であるSIC_ISRのビットは、ユーザーが明示的に要因を取り除かない限りクリアされませんので、その状態でIPENDがクリアされれば再びILATのビットが立ち、割り込みが再び入ることになります。その結果として「現実として割り込み要求のクリアは必須」となっているのだと思います。

「エッジトリガであるなら、割り込み受理前に~、これと矛盾する動作をしているようです。」についてですが、私も実験したことがないのでわかりませんが、おそらく割り込み受理前に割り込み要求がデアサートされても、ILATの当該ビットもクリアされないと思います。
「エッジトリガであるなら、矛盾する動作」ということなので、逆に言えば、「CECがレベルトリガであることがわかれば、矛盾する動作ではない」ということになり、おそらく疑問は解消されるのだろうと理解していますが、CECがレベルトリガであることを証明する方法が思いつきません。

しかし、ご指摘いただいた文章を含め、PRMの割り込みに関する記述の中で、文章が間違っている(実際のBlackfinの挙動と文章が示す挙動が異なる)ことはないように見えますし、Blackfinに変更が行われたという話も過去に聞いたことがありません。

そのため、回答に苦慮しております。

最初にご指摘いただいた文章だけを読み取ればエッジトリガを示唆していますが、SICからの割り込み要求からIPENDのクリアまでの一連の流れで見るとレベルトリガとして動作している、ということにならないでしょうか?

見当違いのコメントでしたら申し訳ありません。



ホリエ 回答番号 4
タイトル
Edige Trigger / Level Trigger
ポイント
pt.
アクセス3824
投稿日時12/09/06 07:45
そもそも論として、一本の割り込み線に複数の割り込みソースをのせようとすると、レベル・トリガにせざるを得ません。これはマイコンでは常識に類することです。

BlackfinのCECの各優先順位にはSICの複数の割り込みソースが束ねられて入力されています。不可避的にレベルトリガであるはずなのです。なので、マニュアルにある、エッジトリガを匂わす文章に首をひねっているのです。

IPENDのビットが自動的にクリアされるのなら、割り込みハンドラの中で割り込み要求をクリアしなくても済みます。現実として割り込み要求のクリアは必須ですから、自動的にクリアしている意味がわかりません(あるいは本当はクリアしていない)。

エッジトリガであるなら、割り込み受理前に複数の割り込み要求が来た場合、最初に割り込み処理した割り込み要求以外は取り落とすはずです。実際には、すべての割り込み要求をクリアするまで割り込みがかかりますから、取り落としはしていません。

エッジトリガであるなら、割り込み受理前に割り込み要求がデアサートされると、ILATの当該ビットもクリアされるはずです。実験したわけではありませんが、これと矛盾する動作をしているようです。


Blackfinの動作はCECの入力がレベルトリガであることを示唆しています。しかし、私が最初に指摘した文章はエッジトリガを示唆しています。これは文書の間違いなのか、それともBlackfinには変更が行われていて、ソフトウェアで何らかの対応をすべきなのか、というのが私の質問です。

BigBandBeat 回答番号 3
タイトル
ILATについて
ポイント
pt.
アクセス3746
投稿日時12/09/05 15:52
ホリエさんのご質問の意図をはかりかねているのですが、私の経験では、ご指摘のProgramming Referenceの記述の動作は正しい認識です。

At the point the interrupt is accepted, ILAT[N] will be cleared and IPEND[N] will be set simultaneously.

ご懸念点について、Programming Referenceの以下の記述がなにかヒントになりますでしょうか?

The Core Event Controller (CEC) has a single interrupt queueing element per event—a bit in the ILAT register. The appropriate ILAT bit is set when an interrupt rising edge is detected (which takes two core clock cycles) and cleared when the respective IPEND register bit is set. The IPEND bit indicates that the event vector has entered the core pipeline. At this point, the CEC recognizes and queues the next rising edge event on the corresponding interrupt input. The minimum latency from the rising edge transition of the general-purpose interrupt to the IPEND output assertion is three core clock cycles. However, the latency can be much higher, depending on the core’s activity level and state.



ホリエ 回答番号 2
タイトル
こんにちは
ポイント
pt.
アクセス3229
投稿日時12/09/01 14:50
コメントありがとうございます。

ただ、その場合は単なるレベルトリガと同じですね。わざわざクリアすると書いている以上、プログラマが気にしなければならない何らかの理由があると思うのですが、そこを読み取りかねています。

gyao 回答番号 1
タイトル
Blackfinは現在取り組み中ですが・・・
ポイント
pt.
アクセス3465
投稿日時12/08/30 20:26
ILATはその割込み処理が始まると一旦クリアされ、同時にIPENがセットされ、その割込み処理が終了するとIPENDはクリアされます。
と、ここまでは明確な記述がありますね。

以下は推測の領域ですが、IPENDがクリアされた段階でペリフェラル側に位置するシステム割込みコントローラ(以下、SYS)からの割込み要求がサンプリングされ、SYSからの割込み要求があればILATは再びセットされるのだろうと思います。このSYSからの割込み要求というのが、ペリフェラル側で保持されているので、ペリフェラル側の割込み要求をクリアしてやる必要があるのでしょう。

レベルトリガであるという認識は間違ってないと思いますが、ILATの前側がレベル要求状態ではありますが、ILAT自身は、その割込み処理中はレベル要求をマスクした状態になっている、ということだと思います。

以上、間違っていたら、ごめんなさいということで。

スレッド一覧に戻る



コメント投稿

* コメントの投稿にはログイン(ユーザー登録)が必要です。


タイトル

* 50文字以内
『初心者でも大丈夫!』
(記事の内容が初心者向けの場合はここにチェックをしてください。)
本文

* あと6000文字

ファイル1
ファイル2
ファイル3

* 5MBまでのGIF, JPEG, PDF ファイルが投稿できます。

* 入力に時間がかかると、セキュリティのためにログイン情報が破棄されて書き込みが処理されないことがあります。投稿内容確認ボタンを押す前に、一旦文章をクリップボードにコピー(本文入力欄をクリック後Ctrlキー+A、Ctrlキー+Cと連続で押す)して、再貼り付けできるようにしておいて下さい。

ゲスト 様
投稿する場合はログインして下さい。 初めての方はこちらからご登録ください。

お知らせ
ユーザーランキング

* ランキング情報は約24時間おきに更新されます。


  個人情報保護方針会社情報お問い合わせ

copyright(c) 2010 - 2017 ITmedia Inc.