web-dev-qa-db-fra.com

Toute personne utilisant Python pour les projets intégrés?

Mon entreprise utilise Python pour un projet embarqué relativement simple. Quelqu'un d'autre utilise-t-il Python sur les plates-formes embarquées? Globalement, cela fonctionne bien pour nous, développer des applications, rapide à déboguer. J'aime la "concision" globale de la langue.

Le seul vrai problème que j'ai dans le travail quotidien est que le manque de vérification statique par rapport à un compilateur régulier peut provoquer des problèmes au moment de l'exécution, par exemple un simple chat accidentel d'une chaîne et un int dans une instruction print peuvent faire tomber toute l'application.

40
Fred Basset

Nous utilisons python dans un grand nombre de cartes intégrées avec ARM processeurs et 16 Mo de RAM (sous Linux).

Cela fonctionne très bien et il est très facile de créer rapidement du code personnalisé - l'un des points forts de python.

Quant à la fiabilité du code - nous essayons d'avoir une couverture de test à 100%. L'écriture de tests avec python est très rapide et vous donne un merveilleux sentiment de confiance. Nous utilisons essai torsadé pour exécuter les tests et rendre compte de la couverture, mais il existe de nombreux autres outils disponibles.

D'après mon expérience, python + tests est plus fiable et beaucoup plus rapide à écrire que toute autre alternative.

Le seul inconvénient du travail intégré est que parfois [python peut être lent et parfois il utilise beaucoup de mémoire (relativement parlant). Cela ne nous a pas encore causé de problème d'arrêt de show, et python est assez facile à profiler pour la vitesse et la mémoire si cela devient un problème.

pychecker est également très utile qui détectera pas mal d'erreurs courantes.

14
Nick Craig-Wood

BTW, voir cet article de blog: " Inférence de type pour Python " pour une discussion intéressante sur l'inférence de type et le typage statique, y compris des liens vers certains articles de blog de Guido van Rossum décrivant l'ajout de typage statique facultatif à Python.

Je suis d'accord avec Bruce Eckel qu'il vaut mieux pratiquer des "tests forts" que de compter sur une frappe forte. Je pense que cela s'applique également au développement intégré.

10
Daryl Spitzer

Personnellement, j'ai travaillé sur certains des logiciels qui s'exécutent dans l'appareil utilisé par BusRadio . C'est un exemple de projet intégré construit sur Twisted et Python. Le périphérique est un processeur intégré XScale exécutant une distribution dérivée de Debian , il peut donc ne pas répondre à certaines définitions de "intégré", mais il est assez petit: il s'inscrit dans le tableau de bord d'un autobus scolaire.

Il y avait quelques problèmes intéressants avec l'utilisation de Python avec de grandes bibliothèques - l'interpréteur peut prendre un certain temps pour démarrer et charger tout le code de Twisted sur une puce très lente, et certaines choses devaient être spéciales- optimisations de cas. Cependant, à aucun moment la nature dynamique de Python un problème. Le logiciel en question n'était certainement pas parfait, mais au moins lors de l'utilisation de Twisted, une simple erreur de programmation ne sera pas " mettre toute l'application vers le bas ". Un suivi sera enregistré et le traitement se poursuivra.

Donc, si vous êtes dans un environnement intégré suffisamment libre pour pouvoir utiliser Python en premier lieu, ce n'est pas différent que de développer des programmes "réguliers" (jeux, applications de bureau, applications Web). Vous n'avez pas besoin de taper statique là-bas, et vous n'en avez pas besoin ici non plus.

9
Glyph

Chez mon ancien employeur, j'avais voulu passer du temps à jouer avec la construction de systèmes embarqués dans tinypy , qui est une "implémentation minimaliste de Python en 64k de code". ( Mais je n'y suis jamais arrivé et je n'ai plus le temps.)

8
Daryl Spitzer

Telit rend modules de modem GSM/GPRS qui incluent un embarqué Python .

Je ne les ai pas essayés moi-même, donc je ne sais pas comment l'interpréteur Python compare ou diffère d'une implémentation PC, comme celle qui incluait des modules, RAM = et ROM limites de mémoire, vitesse d'exécution, etc.

Cependant, comme l'a souligné foresightyj dans un commentaire, il semble qu'ils utilisent Python 1.5.x, qui est une version vraiment ancienne, et j'aurais donc du mal à les prendre au sérieux. Python n'apprécieraient pas de rétrograder vers une version aussi ancienne sans autant de fonctionnalités modernes Python. Je serais préoccupé par les problèmes de sécurité avec une version aussi ancienne).

8
Craig McQueen

J'ai travaillé sur des équipements de télécommunications à micro-ondes basés sur des powerpc anciens et lents et 16 Mo de RAM.

J'ai pu porter l'interpréteur Python 2.6.1 sur VxWorks, afin d'avoir l'interpréteur de ligne de commande disponible directement à partir du shell cible, ou pour exécuter python scripts téléchargés sur le flash cible.

Nous avons utilisé ces scripts pour effectuer un autotest sur la cible ou exécuter des procédures de diagnostic. Voici quelques détails sur l'ensemble de la procédure: COMMENT FAIRE: Port Python vers VxWorks

7
BeerBaron

Le seul vrai problème que j'ai dans le travail quotidien est que la dernière vérification statique par rapport à un compilateur ordinaire peut provoquer des problèmes au moment de l'exécution, par ex. un simple chat accidentel d'une chaîne et un int dans une instruction print peuvent faire tomber toute l'application.

