問題タブ [freertos]
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 - FreeRTOS のキューの配列に関する問題
FreeRTOS アプリケーションを構築しています。別のモジュールから freeRTOS キュー ハンドルを登録するモジュールを作成しました。このモジュール モジュールで割り込みが発生すると、登録されているすべてのキューにメッセージが送信されます。しかし、キューからメッセージを送信することはできますが、他のモジュールでは受信できないようです。
これが私のコードです。
リモートモジュール:-
登録モジュールはこちら
いくつかのポイント:-
- xQuehandle は「void *」にタイプ定義されています
- コードは、登録を削除し、extern でポインターを取得した場合に xQueueSendFromISR のキューのポインターを直接処理する場合に機能します。
アドバイスや情報が必要ですか?
avr-gcc - USARTからの入力を取得できません-FreeRTOS-AT32UC3A0512
FreeRTOSを試してみてください。以下は私の設定です-
- マイクロコントローラー-AT32UC3A0512
- ボード-EVK1105
- FreeRTOSの使用
- 環境-ASF最新2.3フレームワークを備えたAVRStudio5
サンプルプロジェクトFreeRTOSから新しいプロジェクトを作成しました。現在USARTをチェックしています。サンプルプロジェクトを実行すると、USARTを介して開発ボードからPCに文字を送信できますが、PCのusartターミナルプログラム(Puttyを使用)で何かを入力または入力すると、何も表示されません。誰かが何が間違っているのか提案できますか?または、USARTのターミナルプログラムで入力と表示を行うために、現在のサンプルコードのコードを変更する必要がありますか?
ありがとう...
exception-handling - XP 上の MinGW でのメモリアクセス例外処理
XP で MinGW GCC ツールチェーンを、XP の「民間」プロセスで許可されている仮想メモリ アドレス空間を超える高メモリ (>0xFFFF0000) にアクセスする組み込みプロジェクトのベンダー コードで使用しようとしています。
例外の次の命令で実行を続行できるようにする、つまり無視する何らかの方法でメモリアクセス例外を自分で処理したいと考えています。MinGWでそれを行う方法はありますか? またはMSツールチェーンで?
したがって、非常に単純化された図は次のとおりです。
詳細: AVR32-gcc ツールチェーンを使用して、freeRTOS を備えた Atmel AVR32 プラットフォームで組み込みプロジェクトを開発しています。ハードウェア (および低速の avr32 シミュレーター) に依存しない高レベルのアプリケーション コードを開発/デバッグすることが望ましいです。さまざまな gcc、makefile、およびマクロ トリックにより、Avr32/freeRTOS プロジェクトを MinGW/Win32 freeRTOS ポート環境でビルドし、eclipse/gdb でデバッグできます。ただし、(ベンダーが提供する) Avr32 コードでの高メモリー HW アクセスは、MinGW exe をクラッシュさせます (メモリー アクセス例外が原因で)。
私はこれらのアプローチのいくつかの組み合わせを考えています:
1) SW でアクセス例外を管理します。理想的には一種の HW シミュレーターを作成したいのですが、それは難しく、危険なアセンブリ コードが必要になると思います。多くの例外はおそらく無視できます。
2) Avr32 ヘッダー ファイルの変更されたコピーを作成して、HW レジスタ #defines をユーザー プロセス アドレス空間に再配置します (そして、仮想メモリ空間のそれらの領域をコミットするいくつかの構造体とリンカー セクションを作成します)。
3) 「実際の」HW ターゲット コードでのコード クラフトを最小限に抑えるために、高メモリ/HW アクセス、または代わりにより多くのマクロ トリックをもたらす関数呼び出しの条件付きコンパイル。(このプロジェクトには他の開発者がいます。)
提案や役立つリンクをいただければ幸いです。
このページは正しい方向に進んでいますが、非常に複雑に思えます。また、避けたい C++ です。しかし、他の提案がなければ、まだ試してみるかもしれません. http://www.programmingunlimited.net/siteexec/content.cgi?page=mingw-seh
avr - USART受信用にFreeRTOSで新しいタスクを作成する
AVRプロジェクトの開発IDEとしてAVRStudio5でEVK1105開発ボードを使用しています。FreeRTOSを使用しています。このボードには3つのUSARTポートがあります。1つの外部モジュールがUSART-RS232モードを介してAVR32ボードに接続されています。それは、19230ボーレート、7データビット、奇数パリティ、ストップビット1、および通常チャネルモードでUSART0上のボードに連続シリアルデータを送信します。この目的のために新しいタスクを作成しました。9データバイトごとに、「\n」と「\r」を送信します。そのため、私のタスクでは、文字列バッファに9データバイトを収集し続け、それをUSART1で送信します。受信ポートであるUSAR0からデータを収集するためにポーリング方式を使用しています。しかし、私はデータの受信で問題に直面しています。タイミングの問題なのか、データ収集中にスケジューラーがタスクを切り替えるのかわかりません。しかし、必要なデータが得られません。
トラブルシューティングとしてすでに確認したことは次のとおりです。1。外部モジュールをPCハイパーターミナルに接続すると、完璧な結果が得られます。2. USART0からの受信を使用するのと同じことを実装し、受信したものはすべてFreeRTOSを使用しない場合と同じようにUSART1に送信されます。それはうまくいきます。
何が間違っているのか考えてみてください。キューを使用してTxタスクとRxタスクの間で通信し、USART0からUSART1に文字列バッファを渡します。キューの処理に問題がありますか?キューのトラブルシューティングを行うにはどうすればよいですか?
RxTaskの無限タスクループで50msの遅延を使用しています。問題が発生する可能性はありますか?遅延を使用しないと、OSがクラッシュします。タイミングの問題が発生しないように、FreeRTOSで新しいタスクを作成するためのいくつかの良い方法を提案してください。
c - FreeRTOS、Eclipse IDE、および構文エラー
Eclipse で FreeRTOS コードを処理するときに少しイライラします。それが私だけなのか、他の人もこの問題を抱えているのかはわかりませんが、コードで強調表示されている多くの構文エラーが表示されますが、正常にコンパイル/実行されます。構文エラーは、次のような FreeRTOS 固有のコードが原因のようです。
また
また
この構文を適切に解析するように Eclipse を構成する方法があるかどうか疑問に思っていました。
c - メインに入る前でも、リセット割り込みベクタSYSRSTIVが001Eh(ペリフェラル/コンフィギュレーションエリアフェッチ-PERF)に設定されている
メインに入る前でも、リセット割り込みベクタSYSRSTIVは001Eh(ペリフェラル/コンフィギュレーションエリアフェッチ-PERF)に設定されています。なぜこうなった?
使用されるcstartup.s43ファイル
freertos - xtaskcreate-取得エラー
こんにちは、Tux Racer ゲーム アプリケーション (MSP430BT5190 ターゲット ボード) 用のデバッグ インターフェイス (PC の USB に接続) に接続された EZ430-RF2560T ターゲット ボードに取り組んでいます。私は加速度計のアプリケーション コードに取り組んでいます。Bluetooth をオンにすると、関数
xTaskCreate((pdTASK_CODE) user_task_routine, (const signed portCHAR *)USER_TASK_NAME, USER_TASK_STACK_SIZE, (unsigned portLONG *)NULL, (unsigned portBASE_TYPE)USER_TASK_PRIORITY, ( xTaskHandle *) NULL);
何ができるか教えてください.......... アシュウィンありがとう
avr - 英数字 4x3 キーパッドを C でコーディングする方法
現在、次のセットアップを持つプロジェクトに取り組んでいます。
- AVR マイクロコントローラ
- IDE - AVRスタジオ
- オペレーティング システム - FreeRTOS
入力には、4x3 のキーパッド マトリックスを使用しています。入力を数値として受け取るように、4x3 キーパッドを既にコーディングしています。しかし、今は英数字にしたいと思っています。携帯電話のキーパッドに見られるように。
例 - キー 2 は、2、a、b、c の入力を取得するために使用されます。キー 2 を 1 回押すと番号 2 が表示され、キー 2 を 2 回押すと「a」が表示され、キー 2 を 3 回押すと「b」が表示され、キー 2 を 4 回押すと「d」が表示されます。
上記の意味を理解していただければ幸いです。このタイプの機能を実装するために C でコードのアイデアを提供できる人はいますか?
c - 無料の RTos でのスケジューラの実装
助けが必要です。別のアルゴリズムを使用して freeRTos の代替スケジューラを構築し、OS でそれを置き換えようとするプロジェクトがあります。
私の質問は次のとおりです。
平常時でも可能ですか?(数ヶ月程度)
OSコード全体でスケジューラのコードを認識するにはどうすればよいですか?
c - 翻訳単位の外部で機能する GCC エイリアス -AKA- これは仕事に適したツールですか?
私は STM32 (Cortex-M3) で FreeRTOS を使用しており、ST の CMSIS ライブラリを使用してすべてをブートストラップしています。
CMSIS ライブラリはSVC_Handler
、スタートアップの ".s" ファイルでウィーク シンボルを定義します。割り込みベクター テーブルで ISR を取得するには、どこかでオーバーライドする必要があります。FreeRTOS はvPortSVCHandler
、SVC 割り込みを処理させたい ISR である を定義します。
アプリケーション コードを使用して (つまり、FreeRTOS または CMSIS ソース コードを変更せずに) 2 つを「接着」したいと考えています。エイリアスがこの仕事に適したツールだと思ったので、これを試しました (別のソース ファイル main.c で):
その結果、次のようになります。error: 'SVC_Handler' aliased to undefined symbol 'vPortSVCHandler'
GCC のドキュメント( http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html ) によると、属性を使用するためにalias
、翻訳単位の外でシンボルをエイリアスすることはできません。extern
だから私は次のようにシンボルをmain.cにしようと思った:
これにより、同じエラーが生成されます。助言がありますか???
どちらのライブラリも変更することは避けたいと思います。SVC_Handler
単純に を呼び出す関数を作成できることはわかっていvPortSVCHandler
ますが、ISR に不要なオーバーヘッドが追加される可能性があります (おそらく最適化設定によって異なります)。注: FreeRTOS の例では、カスタム スタートアップ ファイルを介してこれを実現しています。Cまたはリンカー スクリプトからこれを行う方法を探しています。
- コンパイラのバージョン: gcc バージョン 4.5.2 (Sourcery G++ Lite 2011.03-42)
- Target: 腕なしエビ