問題タブ [safety-critical]
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.
c - タスクコンテキストを割り込みに入れない理由
これが話です。
これは安全性が重要なプロジェクトであり、タイム クリティカルな機能ルーチンを 20KHz で実行する必要があります。現在、機能ルーチンを 20KHz FIQ 割り込みに配置し、安全割り込みも FIQ に配置するように設計されています。システム内の FIQ は 2 つだけです。(確かに、MCU で有効になっている IRQ がいくつかあります)
タスク コンテキストを割り込み ISR に配置するのは良くないことはわかっています。これは、OS タスクでマークを設定して実行するための適切な方法です。しかし、現在の設計は誰にも害を及ぼさないようです。
このルーチンは約 10us (メイン クロック 300MHz) かかるため、基本的に、許容できない時間に対して IRQ/FIQ をブロックしません。OSタスクを使用して機能ルーチンを実行する場合と比較して、余分なコンテキストスイッチの時間を節約できます. 私にとって、現在のデザインは大学の教科書に書かれているすべての原則に反しているように感じますが、それを否定する理由が見つかりません.
機能ルーチンを ISR から OS に移行するにはどうすればよいでしょうか? するべきか?
c++ - 安全性が重要なシステムでの C++17 のテスト
私は現在、セーフティ クリティカルなソフトウェア (DO-178C DAL-D) での C++ とコーディング標準の定義について考えています。MISRA C++ を見ていましたが、これも 10 年前のもので、C++11 から 17 のすべての機能がありません。
多くの場合、安全性に関して保守的であることは悪い考えではありませんが、新しい言語機能は安全性に役立つ可能性があります。
レビューでは、特定の決定を下した理由について議論する必要があります。そして、新しい言語機能によってコードがより明確になると常に主張できます…したがって、誤解に関するエラーが少なくなります。特に、コンパイラが仮定をテストおよび検証できる場合。
しかし、「物事を明確にする」以上に安全面を強調する言語機能を見つけるのは困難です。安全性に関して、最新の C++ のどの側面が実際に役立つのでしょうか?
私はこれらのアイデアをテストするための小さな演習プロジェクトを立ち上げており、現在は「コンパイラに仮定をチェックさせる」ことに完全に集中しています。たとえば、使用[[nodiscard]]
を開始したばかりで、この方法で最初の 1 時間以内に少なくとも 2 つのバグを発見しました。しかし、最新の c++ のどの側面が設計され、安全性を考慮して使用されるのでしょうか?
exception-handling - セーフティ クリティカルな組み込みシステムにおける Ada の例外
安全性が重要な組み込みデバイスでの使用の可能性について、Ada の学習を開始しました。これまでのところ、私はそれが本当に好きです。しかし、組み込みプログラミングに関する私の研究で、組み込みシステムで例外処理を使用するかどうかというホットな話題に出くわしました。一部の人々がそれを避けているように見える理由を理解していると思います:
- その実装に応じて、実行時のオーバーヘッドまたはより大きなコードサイズのいずれかが導入される可能性があります (ここで「実装」の下で説明されています) 。
- 例外の実行にかかる時間は非決定論的である可能性があります(私が見たいくつかのソースの1つ)
ここで私の質問は、Ada 言語または GNAT コンパイラはこれらの問題に対処していますか? セーフティ クリティカル コードに関する私の理解では、非決定論的なコード サイズと実行時間は受け入れられないことが多いということです。
デューデリジェンス: Ada の例外がどの程度決定論的であるかを正確に把握するのに少し苦労していますが、私の理解では、元の実装では、コードサイズの影響を減らす代わりに、実行時のオーバーヘッドを増やす必要がありました (上記の最初のリンクでは、Ada が明示的に言及されています)。上記の最初のリンクを超えて、Ravenscar プロファイルやこの論文など、コードの決定論に言及しているプロファイルを調べましたが、例外処理の決定論に言及しているものはないようです。公平を期すために、このトピックは非常に深いように見えるため、間違った場所を探している可能性があります。