組み込みソリューションを開発する (実際に移植する) ためのアーキテクチャ上の決定を下す必要があります。私は自分のケースをできるだけ明確に提示しようとします。
序章
現在ARM11アーキテクチャとArchLinux OSで開発されている組み込みシステムがあります。C、C++、Bash、Python など、Linux で利用可能なあらゆる種類のテクノロジを使用して実装されています。
現時点では、ソリューションをタブレットに移植したいと考えているため、システムの要件に基づいて、アーキテクチャについていくつかの決定を下そうとしています。
要件
システムはモジュール式で、複数のプロセスとスレッドを実行します。また、リモート サーバーと通信し、ハードウェア周辺機器を制御します。これらは基本的な要件です。現時点では、議論が進展するにつれて更新します。
主要な:
- 専用システム (bg 内であっても、最小限の他のアプリケーションを実行)
- 複数のプロセス、優先順位を設定する機能
- プロセスを単一の CPU コアに割り当てる機能 (CPU アフィニティ)
- プロセス間通信メカニズム
- 完全なハードウェア コントロール (WiFi、3G、GSM、マイク、スピーカー、ディスプレイなど)
- ソケットなどの作成
他の:
- マイクを 3.5mm プラグ (TRRS コネクタ) に直接接続する機能
- 信頼性を確保するメインストリーム ソリューション
- 将来性: 新しいタブレットとハードウェアへの移植作業を最小限に抑えます
私の質問
- これらの要件を満たすタブレットと OS の組み合わせはどれですか?
- 「専用ソリューション」要件にどのようにアプローチしますか?
- ソフトウェア開発へのアプローチ方法、使用する言語とツールは?
これまでの私の調査
これまでの調査は、OS の選択に集中してきました。主なオプションは Android と Ubuntu Touch のようです。ここに私の考えがあります:
アンドロイド
メインストリームのカテゴリでは明らかに Android が勝っていますが、...
私は Android 開発の経験はありませんが、私が知る限り、Dalvik 上で実行される Java アプリケーションを開発するか、Android NDK を介してネイティブに移行することができます。たぶん、すべてをバイパスして、Dalvik のネイティブ サイド バイ サイドに移動し、Python で開発することもできますか? その場合、HW アクセス用の API にアクセスできなくなると思います。その場合、HWにどのようにアクセスするかわかりません。しかし、Java 開発を行う場合、これはサンドボックス ソリューションであり、プロセス、HW、および CPU コア アフィニティをそのように制御できるかどうかはわかりません。
Ubuntu タッチ
Ubuntu Touch での開発は、Qt を使用しているため、私が慣れ親しんでいる Linux 開発に似ています。ここでの問題は、アプリケーションが SDK を使用して開発されているため、HTML5 と QML に制限されているため、必要なシステムを同じように制御できるかどうかわかりません。Python を使用して SDK を使用しない場合、同じ問題が発生します - どうすれば HW を制御できますか? もちろん、通常の組み込みシステムのようにそれを行う方法はあると思いますが、必要がなければ車輪の再発明はしたくありません。
また、Ubuntu Touch はまだ多くのデバイスに移植されていないようで、サポートされているのはほんの一握りです。
ついに
自分のケースをどれだけうまく提示できたかはわかりませんが、必要に応じて質問を更新し、さらに説明と要件の詳細を追加します. ご理解とご協力を賜り、誠にありがとうございました。