web-dev-qa-db-ja.com

埋め込みプロジェクトにPythonを使用している人はいますか?

私の会社はPython=比較的単純な組み込みプロジェクトに使用しています。組み込みプラットフォームでPythonを使用している他の誰かがいますか?全体的に私たちにとってうまくいきますアプリの開発、迅速なデバッグ私は言語の全体的な「簡潔さ」が好きです。

私が日々の仕事で抱えている唯一の本当の問題は、静的チェックと通常のコンパイラの欠如が、実行時に問題をスローする可能性があることです。文字列の単純な偶然の猫とprintステートメントのintは、アプリケーション全体をダウンさせる可能性があります。

40
Fred Basset

pythonをかなりの数の ARMプロセッサを搭載した組み込みボード と16 MBのRAM(Linuxを実行)で使用しています。

Pythonの長所の1つである、非常にうまく機能し、カスタムコードをすばやく簡単に作成できます。

コードの信頼性については、100%テスト範囲をカバーするようにしています。 pythonを使用したテストの作成は非常に迅速で、すばらしい自信を与えてくれます。 ツイストトライアル を使用してテストを実行し、カバレッジについてレポートしますが、他にも多くのツールが利用できます。

私の経験では、python +テストは他のどの方法よりも信頼性が高く、はるかに速く記述できます。

組み込み作業の唯一の欠点は、pythonが遅くなる場合があり、(比較的言えば)大量のメモリを使用する場合があることです。これはまだショーの停止の問題を引き起こしていません。また、問題が発生した場合、pythonは速度とメモリの両方を簡単にプロファイルできます。

pychecker も、非常に多くの一般的なエラーをキャッチするのに非常に役立ちます。

14
Nick Craig-Wood

ところで、型推論と静的型付けの興味深い議論については、このブログ投稿「 Type inference for Python "」を参照してください。Pythonにオプションの静的型付けを追加することを説明するGuido van Rossumブログ投稿へのリンクも含まれます。

私は Bruce Eckel に同意します。強いタイピングに頼るよりも「強力なテスト」を実践する方が得策だということです。これは組み込み開発にも同様に当てはまると思います。

10
Daryl Spitzer

個人的に、私は BusRadio によって使用されるデバイスで実行されるソフトウェアのいくつかに取り組みました。 Twisted とPythonで構築された組み込みプロジェクトの例です。デバイスは組み込み XScale プロセッサで debian-derived ディストリビューションを実行しているため、「組み込み」の特定の定義に適合しない可能性がありますが、かなり小さくなっています。スクールバスのダッシュボード。

大きなライブラリでPython=を使用するといくつかの興味深い問題がありました-インタープリターは、非常に遅いチップでTwistedのすべてのコードを起動してロードするのにかなり時間がかかることがあります。 Python=の動的な性質が問題になることは決してありませんでした。問題のソフトウェアは確かに完璧ではありませんでしたが、少なくともTwistedを使用する場合、単純なプログラミングエラーは発生しませんアプリケーション全体を停止します。」トレースバックがログに記録され、処理が続行されます。

したがって、Python=を最初から使用できるほど十分に制約されていない組み込み環境にいる場合は、「通常の」プログラム(ゲーム、デスクトップアプリケーション、Webアプリ)の開発と同じです。そこで静的型付けをする必要はなく、ここでも静的型付けは必要ありません。

9
Glyph

以前の雇用主では、組み込みシステムの構築に少し時間をかけて tinypy を試してみたかったのですが、これは「Python 64kのコードの実装)」です(しかし、私はそれにたどり着かず、もう時間もありません。)

8
Daryl Spitzer

TelitGSM/GPRSモデムモジュールembedded Python interpreter を含む)を作成します。

私は自分で試したことがないので、PythonインタプリタがどのようにPC実装と比較したり、どのモジュールが含まれているかなど、RAM =およびROMメモリ制限、実行速度など).

しかし、ユーザーforesightyjがコメントで指摘したように、Python 1.5.xは本当に古いバージョンです)を使用しているようですので、真剣に受け止めるのに苦労します。Python開発者は、多くの最新のPython機能がないと、このような古いバージョンへのダウングレードを楽しむことはできません。このような古いバージョンのセキュリティの問題が心配です。

8
Craig McQueen

私は、古くて遅いpowerpcと16MbのRAMに基づいたマイクロ波通信機器に取り組んできました。

Python 2.6.1インタープリターをVxWorksに移植して、コマンドラインインタープリターをターゲットシェルから直接利用できるようにするか、pythonターゲットのフラッシュにアップロードされたスクリプト。

これらのスクリプトを使用して、ターゲットで自動テストを実行したり、診断手順を実行したりしました。手順全体の詳細を以下に示します。 HOW TO:Port Python to VxWorks

7
BeerBaron

私が日々の仕事で抱えている唯一の本当の問題は、静的チェックと通常のコンパイラの最後の問題が、実行時に問題をスローする可能性があることです。文字列の単純な偶然の猫とprintステートメントのintは、アプリケーション全体をダウンさせる可能性があります。

