問題タブ [rtos]
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 - ダイナミックC/Rabbit上のMicriumuC-OS/II-タスクが不足している可能性があります
Micrium uC-OS/IIのDynamicCで2つのタスクを実行しようとしています。1つのタスクはhttpハンドラーで、もう1つはシリアルポートから読み取ります。シリアルポートタスクは、httpタスクの実行を妨げているようです。これがなぜであるかについて何か考えはありますか?uC-OS/IIは先見の明があると思いました。
両方のスレッドが同じデフォルトの優先度に設定されています。
linux-kernel - スピンロックとCLIを一緒に使用する
最近、Linuxソースをhttp://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.1.tar.bz2からダウンロードしました。linux-2.6.34.1\Documentationフォルダーにあるspinlocks.txtというファイルで以下の段落に出くわしました。
「それは、あなたがそうするコードを持っているなら、それは意味します
そして、それを行う別のシーケンス
その場合、それらは相互に排他的ではなく、クリティカル領域は2つの異なるCPUで同時に発生する可能性があります。それ自体は問題ありませんが、クリティカル領域はさまざまなものに対してクリティカルである方がよいでしょう(つまり、互いに踏みつけることはできません)。「」
一部のコードがcli()/ sti()を使用していて、同じコードの他の部分がspin_lock_irqsave(flags)/ spin_unlock_irqrestore(flags)を使用している場合、どのように影響しますか?
operating-system - RTOSのプロセス制御ブロックの種類は何ですか?
優先度ベースのプリエンプティブスケジューラを使用するRTOSを設計しています。PCBには何が含まれますか?私はこれらのアイテムを思い付くことができただけです
1)PID 2)優先度3)プログラムカウンター4)ステータスレジスタ5)いくつかのフラグ
期限も含める必要がありますか?または他のフィールド
embedded - 組み込みプロジェクトに RTOS の使用を検討する理由は何ですか?
まず背景、私の質問の詳細は次のとおりです。
私が取り組んでいるプラットフォームで働いている会社では、現在、開発環境として MPLAB IDE を使用している Microchip PIC32 ファミリを使用しています。以前は、この同じアプリケーション用に、Microchip dsPIC および TI MSP ファミリ用のファームウェアも作成しました。ファームウェアは、コードがデバイス制御、データ サンプリング、およびユーザー通信 (通常はユーザー PC) の 3 つの主要モジュールに分割されているという点で非常に単純です。デバイス制御は、GPIO バス ラインと、SPI または I2C 制御を必要とする少なくとも 1 つのパーツの組み合わせによって実現されます。データ サンプリングは、タイマ モジュールを使用してサンプリング周波数を維持し、さらに SPI/I2C および GPIO バス ラインを使用してサンプリング ハードウェア (つまり、ADC) を制御する割り込み駆動です。ユーザー通信は現在、Microchip App Framework を使用して USB 経由で実装されています。
ここで質問があります。上記で説明したことを考えると、どの時点で自分のプロジェクトに RTOS を採用することを検討しますか? 現在、RTOS を使用する理由として、これらの可能性のあるトリガー ポイントを考えています。
- コードの複雑さ? コードベースのアーキテクチャ/組織はまだ小さいので、すべての詳細を頭の中に入れておくことができます。
- マルチタスク/スレッディング? 割り込みによるモジュール実行のタイムスライスは、現時点ではマルチタスクで十分です。
- テスト? 現在、正式なテストや HW スモーク テスト以降の検証はあまり行っていません (これは近い将来に修正したいと考えています)。
- コミュニケーション? 現在、カスタム パケット形式とプロトコルを使用しており、データはバイナリ BLOB であり、START、STOP、SEND DATA コマンドのみを実行します。
- プロジェクト範囲? 近い将来、システムを大量生産することを目標に、デバイスをより大きなシステムに統合するプロジェクトを取得する可能性があります. 現在、私たちのすべてのプロジェクトは、一度に 1 つか 2 つのユニットを生産する、約 1 か月の短いターンアラウンドの実験的プロトタイプです。
他にどのような点を考慮する必要があると思いますか? あなたの経験では、ベース ランタイムでコードを実行するだけでなく、RTOS の使用を検討するよう説得した (または強制した) 理由は何ですか? RTOS の設計/プログラミングに関する追加リソースへのポインタも大歓迎です。
embedded - 組み込み RTOS タスク間でメッセージを渡すための適切な方法 (ただし、メッセージのタイムアウトを適切に処理できます)
私は組み込み RTOS (CMX) を使用していますが、これはどの組み込み RTOS にも当てはまると思います。さまざまなタスク間でメッセージを渡したい。問題は、1 つのタスクが他のすべてのタスクを長期間 (数秒) 'ロック' することがあります。
約 100 ミリ秒後にメッセージが ACK されるのをもう待たないので、この間にメールボックス メッセージを送信すると、メッセージを送信したタスクは応答を待機しなくなりますが、受信タスクはメッセージに基づいて行動してみてください。問題は、受信タスクがメッセージへのポインターを持っていることですが、送信タスクが移動したため、ポインターがメッセージを指しなくなり、大きな問題を引き起こす可能性があります。
キューに入ったメッセージを削除する方法はありません。このエラーを適切に処理するにはどうすればよいですか?
c - 多対1のゲートキーパータスクの同期
ゲートキーパータスクを使用して共有リソースにアクセスする設計に取り組んでいます。私が今持っている基本的な設計は、ゲートキーパータスクが受信している単一のキューと、それに要求を入れる複数のタスクです。
これはメモリが制限されたシステムであり、FreeRTOS(Cortex M3ポート)を使用しています。
問題は次のとおりです。これらの要求を非同期的に処理するのはかなり簡単です。要求元のタスクは要求をキューに入れ、ビジネス、ポーリング、処理、または他のイベントの待機を行います。これらのリクエストを同期的に処理するには、リクエストが処理されると、ゲートキーパーがそのリクエストを呼び出したタスクをウェイクアップできるように、リクエストするタスクがブロックするメカニズムが必要です。
私が考えることができる最も簡単な設計は、各リクエストにセマフォを含めることですが、メモリの制限とFreeRTOSのセマフォのサイズがかなり大きいことを考えると、これは実用的ではありません。
私が思いついたのは、タスクの一時停止とタスクの再開機能を使用してタスクを手動でブロックし、要求が完了したときにタスクを再開できるゲートキーパーにハンドルを渡すことです。ただし、サスペンド/レジュームにはいくつかの問題があり、私はそれらを避けたいと思っています。1回の再開呼び出しは、他の呼び出しによって何度中断されてもタスクをウェイクアップし、これにより望ましくない動作が発生する可能性があります。
一時停止/再開方法を示すためのいくつかの単純な疑似C。
当面使用する予定の回避策は、非同期呼び出しを使用し、各要求タスクに完全にブロッキングを実装することです。ゲートキーパーは、操作が完了すると、提供されたコールバックを実行します。その後、タスクのメインキューや特定のセマフォ、または必要なものにポストできます。リクエストのブロック呼び出しを行うことは本質的に便利な機能であるため、各リクエストタスクはこれを実装する必要はありません。
タスク固有のブロッキングを示すための疑似Cですが、これは各タスクに実装する必要があります。
おそらく最善の解決策は、ゲートキーパーとAPIにブロッキングを実装せず、各タスクにそれを処理させることです。ただし、これにより各タスクのフローが複雑になり、回避できると期待していました。ほとんどの場合、すべての呼び出しは、操作が終了するまでブロックする必要があります。
私が見逃しているいくつかの構造、または私がグーグルできるこのタイプの問題のより良い用語はありますか?私の検索では、このようなものは見つかりませんでした。
追記-ゲートキーパータスクの2つの理由:
大きなスタックスペースが必要です。この要件を各タスクに追加するのではなく、ゲートキーパーは、必要なすべてのメモリを備えた単一のスタックを持つことができます。
リソースはCPUで常にアクセスできるとは限りません。CPU内のタスクだけでなく、CPU外のタスクも同期しています。
c - vxworksでソケット記述子のステータスを見つける方法
vxworksのソケット記述子を使用してリモートエンドのステータスを確認するにはどうすればよいですか。TCP接続を使用しています。
embedded - arm9にuCosをインストールする方法[mini2440]
私は組み込みプログラミングに非常に慣れていません。私の最初のプロジェクトは、mini2440 [arm9]にuCosをインストールすることです。私のような初心者がarm9にuCosをインストールするためのチュートリアルはありますか?
最初に感謝します:)
android - Android OS カーネル関連のクエリ
Android のカーネルに関するケーススタディを書きたいと思っていました。これは、高度なオペレーティング システム クラスのカリキュラムの一部です。私が望んでいた主な焦点は、プライオリティ キューがどのように RTOS に実装されているかを実際に実装して、クラスで学習した理論に関連付けることでした。しかし、ただ素晴らしいアイデアを思いつくだけでなく、情報を見つけることは本当に大きな仕事だということを知りました。:(だから今のところ、私は自分自身を1.非常に具体的なカーネル(プロセスまたはメモリのいずれか)または2.AndroidとLinux OSの違いのいずれかに制限したいと思います。しかし、与えられたデータは私の教科書でも見ることができます. 私が欲しかったのは実際的な違いでした.
方向性についての指針が得られることを願っています。
c - uC-OS/II で USB メモリ スティックからファイルを読み書きする
ARMプロセッサとmicrium RTOSを搭載したボードがあります。USB メモリ スティックからファイルを読み書きする必要があります。たとえば、ファイルの名前を変更する標準関数は次のとおりです-
USBメモリスティック上のファイルを指すためにsExistingNameに書き込む必要があるパスはどれですか?