問題タブ [rtems]
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++ - イーサネット アダプタにカスタム IP が設定されている場合、ソケットのバインドに失敗する
問題
RTEMS 4.9.2 を実行しているシステムで、ソケット通信に関して非常に奇妙な問題が発生しています。ソケットをセットアップし、次のコマンドを使用してバインドします。
これは、以下で説明する奇妙な特定のシナリオを除いて、UDP 通信で機能します。bind
発生する問題は、セットアップが正しいにもかかわらず、この呼び出しが失敗することです。RTEMSのエラー125
は次のEADDRNOTAVAIL
とおりです。
存在しないインターフェイスが要求されたか、要求されたアドレスがローカルではありませんでした。
明らかな原因
デバイスの起動時に、次の 2 つの方法のいずれかでネットワークをセットアップできます。
ネットワーク IP と SUBNET は、デフォルトのブートローダー (UBOOT) にあるものに基づいて自動構成され、RTEMS OS を通じて設定されます。
RTEMS 関数
rtems_bsdnet_ifconfig
は、起動後に唯一のイーサネット インターフェイスの IP アドレスを変更するために呼び出されます。
明確にするために、オプション 2 は次のように呼び出されます。
ネットワークがオプション 1 で示されるように設定されている場合、すべてが期待どおりに機能しますが、オプション 2 が使用されている場合 (設定がオプション 1 で定義されたネットワーク オプションと一致する場合でも)、ソケット バインドは失敗します。
IP を再構成すると、このバインドが失敗することを示す RTEMS の既知の理由またはバグはありますか?
追加情報
基本的に を使用する方法を使用して、新しい IP アドレス (オプション 2) を設定しています
ioctl("eht1", SIOCSIFADDR, ...)
。ローカル ADDRESS を指定せずにソケットをバインドすると (つまり use
INADDR_ANY
)、どのような場合でも機能します。は
rtems_bsdnet_ifconfig
、関数の単純なインターフェイスですioctl
。それはからのものrtems_glue.c
であり、関数シグネチャを持っていますint rtems_bsdnet_ifconfig(const char *ifname, uint32_t cmd, void *param)
このバインドを除いて、通常のネットワーク機能はすべて機能しているようです。
これを見た後、IPアドレスをリセットするためにもっと多くのことをする必要があるのではないかと思いました. しかし、これは機能しません。最初の回答を使用したり、何かを行ったりすると
SIOCSIFFLAGS
、すべてのネットワーク機能が停止します。
c - rtems で powf 関数を使用する (powf への未定義の参照)
rtems アプリケーションで powf 関数を使用しようとしています。powf(a,b); を呼び出すと、Init() 関数内では、正常にコンパイルされます。しかし、他の関数で powf を呼び出すと、それら#include <math.h>
と#include <float.h>
. ファイルをマージしてみましたが、同じです。
何が問題になる可能性がありますか?
EDIT(ADD) : 以下にソースコードとメイクファイルを追加しました。コンパイルされた rtems OS パッケージは、シェル環境変数 RTEMS_MAKEFILE_PATH によって指定されます。
メイクファイル:
../Makefile.base:
../src/init.c:
../../../../abfrcnn/bare-c/lrn_layer/lrn_layer.c
make
コマンドの結果:
linux - rtem の mkdir 関数によってファイルが作成されない
Linux で実行する関数を作成し、データの処理中に Linux でいくつかのファイルを生成しました。その関数を rtems (リアルタイム OS) で呼び出したところ、正常にコンパイルされ、ほとんど問題なく動作しているようです。しかし、指定したディレクトリに結果ファイル (オプション) を作成できないことがわかりました。(ファイルシステムにはSDカードを使用しています)。私は1年前に書いたテストプログラムを持っていて、SDカードでファイルの読み取り、書き込み、コピーをテストしましたが、すべて問題ありませんでした。しかし、SD カードのテスト プログラムを変更し、(深層学習に関連する) さらに多くのものを追加して作成したこの新しいアプリケーションでは、プログラムはファイルを作成できません。コードでは、「result」というディレクトリが存在するかどうかを確認し、存在しない場合はディレクトリを作成し、インデックスをループするファイルを生成します。誰かが問題を見つけてくれることを願っています。ヘッダーは、Linux と rtems の両方で問題ありません。(rtems には同じヘッダーがあります) ファイル システムは正常にマウントされており、mkdir は 0 を返します。rtems から (正常に実行されているテスト プログラムから) いくつかのヘッダーを追加しようとしましたが、機能しませんでした。何が問題なのですか?任意のヘルプや提案をいただければ幸いです。
以下は処理結果の一部です:
rtems - RTEMS libbsd コンパイルの問題
sparc および 4.12 バージョンのリンク https://github.com/RTEMS/rtems-libbsdに記載されている手順に従いました。
このステップでエラーが発生しました