問題タブ [micrium]
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は先見の明があると思いました。
両方のスレッドが同じデフォルトの優先度に設定されています。
c - uC-OS/II で USB メモリ スティックからファイルを読み書きする
ARMプロセッサとmicrium RTOSを搭載したボードがあります。USB メモリ スティックからファイルを読み書きする必要があります。たとえば、ファイルの名前を変更する標準関数は次のとおりです-
USBメモリスティック上のファイルを指すためにsExistingNameに書き込む必要があるパスはどれですか?
c - LinkedList 追加要素
C の LinkedList に問題があります。リストに含まれるノードの数を数えると、常に 1 になります。
LLカウント:1
これは、リスト コードの追加、カウント、および取得の最後の要素です。
これは次のように呼び出されます。
どこで LL * リスト; はグローバル変数であり、temp はローカル スコープにあります。私がどこで間違ったのか誰かがわかるといいのですが
ごきげんよう、シャークとゲリット
c - Micrium の uC/OS-III RTOS における Malloc
Micrium の uC/OS-III RTOS を使用しています。RTOS で malloc の戻り値を取得しようとしています。RTOS が開始される前に 99999 の malloc を実行すると (RAM に対して多すぎる)、null ポインターが返されます。これは想定どおりです。
RTOS の開始時およびタスク内でこれと同じ malloc を実行すると、予期しない null ポインターが返されません。ただし、この時点でシステムはフリーズします。
誰もこれについて説明がありますか?
前もって感謝します
編集:
情報については、ルネサスの RX62N マイクロコントローラーと GNURX コンパイラーを使用しています。
プログラムは実際にはフリーズしません。プログラムは、(NULL ポインターではなく) 有用なポインターを取得したと「考え」、実行を続けます。ある時点で、プログラムはそのプログラム カウンターを 00000000 に変更して停止します。そのため、例外に入らないため、キャッチできません。
ただし、RTOS が起動する前にmallocが呼び出される場合と、RTOS が起動される場合とでは、何かが異なります。違いは、 mallocの非常に深いアセンブリ コードにあります。
ある時点で、次の命令が実行されます
あまりにも多くの RAM を割り当てようとしている場合、BGTU.B命令は分岐せず、プログラムはADD命令を続行します。これは、RTOS を開始する前にmallocを実行すると完全に機能し、後で実行すると失敗します。
全体の状況が明確であることを願っています。できる限り説明しようとしました:P
前もって感謝します
c - Micriμm μC/OS-III RTOS の割り当てと解放
RenesasのRX62NでMicriumのμC/OS-III RTOSを使用しています。
データを動的に割り当てて解放する必要があるシステムを構築しました。関数malloc()およびfree()が RTOS でうまく機能しないことがわかりました。ただし、RTOS にはこのためのカスタム関数があります。Mem_HeapAlloc ()関数。この関数は、RTOS で作成された'heap' の一部のメモリを割り当てます。問題は、おそらくすべてがヒーププールに入るために、無料の機能がないことです。
RTOSではプールを作ることも可能です。このプールの問題は、含まれているすべてのブロックが同じサイズである必要があることです。さまざまなサイズを割り当てて解放しているため、これは良い解決策ではありません。
メモリ RTOS 機能について説明しているドキュメントを見つけました。ここでは、 第 4 章で機能について説明しています。
この問題を解決する方法を知っている人はいますか?
私たちがすでに持っていたいくつかの解決策
- すべてのブロック サイズを最大の割り当てと同じにします。 最小割り当てと最大割り当てが大きく異なるため、多くのオーバーヘッドがあります。
- フリーはしないでください。 これは解決策ではありません。メモリ リークが発生します。
誰かが私たちを助けてくれることを願っています。何か不明な点があれば、私に聞いてください
前もって感謝します
c - タイプ定義されていない構造体への型キャスト
基本的に、RTOSの別のスレッドからデータを取得しています。このデータはボード上のピンです。すべてのIOポートは、iodefine.hファイルの構造体/ユニオンにあります。たとえば、Micriumがどのようにそれを作ったかについてはこれを参照してください:
あなたが私に尋ねれば非常に賢い方法。したがって、このピンをPortandPinと呼ばれる構造体の2文字として保存します。
このようにピンを使用したいと思います:
ステッピングモーターは構造体です。この方法でのみ、次のようなエラーが発生します
構造体または共用体ではないものでのメンバー「DR」の要求
新しい変数を作成せずに、ステッピングモーター-> PulsePort-> DR.BYTEを使用するにはどうすればよいですか?誰かが私を助けてくれることを願っています!
middleware - ロボット ミドルウェア (OpenRTM、OROCOS、RSCA、ASEBA など) は、RTOS (Micrium、QNX、Keil、FreeRTOS?
あなたに質問があります。
ロボット開発者が I/O 作業を行うためのライブラリを含むオープン ソースのロボット ミドルウェアがいくつかあります。これらは、多くの時間を節約する非常に強力なツールです。それらはOpenRTM、OROCOS、RSCAなどです...
プロジェクトでは、障害物回避、move2goal、コリドー追従などの自律的な動作を行うロボット車椅子を開発します。RTOS を使用して、動作の I/O スタッフと選択操作を整理します。
私が疑問に思っているのは、RTOS ( mcOS-II、QNX、Keilなど) のいずれかにこれらのミドルウェアへのポートがあるかどうかです。これらの RTOS にインストールできますか?
私の悪い英語でごめんなさい。あなたが私の言いたいことを理解してくれることを願っています。
よろしくお願いします..
filesystems - micriumファイルシステムは残りのスペースを取得します
FAT32 フォーマットの SD カードに残っているメモリ量を取得する uC/FS 用の組み込み関数があるかどうか疑問に思っています。
どうもありがとう。
PS。いろいろ調べてみましたが、説明書には載っていないようです。