Supposons que vous démarrez un projet intégré avec des fonctionnalités connues. Lorsque vous sélectionnez un microcontrôleur, comment sélectionnez-vous la quantité de RAM dont vous avez besoin?
Utilisez-vous une carte de développeur et codez-vous d'abord votre projet, puis voyez la quantité de mémoire que vous avez utilisée, puis sélectionnez un microcontrôleur approprié qui correspond à cette mémoire?
Choisissez-vous simplement un microcontrôleur costaud pour un prototype, puis réduisez-le après avoir un produit fonctionnel?
Choisissez-vous simplement quelque chose dont vous êtes sûr qu'il suffira et si vous manquez d'espace, passez simplement à une densité de mémoire plus élevée sinon, vous gardez simplement le microcontrôleur existant?
Qu'est-ce qui est considéré comme une bonne pratique?
la source
Réponses:
Personnellement, pour les projets de loisirs, j'ai tendance à utiliser le microcontrôleur le plus puissant de la famille avec la bonne empreinte. Je développe ensuite le PCB, écris du code et réalise un prototype.
Cela a l'avantage que je connais assez bien le petit nombre de microcontrôleurs, donc je peux rapidement prototyper sans avoir à lire toute une fiche technique. J'ai également des tableaux de répartition et des modèles de code pour eux.
Si cela fonctionne et que j'en fais plus d'une poignée, j'achète le microcontrôleur le moins cher qui a les bons périphériques et suffisamment de mémoire pour tout ce que j'ai codé précédemment. Cela peut être gênant si les registres internes changent (se produit sur le PIC) ou si l'un ou l'autre microcontrôleur a des périphériques supplémentaires qui doivent être désactivés pour faire fonctionner le code.
Cependant, à des fins de production, cela vous permettrait de raser une bonne quantité de chaque unité.
la source
Bien sûr, pour un seul prototype fait maison, il peut être une bonne recommandation de commencer par le plus puissant de tous les micros compatibles et de le réduire ensuite.
Cependant, si vous voulez gagner un devis, vous devez indiquer à votre client un prix avant d'avoir l'argent pour mettre en œuvre quoi que ce soit.
Par conséquent, la bonne pratique consiste à noter une sorte de spécification avant de commencer la programmation. Vous savez ce que vous voulez faire et vous devez noter comment vous allez le faire.
Ce «comment» comprend également la réflexion sur la conception d'un logiciel, la réponse à des questions telles que:
La somme de toutes ces valeurs vous donne une estimation approximative. Jusqu'où vous pouvez faire confiance, cela dépend du niveau de détail de votre analyse, et cela dépend de votre expérience :-)
Ajouter une marge d'au moins 30..50% de votre estimation est sûrement une bonne idée.
Une fois que votre produit est terminé et que vous avez environ 80 à 90% de RAM utilisée, vous pouvez être sûr que votre sélection était correcte, du moins en ce qui concerne la RAM.
la source
Si seulement il était possible de coder d'abord votre système embarqué puis de construire le matériel. Cela faciliterait la vie de chacun. Malheureusement, cela signifie également que vos délais sont dépassés. En règle générale, le matériel doit être conçu bien avant la fin du logiciel, car les pièces matérielles ont souvent de longs délais.
Ainsi, les développeurs de logiciels embarqués devront généralement estimer les besoins en mémoire et en CPU de leur programme. Votre première étape devrait être d'essayer de convaincre les gars du matériel de vous donner le microcontrôleur / CPU le plus puissant avec le plus de RAM possible. Cela fonctionne rarement parce qu'ils ont leurs propres objectifs, mais de temps en temps, vous avez de la chance.
Si cela ne fonctionne pas, la prochaine chose à faire est de concevoir un logiciel de haut niveau et de décomposer les modules en fonctionnalités. Vous devez ensuite estimer les lignes de code pour chaque fonction pour chaque module du système. Vous pouvez ensuite utiliser une formule pour convertir des lignes de code en une estimation approximative de la mémoire de code. Vous enquêteriez également sur les besoins en mémoire inhabituels (comme les grands tableaux) et ajouteriez une estimation pour y répondre. Ajoutez ensuite un pourcentage en plus de ce total pour couvrir tout ce que vous avez manqué. Doublez ensuite cela afin de répondre à l'exigence d'utilisation typique de 50%.
Oui, cela prend du temps. Oui, il est nécessaire de parcourir tous les cerceaux car le changement de matériel est vraiment difficile après sa construction.
la source
Généralement, les fournisseurs de microcontrôleurs mettent une gamme de mémoire dans leurs appareils qui convient aux applications typiques. Donc, si vous n'avez besoin que de quelques broches d'E / S et d'un SPI dans un périphérique à faible encombrement, il est peu probable que vous trouviez quoi que ce soit livré avec 500 Ko de Flash et 64 Ko de RAM. Avec des appareils plus grands, qui sont plus proches des packages SoC, même les plus petits sont presque certainement assez gros, à moins que vous ne prévoyiez de procéder à des calculs sérieux tels que le traitement d'image.
Dans un environnement professionnel, la clé pour choisir le bon microcontrôleur est d'utiliser des données historiques. Vous aurez un enregistrement des autres projets que vous avez développés et vous saurez quelle mémoire et autres ressources de silicium sont nécessaires pour implémenter chaque fonctionnalité. Vous saurez ce que le produit est censé faire et vous aurez donc une bonne liste de fonctionnalités et pourrez calculer rapidement et avec précision les ressources que le microcontrôleur devra fournir. Essayer de deviner les besoins en ressources à partir d'une spécification de conception initiale (développée au début du projet lorsque le moins d'informations sur le système est disponible) n'est pas fiable dans le meilleur des cas et seuls des ingénieurs très expérimentés, qui ont construit une base de données historiques dans leurs propres têtes, aura tout type de succès dans l'utilisation de cette méthode.
De nombreuses entreprises ont adopté une approche «agile» à la fois des logiciels et de la conception électronique, ce qui implique de créer une «bibliothèque» de petites cartes fonctionnelles (par exemple, des cartes RS-485, des cartes ADC, etc.) ainsi que des cartes de plate-forme génériques qui hébergent les microcontrôleurs. , de manière similaire à l'utilisation d'un kit de développement et de plug-ins. Un produit peut ensuite être prototypé rapidement (en quelques heures) en sélectionnant et en connectant le jeu de cartes requis pour les fonctionnalités. Le logiciel est également assemblé à partir de modules de bibliothèque et peut être porté et testé rapidement. Une fois que la taille de la partie spécifique au matériel du code est connue, il suffit généralement de sélectionner la plus petite partie qui contiendra cela. L'exception étant celle mentionnée ci-dessus où la fonctionnalité de l'appareil implique le big data ou des algorithmes très complexes. Cette méthode fournit un
(Un autre avantage de l'approche Agile est qu'elle permet le développement logiciel et électronique en parallèle, la conception elctronics étant un exercice d'intégration du jeu de cartes de fonctionnalités et de la réalisation de la compatibilité électromagnétique et d'autres tâches difficiles en même temps que le Un logiciel d'application est en cours de développement sur les assemblages protoype. Un certain portage et intégration sont encore nécessaires, mais cela se fait lorsque les logiciels et l'électronique sont disponibles.)
la source