Portage du logiciel Windows sur des systèmes d'exploitation embarqués / en temps réel

StackOverflow https://stackoverflow.com/questions/106581

  •  01-07-2019
  •  | 
  •  

Question

J'ai une base de code existante qui cible un environnement Windows et, dans l’intérêt de l’avenir, je souhaite la rendre aussi multi-plateforme que possible. J'ai eu quelques succès avec les distributions Linux standard en utilisant des bibliothèques multi-plateformes, mais j'aimerais étendre cela aux systèmes d'exploitation temps réel et / ou embarqués.

Serait-il possible de transférer la majorité de la base de code sur de tels systèmes, ou faudrait-il exiger des réimplentations ciblées sur cet environnement? Si des pièces doivent être recréées, le développement de ces systèmes nécessite-t-il un type d'approche de conception différent? Certains fournisseurs fournissent leurs propres IDE pour le développement. S'agit-il d'une nécessité ou pouvons-nous ou est-il possible de normaliser un processus de construction de type chaîne d'outils GNU?

Un nid-de-poule potentiel pourrait provenir de différences dans la gestion des CIP, mais sans exposition supplémentaire, il est difficile de maîtriser les spécificités.

Attention, bien que basé sur Windows à l’heure actuelle, l’API Win32 (principalement COM) ou les types Windows ne sont pas particulièrement utilisés.

Merci

edit :: la base de code est C \ C ++

Était-ce utile?

La solution

Si vous utilisez l'interface COM Windows (je suppose que vous ne parlez pas de port série, mais du modèle commun d'objet), il faudra peut-être extraire votre code de ce code.

Lorsque vous parlez d'IPC, il s'agit évidemment d'une base de code de type multitâche / multitraitement. Dans ce cas, vous devrez trouver un moyen de gérer la différence en matière d’environnement.

Tout d'abord, vous aurez besoin d'une sorte de RTOS, car votre application est multi-tâches. Comme vous avez fait un portage vers Linux, vous voudrez peut-être utiliser une version de Linux en temps réel. Cela minimiserait le nombre de ports que vous auriez à faire.

Si vous ne souhaitez pas utiliser Linux comme plate-forme intégrée, rendez votre code conforme à POSIX (Linux est) et assurez-vous que le RTOS que vous choisissez prend en charge POSIX. De cette façon, le portage vers Linux et la plate-forme intégrée seraient essentiellement les mêmes.

En bout de ligne, COM sera votre albatros.

Étant donné que vous ne mentionnez pas l'utilisation d'une interface graphique, nous ne traiterons pas cette boîte de Pandore:)

Autres conseils

Si l'application est principalement composée de C et de posix, alors ce n'est pas trop difficile. De nos jours, les plates-formes intégrées peuvent signifier une copie presque complète de XP ou de Linux s'exécutant sur une carte Compact Flash.

Pour l’interface graphique, QT et WX ont des versions intégrées qui dessinent directement les widgets.

L’étape la plus importante consiste à séparer toutes les fonctions de dépendance du système d’exploitation de la logique de projet.

Après cela, vous verrez immédiatement quelle quantité de code vous devez porter pour la migration vers un nouveau système d'exploitation et vous pourrez commencer à effectuer un bon portage.

Dépend des capacités de votre plate-forme intégrée. Si le format 8 bits est utilisé, la route est ardue, mais si le format 32 bits est doté d’une mémoire RAM correcte, il existe de nombreuses bibliothèques multi-plateformes open source disponibles.

J'ai utilisé DirectFB pour ma dernière application à interface graphique intégrée: elle était légère et correcte, mais pas multi-plateforme. . La prochaine fois, je pense que je vais essayer wxWidgets .

Je n'aime pas utiliser les outils de développement GNU sous Windows, car MS Dev Studio est tellement plus agréable que tout autre outil GNU, mais depuis quelque temps, je joue avec Wascana Desktop Developer basé sur Eclipse et GCC et qui semble prometteur.

Si vous êtes en train de spécifier quel système d'exploitation temps réel / intégré vous utilisez, avez-vous envisagé Windows CE?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top