問題タブ [embedded-linux]

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.

0 投票する
4 に答える
1821 参照

ruby - 組み込みデバイス向けの動的言語?

小さな組み込み Linux デバイスに動的言語をデプロイする必要があり、適切なものを見つけるのに苦労しています。この言語を使用して ( Sinatra や Camping のような小さなフレームワークを使用して) 小さな Web アプリケーションを構築し、メンテナンス用のスクリプトをいくつか書きたいと考えています。 .

Ruby の経験があるので、Ruby の方がいいと思いますが、数日間クロスコンパイルを試みた後、libs (miniruby) なしでベアボーン インタープリターしかビルドできませんでした。それの問題は、それが大きすぎるということです: 1 MB 以上が取り除かれています!

使用している言語は何ですか。それを機能させるのはどの程度困難でしたか?

0 投票する
1 に答える
394 参照

qt - 組み込み Linux 製品は Qt をベースにする必要がありますか?

私の会社は医療用製品を開発しています。コンポーネントの 1 つは、組み込み Linux を実行する pda のようなプラットフォームです。

私たちは Qt を UI フレームワークとして検討していましたが、Qt はそれ以上のものであることがわかりました (私たちは Qt に詳しくありません)。C++でプログラミングするつもりです。

一般に、デバイスは次のことを行う必要があります。

  1. 別のデバイスから USB HID 経由で測定値を受信します (USB HID は便宜上使用されます)。

  2. 測定値を処理します。

  3. それらをデータベースに保存します。

  4. デバイスのタッチ スクリーン lcd を使用してユーザーとやり取りします。

  5. データを収集してデバイスを構成する中央管理ステーションと通信 (wi-fi、tcp-ip) します。

  6. ブラウザー経由でデバイスにアクセスできるように、Web サーバーを組み込みます。

私の質問は次のとおりです。

  1. それはそのようなデバイスにとって良い選択ですか?

  2. Qt を選択すると仮定すると、製品をどのように構築するのでしょうか?

    • Qt を GUI フレームワークとして使用し、アプリケーション コードを別のプロセス (Qt とアプリケーション プロセス間でメッセージを渡す) で記述しますか?
    • ツールが提供するすべてのサービスを使用して、アプリケーション全体を Qt 内に記述しますか?
    • 別のアプローチ?
0 投票する
3 に答える
4745 参照

linux-kernel - カーネルハングのデバッグ

カーネルモードドライバーを使用しているアプリを実行しようとしています。システムは1時間ごとにロックし、それを回復する唯一の方法はハードリセットです。Sysrqが応答を停止し、telnetセッションがハングし、いかなる種類のエラーメッセージも表示されません。残念ながら、ボードはejtagをサポートしていません。私はそれを機能的に分離しようとしてきましたが、これは干し草の山で針を探すようなものです。助言がありますか?

PS:これはmips linuxシステム(2.6.31)です。

0 投票する
5 に答える
37133 参照

c - 同じスレッドでミューテックスを複数回ロックする

組み込み Linux OS (uClinux) でアプリケーションを開発していますが、(同じスレッドで) ミューテックスを複数回ロックできるようにする必要があります。

次のように定義および初期化されたミューテックスとミューテックス属性があります。

しかし、ロックを 2 回取得しようとすると、2 回目のロックでブロックされます。

私はそれを間違って初期化していますか、それとも同じことを達成するためのより良い方法はありますか?

前もって感謝します。

結論:

  • どうやら PTHREAD_MUTEX_RECURSIVE または PTHREAD_MUTEX_RECURSIVE_NP が機能しないため、再入可能ミューテックスを作成できません。
  • try_lock もダメです。取得できる場合はロックを取得し、取得できない場合はエラーを返します。残念ながら、エラーはミューテックスが既に使用されていることを通知するだけで、現在のスレッドがすでにロックを所有しているかどうかを確認できません。
  • 現在のスレッドにロックがある場合、pthread_mutex_lock はエラーを返す可能性がありますが、そのためにはタイプ PTHREAD_MUTEX_ERRORCHECK のミューテックスを作成する必要があり、作成することもできません。
0 投票する
2 に答える
368 参照

linux - ユーザーが ssh セッションを突然閉じた場合に bash スクリプトから知る方法

ssh 経由でログインするユーザーのデフォルト シェルとして機能する bash スクリプトがあります。netcat を使用してファイルを送信するオプションの 1 つを含むメニューを提供します。

私が使用している組み込み Linux の netcat には -w オプションがないため、ユーザーがファイルを送信せずに ssh 接続を閉じると、netcat コマンドは永遠に待機します。

スクリプトが netcat コマンドを強制終了して正常に終了できるように、ユーザーが突然接続を閉じたかどうかを知る必要があります。

私がこれまでに試したこと:

  • SIGHUP のトラップ: 発行されません。私が見つけた発行された唯一のシグナルは SIGCONT ですが、信頼性が高く移植性があるとは思いません。
  • read コマンドの -t オプションをいじって、クローズされた stdin を検出する: これは、埋め込まれた read コマンドのばかげたバグ (最初の呼び出しでのみタイムアウト) がなければ機能します。

編集:

コメントの質問に答えて、状況をさらに説明しようと思います。

私が持っているコードは次のとおりです。

私は SIGINT と SIGTSTP を無視していますが、すべてのシグナルをトラップしようとしましたが、受信したのは SIGCONT だけです。