Les tests unitaires sont votre seule sécurité contre ces choses.

4
Ali Afshar

D'après mon expérience, Python est traditionnellement utilisé dans les environnements de bureau plus que dans le domaine intégré. Il y a deux raisons, liées au fait que Python est interprété :

  • Les langages C/C++ ont des performances supérieures à Python (et ceci est important dans les systèmes embarqués avec un microcontrôleur lent))
  • Les langages C/C++ ont des temps de réponse plus déterministes (et cela est important dans les systèmes embarqués en temps réel contrôlant quelque chose).

Bien sûr, comme les systèmes embarqués deviendront plus rapides et les délais de mise sur le marché plus courts, Python sera plus adopté dans le secteur embarqué.

3
Claudio

Mon équipe a écrit un logiciel embarqué en C++ et Python. Nous avons décidé d'écrire des classes de base et des routines de calcul lourdes en C++. Nous avons écrit la logique en Python. Boostez les bibliothèques comme de la colle. Utiliser boost n'est jamais facile, mais les résultats sont excellents. Rapide et facile à modifier. En utilisant python pour représenter les besoins personnalisés, nous sommes en mesure de satisfaire les besoins des clients en temps réel, en changeant le code en utilisant des techniques d'injection. Quelque chose de vraiment excitant! (Ok, je suis un geek;)

Nous avons commencé le prototypage en python mais nous avons soudain réalisé que c'était clairement trop lent. Nous avons donc décidé de structurer le programme en différentes couches de calcul, afin d'atteindre les exigences de vitesse. C++ était la meilleure solution .

Afin d'utiliser python et c ++ ensemble, nous avons dû garder un contrôle strict sur la frappe.

3
Zen

Nous utilisons Python ici à l'université pour les applications embarquées basées sur la plate-forme matérielle Gumstix. Bien que plus capables que les systèmes embarqués traditionnels, nous trouvons le mélange de petit facteur de forme, de faible consommation d'énergie (ish) et de facilité de transfert de code entre le développement sur les ordinateurs de bureau et le matériel cible inestimable.

Python est également un excellent langage pour enseigner aux étudiants, et avec le Gumstix, c'est génial, ils peuvent faire fonctionner le code sur un système à faible puissance, plutôt que le mal de tête et le chagrin qui accompagnent l'utilisation de langages dédiés tels que NesC.

3
Dan Goldsmith

En effet, Python est souvent utilisé comme un 'langage de support' pendant que vous devez écrire une sorte de test - c'est-à-dire que j'ai été impliqué dans un projet qui (basé sur Python) la base de code du framework de test était ( est?) presque aussi gros que celui du produit principal. Python 'agents' fonctionne sur QNX, VxWorks - et la plupart des problèmes que nous avons, était de porter correctement le filetage et les parties réseau de notre code .

Cela vaut peut-être la peine d'y jeter un œil projet OpenMoko beaucoup de développement embarqué dans Python se fait là-bas.

Choses à surveiller: - la prise en charge du module d'extension Python/C peut se comporter assez étrangement en fonction de la plate-forme/du système d'exploitation - la plupart des plates-formes intégrées proposent des versions assez obsolètes de Python - enfin, vous trouverez qu'il existe une différence entre un logiciel embarqué "approprié" dans lequel chaque bit compte, et un logiciel embarqué "moderne" qui est exécuté sur des processeurs XScale> 412Mhz avec plus de 128 Mo, puis Python juste ne correspond pas au matériel que vous souhaitez cibler :(

3
stic

J'ai travaillé pour une entreprise qui utilisait Python sur un produit embarqué basé autour d'un Atmel AVR32 et exécutant Linux embarqué. Le firmware a été initialement développé sur un PC (faute de prototype matériel fonctionnel), puis déplacé plus tard vers le matériel intégré exécuté sur l'interpréteur compilé de manière croisée Python.

La possibilité de déboguer et de modifier le code source "en direct" sur l'appareil a été un gros plus pendant le développement et a permis de gagner beaucoup de temps. Les gros inconvénients étaient la vitesse et l'utilisation de la mémoire de l'interpréteur Python.

Après la première version du firmware de production, nous avons porté des sections critiques de code sur C/C++. L'effort de portage a été assez simple et a entraîné une amélioration de plusieurs ordres de grandeur sur le code à vitesse critique (comme vous vous en doutez).

Soit dit en passant, la majeure partie du code de test de conception et de production a été écrite en Python, s'exécutant principalement à l'intérieur d'un faisceau de test sur un PC.

3
user176956

DEVELOPPEMENTS récents

  • MicroPython est une implémentation simple et rapide du langage de programmation Python 3) optimisé pour fonctionner sur un microcontrôleur.
  • L'Agence spatiale européenne (ESA) est financement du développement futur de MicroPython . Il le fait pour évaluer l'adéquation du langage aux applications spatiales, en particulier pour les charges utiles.
  • WiPy 1.0 & 2.0, LoPy & SiPy sont des plateformes MicroPython sans fil vendues par Pycom .

The WiPy 1.0

2
Serge Stroobandt

J'ai un serveur Python (en utilisant Twisted ) et quelques scripts d'assistance fonctionnant sous XP Embedded, et cela fonctionne très bien).

2
eglaser

Le client EVE Online n'est-il pas une vitrine de Python en temps réel et hautes performances?

1
S.Lott