問題タブ [interrupt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2032 参照

x86 - リアルタイム クロックを取得するために、DOS からどの割り込みをフックしますか?

リアルタイム クロックを取得するには、DOS からどの割り込みをフックしますか?

0 投票する
11 に答える
23195 参照

exception - 割り込みと例外

私はここで例外についていくつかの質問を見てきました、そしてそれらのいくつかは例外として割り込みをほのめかします、しかしどれも接続を明確にしません。

  • 割り込みとは何ですか?

  • 例外とは何ですか?(いくつかの違いがあるので、あなたが知っている各言語の例外を説明してください)

  • 例外はいつ割り込みであり、その逆はいつですか?

0 投票する
2 に答える
5395 参照

macos - Mac OS X Intel で浮動小数点割り込みを有効にする

Linux では、fenableexcept と fedisableexcept を使用して、浮動小数点例外での SIGFPE 割り込みの生成を制御できます。Mac OS X Intel でこれを行うにはどうすればよいですか?

浮動小数点割り込みを有効にするインライン アセンブリは、http: //developer.apple.com/documentation/Performance/Conceptual/Mac_OSX_Numerics/Mac_OSX_Numerics.pdf の 7-15 ページで提供されていますが、PowerPC アセンブリのみです。

0 投票する
2 に答える
2142 参照

c - キーボード割り込みを使用して、ユーザーが入力したものとは異なるものを表示する

C言語では、キーボード割り込みを使用して、ユーザーが入力したものから代替キーを表示するにはどうすればよいですか? たとえば、キーボードで「Q」を押すと、画面に「A」が表示されます。

0 投票する
1 に答える
1540 参照

windows-ce - ARM ターゲットでの WinCE 6.0 の一般的な割り込みレイテンシは?

ARM ターゲットでの WinCE 6.0 の一般的な割り込みレイテンシは?

(パフォーマンス見積もりの​​ために大まかな値を探しているだけです)

0 投票する
3 に答える
8193 参照

debugging - ISR でブレークポイントを使用できますか?

割り込みサービス ルーチン (ISR) でブレークポイントを使用できますか?

0 投票する
7 に答える
97879 参照

c - 静的グローバル変数と静的揮発変数の違いは何ですか?

ファイルスコープで静的グローバル変数と静的揮発変数を使用しましたが、

どちらも ISR とメイン ループによって更新され、メイン ループは変数の値をチェックします。

ここでは、最適化中にグローバル変数も揮発性変数も最適化されません。したがって、揮発性変数を使用する代わりに、グローバル変数が問題を解決します。

では、揮発性の代わりにグローバル変数を使用するのは良いことですか?

static volatile を使用する特定の理由??

どんなサンプルプログラムも評価できるでしょう。

前もって感謝します..

0 投票する
4 に答える
3914 参照

c - 非常にメモリに制約のある組み込みシステムで大規模なデータ転送をどのように処理しますか?

PC シリアル ポート (115200 ボー) から大きなファイルをダウンロードし、SPI (~2 MHz) 経由でシリアル フラッシュ メモリに書き込む必要があるマイクロコントローラーがあります。フラッシュ書き込みは、書き込みコマンドとページ アドレスが先行する 256 バイト ブロック内にある必要があります。システムで使用可能な RAM の合計は 1 kB で、スタック サイズは 80 バイトです。

これは現在、UART から 256 バイト バッファを埋めてから、別の 256 バイト バッファにピンポンすることで機能しており、フラッシュがビジー書き込みで書き込まれている間に、RX バッファ準備完了信号の割り込みによって埋められています。バッファのスワッピングは、操作が完了するまで繰り返されます。

個別の循環バッファーで動作する SPI ポートと UART ポートの両方に TX/RX 割り込みハンドラーをセットアップすることをお勧めします。したがって、新しいバイトをポーリングして操作が完了するのを待つ代わりに、単純に TX バッファーを埋めて割り込みを有効にするか、着信データのバッファーをチェックすることができます。これにより、周辺機器を待機する代わりに、実際の作業により多くのクロック サイクルが提供されます。

128 バイトの循環バッファーを使用して IRQ を実装した後、UART RX バッファーでデータをポーリングし、すぐにそれを SPI TX バッファーに配置してファイル転送を行います。このアプローチで私が抱えている問題は、バッファ用に十分な RAM がなく、データをフラッシュ送信バッファに転送するよりも早く PC 受信バッファがいっぱいになることです。明らかに、転送速度は問題ではありません (入力 115.2 kHz、出力 2 MHz) が、256 バイトのページが送信されるたびに書き込みサイクルの待機が発生します。


頻繁な SPI 割り込みが UART 割り込みの一部をブロックし、バイトが失われているようです。私が選択した解決策は、UART 受信割り込みにリング バッファーを使用し、データを 256 バイトのページ バッファーにフィードすることでした。このページ バッファーは、バイト転送と書き込み完了をポーリングすることによってシリアル フラッシュに送信されます。128 リング バッファは、SPI 書き込み中のオーバーフローを防ぐのに十分な大きさです。

0 投票する
2 に答える
10048 参照

sockets - シグナルハンドラでソケットを閉じるにはどうすればよいですか?

Ctrl-C が押されるまで永遠にループする非常に単純なサーバーを作成しています。ctrl-c のシグナル ハンドラーで開いているソケットを閉じてサーバーをシャットダウンしたいのですが、シグナル ハンドラーのスコープがわかりません。また、ソケットを宣言するという考えも好きではありません。 (s) グローバルになるには閉じる必要があります。

誰かが提案を提供できますか?これを行う標準的な方法はありますか?

0 投票する
4 に答える
4604 参照

assembly - 割り込みハンドラから戻る前に、特定の例外によってスタックにプッシュされたエラー コードをポップする必要がありますか?

256 のエントリを持つ idt テーブルをロードしました。すべて同様のハンドラを指しています。

  • 例外 8 および 10 ~ 14 の場合は、例外番号をプッシュします (これらの例外はエラー コードを自動的にプッシュします)。
  • その他の場合は、「ダミー」エラー コードと例外番号をプッシュします。
  • 次に、共通ハンドラにジャンプします

したがって、共通ハンドラーが入ると、スタックは適切に配置され、例外/割り込み番号、エラー コード (単なるダミーの可能性があります)、eflags、cs、および eip が含まれます。

私の質問は、割り込みハンドラからの復帰に関するものです。以前はiretスタックから例外番号とエラー コードを取り出してリターンしていましたが、例外番号 8 では機能しません。スタックにエラー コードを残すと、正常に返されます。

質問:

  • エラーコードをそこに置く例外のために、エラーコードをスタックに残す必要がありますか? iretもしそうなら、エラーコードをポップする必要があるかどうかをどのように判断しますか?
  • 割り込みを有効にするとすぐに、常に例外 8 (二重障害) が発生しますが、その後はすべて正常に動作します (私は趣味の OS を開発しています)。これは正常な動作ですか、それともどこかにバグがありますか?