単体テストは、これらに対する唯一の安全です。

4
Ali Afshar

私の経験では、Pythonは、組み込みフィールドよりもデスクトップ環境で伝統的に使用されてきました。Pythonが解釈されるという事実に関連して、2つの理由があります。 :

  • C/C++言語は、Pythonよりも高いパフォーマンスを発揮します(これは、低速のマイクロコントローラーを備えた組み込みシステムでは重要です)
  • C/C++言語は、より確定的な応答時間を持っています(これは、何かを制御するリアルタイム組み込みシステムでは重要です)。

もちろん、組み込みシステムがより速くなり、市場投入までの時間が短くなるにつれて、Pythonは組み込みセクターでより採用されるでしょう。

3
Claudio

私のチームは、C++とPythonで作られた組み込みソフトウェアを作成しました。基本クラスと重い計算ルーチンをC++で書くことにしました。ロジックはPythonで作成しました。接着剤としてライブラリを後押しします。ブーストの使用は決して簡単ではありませんが、結果は優れています。すばやく簡単に変更できます。 pythonを使用してカスタムのニーズを表すことで、顧客のニーズをリアルタイムで満たすことができ、インジェクションテクニクスを使用してコードを変更します。何か本当にエキサイティングです!(OK、オタクです;)

pythonでプロトタイピングを開始しましたが、明らかに速度が遅すぎることに気づきました。そのため、速度要件に到達するために、プログラムをさまざまな計算レイヤーで構成することにしました。C++が最良のソリューションでした。

pythonとc ++を一緒に使用するには、タイピングを厳密に制御する必要がありました。

3
Zen

ここでは、Gumstixハードウェアプラットフォームに基づく組み込みアプリケーションにPythonを大学で使用しています。従来の組み込みシステムよりも優れていますが、小さなフォームファクター、低い(ish)電力消費、およびデスクトップマシンでの開発とターゲットハードウェアの間でのコードの転送が非常に簡単になります。

Pythonはまた、生徒に教えるのに最適な言語です。Gumstixを使用すると、NesCなどの専用言語の使用に伴う頭痛や失恋ではなく、低電力システムでコードを動作させることができます。

3
Dan Goldsmith

実際、Pythonは「サポート言語」としてよく使用されますが、ある種のテストを作成する必要があります。つまり、(Pythonベースの)テストフレームワークのコードベースであったプロジェクトに関与していました( is?)メイン製品とほぼ同じ大きさですPython 'agents' works on QNX、VxWorks-そして私たちが抱えているほとんどの問題は、コードの適切なスレッディングとネットワーク関連部分を移植することでした。

見てみる価値があるかもしれません OpenMokoプロジェクト Pythonでの多くの組み込み開発がそこで行われています。

注意事項:-Python/C拡張モジュールのサポートは、プラットフォーム/ OSによってはかなり奇妙に動作する可能性があります-ほとんどの組み込みプラットフォームは、かなり古いバージョンのPythonを提供しています-最後に、すべてのビットがカウントされる「適切な」組み込みソフトウェアと、128MB以上の412Mhz XScale CPUで実行される「最新の」組み込みソフトウェアとの間には違いがあることを確認し、Python justターゲットにしたいハードウェアと一致しない:(

3
stic

私はPythonを使用し、組み込みLinuxを実行している会社で働いていました。ファームウェアは最初はPCで開発されました(ハードウェアプロトタイプが機能していないため)。その後、クロスコンパイルされたPythonインタープリターで実行されている組み込みハードウェアに移動しました。

デバイス上でソースコードを「ライブ」でデバッグおよび変更できる機能は、開発中に大きなプラスとなり、多くの時間を節約できました。大きな欠点は、Pythonインタプリタの速度とメモリ使用量でした。

製品ファームウェアの最初のリリースに続いて、コードの重要なセクションをC/C++に移植しました。移植作業は非常に簡単で、スピードクリティカルなコードで(予想どおり)桁違いに改善されました。

ちなみに、設計と製造のテストコードのほとんどはPythonで記述されており、主にPCのテストハーネス内で実行されています。

3
user176956

最近の進展

  • MicroPython は、Python 3プログラミング言語の簡潔で高速な実装であり、マイクロコントローラーで実行するように最適化されています。
  • 欧州宇宙機関(ESA)は MicroPythonの今後の開発資金 です。スペースベースのアプリケーション、特にペイロードに対する言語の適合性を評価するためにそうしています。
  • WiPy 1.0&2.0、LoPy&SiPyPycom が販売するワイヤレスMicroPythonプラットフォームです。

The WiPy 1.0

2

Pythonサーバー( Twisted を使用)といくつかのヘルパースクリプトがXP Embeddedで実行されていますが、組み込みで動作しています。

2
eglaser

EVE Online クライアントは、リアルタイムの高性能Pythonの代表作ではありませんか?

1
S.Lott