41

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

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

4

17 に答える 17

16

ARM プロセッサと 16 MB の RAM (Linux を実行) を備えた非常に多くの組み込みボードで python を使用しています。

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

コードの信頼性については、100% のテスト カバレッジを実現するよう努めています。Python でのテストの作成は非常に迅速であり、すばらしい自信が得られます。私たちはツイスト トライアルを使用してテストを実行し、カバレッジを報告しますが、他にも多くのツールを利用できます。

私の経験では、python + テストは、他のどの代替方法よりも信頼性が高く、作成がはるかに高速です。

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

pycheckerも非常に便利で、多くの一般的なエラーをキャッチします。

于 2009-09-22T12:47:28.990 に答える
10

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

Bruce Eckelに同意します。強力な型付けに頼るよりも、「強力なテスト」を実践する方がよいということです。それは組み込み開発にも同様に当てはまると思います。

于 2008-10-27T19:51:43.087 に答える
9

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

大規模なライブラリで Python を使用すると、いくつかの興味深い問題がありました。インタープリターが起動して Twisted のすべてのコードを非常に遅いチップにロードするのにかなりの時間がかかる可能性があり、特別なケースの最適化が必要なものもありました。ただし、Python の動的な性質が問題になることはありませんでした。問題のソフトウェアは確かに完璧ではありませんでしたが、少なくとも Twisted を使用している場合、単純なプログラミング エラーによって「アプリケーション全体がダウンする」ことはありません。トレースバックがログに記録され、処理が続行されます。

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

于 2008-10-28T02:42:01.697 に答える
8

以前の雇用主では、「64k のコードでの Python の最小限の実装」であるtinypyで組み込みシステムを構築することに時間を費やしたいと思っていました。(しかし、私はそれに到達したことがなく、もう時間がありません。)

于 2008-10-27T19:45:21.477 に答える
8

Telitは、組み込みの Python インタープリターを含むGSM/GPRS モデム モジュールを作成します。

私はそれらを自分で試したことがないので、どのモジュールが含まれているか、RAM と ROM のメモリ制限、実行速度など、Python インタープリターが PC 実装とどのように比較または異なるかはわかりません。

しかし、ユーザー forsightyj がコメントで指摘したように、彼らは本当に古いバージョンである Python 1.5.x を使用しているように見えるので、真剣に受け止めるのは難しいでしょう。Python 開発者は、非常に多くの最新の Python 機能がなければ、このような古いバージョンへのダウングレードを楽しむことはできません。このような古いバージョンでは、セキュリティの問題が懸念されます。

于 2010-09-16T01:31:30.290 に答える
7

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

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

これらのスクリプトを使用して、ターゲットで自動テストを実行したり、診断手順を実行したりしました。手順全体の詳細は次のとおりです。HOW TO: Python を VxWorks に移植する

于 2010-11-24T16:15:08.413 に答える
4

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

ユニットテストは、これらのことに対するあなたの唯一の安全です。

于 2008-11-10T16:50:23.287 に答える
3

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

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

本番ファームウェアの最初のリリースに続いて、コードのクリティカルセクションをC /C++に移植しました。移植作業は非常に簡単で、速度が重要なコードで数桁の改善が見られました(ご想像のとおり)。

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

于 2009-09-22T06:05:29.390 に答える
3

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

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

于 2008-11-10T16:44:21.863 に答える
3

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

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

注意すべき点: - Python/C 拡張モジュールのサポートは、プラットフォーム/OS によっては非常に奇妙な動作をする可能性があります - ほとんどの組み込みプラットフォームは、かなり古いバージョンの Python を提供しています - 最後に、「適切な' すべてのビットが重要な組み込みソフトウェア、および 128MB を超える 412Mhz を超える XScale CPU で実行される「最新の」組み込みソフトウェア、そして Python はターゲットにしたいハードウェアと一致しません :(

于 2008-10-28T08:57:19.570 に答える
3

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

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

もちろん、組み込みシステムがより高速になり、市場投入までの時間が短縮されるにつれて、Python は組み込み分野でより採用されるようになります。

于 2014-09-30T14:06:28.593 に答える
3

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

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

Python と C++ を一緒に使用するには、入力を厳密に管理する必要がありました。

于 2009-01-31T00:23:45.620 に答える
2

私は Python サーバー ( Twistedを使用) と XP Embedded で実行されているいくつかのヘルパー スクリプトを持っていますが、うまく機能しています。

于 2008-10-27T19:57:43.167 に答える
1

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

于 2008-10-27T20:08:29.183 に答える
-5

Blockquote 私が日々の仕事で抱えている唯一の実際の問題は、最後の静的チェックと通常のコンパイラが実行時に問題を投げかける可能性があることです。アプリケーション全体をダウンさせる

私にとって、それは大きな取引です。コンパイル時に見つけて問題を修正できる問題は、実行時に依存する必要があります。データ型がわからず、データ型を確認するためだけに追加の関数を作成する必要があるのは面倒です。C でそれを行う必要はありません。Python で「volatile」をどのように宣言しますか?

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

これも巨大です。組み込みシステムや RTOS の場合、時間の制約は非常に重要です。

Python はコーディングが簡単である必要はありません。それは本当にあなたがどの言語に慣れているかによって異なります。正直なところ、関数と不必要なオブジェクト指向を C で 2 時間で作成するのに 1 日かかります。テストは非常に不便で、コードを作成し、py_compile、pyc をターゲットにコピーしてからプログラムを実行し、python を終了する必要があります。変数が定義されていない、型キャストエラー、またはそのような些細なことを訴えています。

私の提案は、C ツールチェーンはどのターゲットでも利用できるということです。C は高速で、ハードウェア指向で、やりがいがあり、楽しい言語です。組み込みシステムの場合は C を使用してください。実行するためだけに愚かな python パッケージを設定する必要はありません。

于 2014-09-19T18:41:22.257 に答える