問題タブ [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.
x86 - リアルタイム クロックを取得するために、DOS からどの割り込みをフックしますか?
リアルタイム クロックを取得するには、DOS からどの割り込みをフックしますか?
exception - 割り込みと例外
私はここで例外についていくつかの質問を見てきました、そしてそれらのいくつかは例外として割り込みをほのめかします、しかしどれも接続を明確にしません。
割り込みとは何ですか?
例外とは何ですか?(いくつかの違いがあるので、あなたが知っている各言語の例外を説明してください)
例外はいつ割り込みであり、その逆はいつですか?
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 アセンブリのみです。
c - キーボード割り込みを使用して、ユーザーが入力したものとは異なるものを表示する
C言語では、キーボード割り込みを使用して、ユーザーが入力したものから代替キーを表示するにはどうすればよいですか? たとえば、キーボードで「Q」を押すと、画面に「A」が表示されます。
windows-ce - ARM ターゲットでの WinCE 6.0 の一般的な割り込みレイテンシは?
ARM ターゲットでの WinCE 6.0 の一般的な割り込みレイテンシは?
(パフォーマンス見積もりのために大まかな値を探しているだけです)
debugging - ISR でブレークポイントを使用できますか?
割り込みサービス ルーチン (ISR) でブレークポイントを使用できますか?
c - 静的グローバル変数と静的揮発変数の違いは何ですか?
ファイルスコープで静的グローバル変数と静的揮発変数を使用しましたが、
どちらも ISR とメイン ループによって更新され、メイン ループは変数の値をチェックします。
ここでは、最適化中にグローバル変数も揮発性変数も最適化されません。したがって、揮発性変数を使用する代わりに、グローバル変数が問題を解決します。
では、揮発性の代わりにグローバル変数を使用するのは良いことですか?
static volatile を使用する特定の理由??
どんなサンプルプログラムも評価できるでしょう。
前もって感謝します..
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 書き込み中のオーバーフローを防ぐのに十分な大きさです。
sockets - シグナルハンドラでソケットを閉じるにはどうすればよいですか?
Ctrl-C が押されるまで永遠にループする非常に単純なサーバーを作成しています。ctrl-c のシグナル ハンドラーで開いているソケットを閉じてサーバーをシャットダウンしたいのですが、シグナル ハンドラーのスコープがわかりません。また、ソケットを宣言するという考えも好きではありません。 (s) グローバルになるには閉じる必要があります。
誰かが提案を提供できますか?これを行う標準的な方法はありますか?
assembly - 割り込みハンドラから戻る前に、特定の例外によってスタックにプッシュされたエラー コードをポップする必要がありますか?
256 のエントリを持つ idt テーブルをロードしました。すべて同様のハンドラを指しています。
- 例外 8 および 10 ~ 14 の場合は、例外番号をプッシュします (これらの例外はエラー コードを自動的にプッシュします)。
- その他の場合は、「ダミー」エラー コードと例外番号をプッシュします。
- 次に、共通ハンドラにジャンプします
したがって、共通ハンドラーが入ると、スタックは適切に配置され、例外/割り込み番号、エラー コード (単なるダミーの可能性があります)、eflags、cs、および eip が含まれます。
私の質問は、割り込みハンドラからの復帰に関するものです。以前はiret
スタックから例外番号とエラー コードを取り出してリターンしていましたが、例外番号 8 では機能しません。スタックにエラー コードを残すと、正常に返されます。
質問:
- エラーコードをそこに置く例外のために、エラーコードをスタックに残す必要がありますか?
iret
もしそうなら、エラーコードをポップする必要があるかどうかをどのように判断しますか? - 割り込みを有効にするとすぐに、常に例外 8 (二重障害) が発生しますが、その後はすべて正常に動作します (私は趣味の OS を開発しています)。これは正常な動作ですか、それともどこかにバグがありますか?