Il semble que vous ayez déjà fait certains choix de conception.
nous connaissons les différents objets nécessaires, les interactions requises entre les différents objets et la communication IPC entre les tâches.
vous avez besoin d'un système d'exploitation multithread et d'une unité centrale de traitement qui peut l'exécuter, ce qui signifie généralement que vous devez viser un processeur avec une MMU. Les options d'OS sont des choses comme Quadros, QNX, linux, wince, etc.
En fonction de ce que font vos "objets" (les modules sont un meilleur terme pour le C :) ), vous pouvez probablement déterminer le type d'architecture dont vous avez besoin. Une architecture 16 bits est-elle suffisante ? Si vous avez besoin de plus de mémoire ou si vous travaillez avec des nombres plus importants, alors le 32 bits est la bonne réponse ? beaucoup de travail en virgule flottante ? alors vous avez probablement besoin d'un processeur avec une FPU. Beaucoup de travail en DSP ? peut-être avez-vous besoin d'un DSP ou d'un uC avec des instructions de type DSP ou un co-proc. L'exécution d'un écran graphique ? Il vous faut un SoC avec un contrôleur LCD intégré ou bien un contrôleur externe. Vous faites des graphiques 2D lourds ? Vous avez besoin d'un SoC avec une accélération graphique.
Dressez la liste des fonctionnalités dont vous avez besoin et estimez la part de votre code qui relève des catégories suivantes : opérations sur les entiers, boucles, opérations en virgule flottante, opérations graphiques, opérations DSP, etc.
Cela devrait vous permettre de classer le niveau du dispositif dont vous avez besoin. Pour certaines architectures, vous pourriez faire une compilation croisée du code en utilisant GCC et l'émuler en utilisant qemu au dessus de linux. Cela ne vaut probablement la peine que si vous avez besoin de tester les performances d'un algorithme critique sur une architecture particulière. Cela peut vous aider à adapter la vitesse dont vous avez besoin pour votre application.
La deuxième considération devrait être l'utilisation de l'énergie et la prise en charge de la gestion de l'énergie. Combiné avec les performances requises, vous pouvez faire le choix d'un DSP, d'un uC, d'un processeur d'application, etc.
Comme d'autres l'ont dit, je ne m'inquiéterais pas de l'utilisation de la mémoire, il suffit de viser grand, souvent les différentes tailles de RAM sont compatibles avec les broches, vous pouvez donc simplement réduire la RAM pour la production. Les seules vraies questions auxquelles il faut répondre d'emblée sont les suivantes :
*De quelle taille d'espace d'adressage ai-je besoin ? 16 bits ? 32 bits ? etc.
*Ai-je besoin d'une RAM externe ou la RAM interne d'un uC sera-t-elle suffisante ? <--réponse à cette question après avoir choisi une architecture et pouvoir partir à la chasse aux SoC.
Dans la plupart des cas, choisir parmi les processeurs de la même catégorie est une "guerre sainte". Ainsi, sur le marché des risc 32 bits, certains choisiront ARM, d'autres coldfire, d'autres encore PIC32. En fin de compte, n'importe quel processeur peut fonctionner. Vous devez choisir en fonction des SoCs disponibles avec les périphériques requis, de la facilité de développement (quelle est la qualité de la chaîne d'outils) et du coût.
La même chose peut être vraie pour le choix du système d'exploitation, linux vs QNX vs quadros est un jeu de pile ou face pour la plupart des applications, généralement la meilleure réponse est celle avec laquelle vous avez le plus d'expérience. Même s'il s'avère légèrement plus cher, la réduction du temps de développement compense souvent le coût de construction. Assurez-vous que le système d'exploitation possède les fonctionnalités requises, les bibliothèques partagées, la communication interprocessus, les tuyaux, tout ce dont vous avez besoin.
En règle générale, je choisirais d'abord votre architecture. Celle-ci aura un impact beaucoup plus important sur les performances de votre appareil que le système d'exploitation. De plus, les systèmes d'exploitation dans cet espace sont souvent supportés par de nombreuses architectures. De plus, les meilleurs systèmes d'exploitation sont compatibles avec POSIX. Correctement écrit, le gros de votre code devrait pouvoir fonctionner sur plusieurs systèmes d'exploitation.
Ne vous sentez pas mal si vous devez faire plusieurs essais pour faire le bon choix. Vous pouvez trouver un noyau qui répond parfaitement à vos besoins en matière de code, mais découvrir après quelques recherches qu'il ne prend pas en charge une fonctionnalité mineure dont vous avez besoin, ou qu'il n'y a pas de SoC disponible avec les périphériques dont vous avez besoin, ou même que le produit est en rupture de stock pendant 6 mois. Assurez-vous simplement qu'après avoir fait le choix initial, vous recherchez comment la conception se fera sur la base de cette partie, afin de voir la pierre d'achoppement maintenant plutôt qu'à mi-chemin du développement.