bash の man ページを読むと、SIGHUP をスクリプトと netcat の両方に送信する必要があり、停止したジョブに SIGCONT を送信して、確実に SIGHUP を受信できることがわかりました。

待機するとスクリプトが停止したと見なされるため、SIGCONT を受け取りますが、同時に待機が何らかの形で SIGHUP を消費します。

そこで、スリープの待機を変更しようとしましたが、SIGHUP と SIGCONT の両方が受信されました。

問題は、待機が SIGHUP をブロックしているのはなぜですか?


編集2:解決

-t オプションを使用して read ビルトインを使用してクローズド stdin をポーリングして解決しました。read ビルトインのバグを回避するために、新しい bash で生成します (bash -c "read -t 3 dummy")。

0 投票する
3 に答える
4023 参照

linux - 重要なコードで Linux ユーザー空間の pthread が生成されるのを防ぐことはできますか?

2.6.24.3 カーネルを使用して、組み込み Linux プロジェクトのユーザー空間アプリに取り組んでいます。私のアプリは、非同期 IO 操作が完了するまでそれぞれがスリープする 2 つの pthread を作成することにより、2 つのファイル ノード間でデータを渡します。

完了ハンドラーは、保留中の転送の数を追跡し、1 つのスレッドが追加し、もう 1 つのスレッドが削除するいくつかのリンクされたリストを維持する必要があります。

私の質問はこれです...

ミューテックス/スピンロックルートを下るのではなく、完了ハンドラーを実行している間、現在アクティブなスレッドが譲歩するのを防ぐ簡単な方法はありますか?

または、ミューテックス/スピンロックが保持されているときに pthread を生成しないように Linux を構成できることに失敗しましたか?

0 投票する
3 に答える
1103 参照

windows - Eclipse を使用して、Windows ホスト上の組み込み Linux 向けに開発する

Eclipse を使用して、Windows ホスト上で組み込み Linux を開発するという質問を受けました
。これが現在の私と現在の状況です。
1. 最新の Eclipse + CDT (c/c++ 開発ツール) がインストールされた Windows ホスト
2. プロジェクトをビルドするためのソースとツールチェーンを含む Ubuntu ホスト (ssh + samba がインストールされている)。(Windows と ubuntu ホストは 1 つのネットワーク セグメント内 (LAN) 内にあります)
3. 次のコマンドを使用して、このプロジェクトを Ubuntu でビルドできます。
# chroot dummyroot
# cd /home/project/Build
# sh ビルドdate +%Y%m%d%H%M%S
4. ステップ 3 の目的を達成するために eclipse C++ プロジェクトを作成しようとしていますが、しばらくここで立ち往生しています。それをどのように行うことができるかについてのアイデアはありますか?

0 投票する
5 に答える
4483 参照

linux - Linuxカーネルモジュールビルドからのasm出力を保持する方法

私は 2.6.x カーネル用の Linux カーネル モジュールに取り組んでおり、アセンブリ出力を表示する必要がありますが、現在は一時ファイルとして実行されており、あとがきが削除されています。問題がどこにあるかを簡単に追跡できるように、アセンブリの出力を C ソース ファイルと混在させたいと考えています。これは ARMv6 コア用であり、どうやら objdump はこのアーキテクチャをサポートしていません。以下にメイクファイルを含めました。

0 投票する
1 に答える
1948 参照

linux - セグメンテーション違反を引き起こすpthread_rwlock_init()

ここで何か馬鹿げたことをしているのではないかと思いますが、構造体に埋め込まれたrwlockでpthread_rwlock_init()を実行しようとすると、組み込みLinuxプラットフォーム(GCCコンパイラ)でセグメンテーション違反が発生します。

次の原因でセグメンテーション違反が発生します。

これもそうです...

ただし、以下は正常に機能します...

何かご意見は?

0 投票する
1 に答える
2430 参照

linux-kernel - FIQ ハンドラから Linux C コードを呼び出す際の問題

私はarmv6コアに取り組んでおり、すべての作業を行うときにうまく機能するFIQハンドラーを持っています。ただし、FIQ メモリ領域に対して大きすぎる追加コードに分岐する必要があります。

FIQ ハンドラーは、登録時に fiq_start から fiq_end に、0xFFFF001C にコピーされます。

fiq_hander は次の関数に設定されます。

FIQ ハンドラーは通常のカーネル API の外部で動作し、かなり優先度の高い割り込みであるため、呼び出すものはすべて既にメモリにスワップされていることを確認する必要があります。これを行うには、fiq_flip_pins 関数を vmalloc を取得するモジュールとしてではなく、モノリシック カーネルで定義します。

fiq_flip_pins 関数に分岐せず、代わりに test_fiq_handler 関数で作業を行うと、すべてが期待どおりに機能します。現時点で問題を引き起こしているのは分岐です。分岐の直後に、ページング リクエストに関するカーネル パニックが発生します。ページング要求を受け取る理由がわかりません。

fiq_flip_pins はカーネル内にあります: c00307ec t fiq_flip_pins

私のコードには API 呼び出しがないため、C 呼び出しとその逆で何か問題が発生していると想定する必要があります。これを解決する助けをいただければ幸いです。

fiq_flip_pins のコメント付きのアセンブリは次のとおりです。