Les contraintes de développement sur un système embarqué
Les contraintes de développements sur un système embarqué sont nombreuses et se rapprochent
assez de celles rencontrées en informatique en général:
La compléxité des alogrithmes utilisés doit être relativement faible d'autant plus que
les performances et la puissance des systèmes est moindre.
L'absence de MMU limite la taille des applications.
L'absence de media de stockage permanent..
De nombreuses applications des systèmes embarquées sont des applications temps réels: On doit
souvent ajouter une contrainte temps-réel.
L'utilisation d'outils de Genie Logiciel est fortement conseillé
La conception orientée objet est préconisée dès que cela est possible
Compléxité des algorithmes
Du fait d'une puissance de calcul et d'une mémoire limité, on préférera des algortihmes peu complexe
sur un système embarqué. Par exemple, l'utilisation de la récursivité sur des systèmes à faible performance
est peu recommandée. La principale limitation est due à l'absence, sur de nombreux système, d'une Unité de Gestion
de la Mémoire (MMU).
Absence de MMU
L'absence de MMU rend impossible la gestion de la mémoire virtuelle. Les processus se retrouvent donc très vite
limité en mémoire car ils doivent tous partager le même espace mémoire, y compris la pile.
Par ailleurs, cela rend impossible l'appel système fork() traditionnel tel que nous le connaissons sous UNIX:
fork() crée un processus fils à partir d'un d'un processus père en recopiant les zones mémoires du processus père.
Sans MMU, cela est rendu impossible car le système ne peut pas retrouver les zones mémoire destinées au père ou au fils.
Nous verrons plus tard comment créer des processus sur un système ne disposant pas de MMU.
Absence de medium de stockage permanent
Les systèmes embarqués sont généralement dépourvus d'unité de stockage telle qu'un disque dur ou une bande magnétique.
La sauvegarde des données est généralement faite en ROM ou en mémoire FLASH. L'utilisation de ces mémoires et relativement
onéreuse et peu fiable. En cas de crash, les données sont généralement perdus. Il existe cependant des systèmes de fichiers
pour FlashRAM journalisés.
Le temps réel
Un système fonctionne en temps réel lorsqu'il est capable d'absorber toutes les informations d'entrée sans qu'elles soient
trop vieilles pour l'intérêt qu'elles présentent, et par ailleurs, de réagir à celles-ci suffisamment vite pour que cette réaction ait un sens.
Les sytèmes embarqués temps réels requierent la présence d'un automate d'ordonnancement adapté au temps réels ( le plus connu: EDF (Earlest Deadline First).
Il arrive parfois que ce soient uniquement des systèmes dédiés à une tache, dans ce cas, il n'y a pas d'automate d'ordonnancement, le système execute
indéfinniment une seule et même boucle. C'est le cas de l'ABS.
Le génie logiciel
Aucune méthode de génie logiciel n'esy spécialement préconisé pour le développement de systèmes embarqués mais le choix d'une méthode
est fortement conseillé: Un logiciel pour l'embarqué est en général produit de manière industrielle et les mises à jours coûtent chers.
Les erreurs de conception sont plus que jamais très coûteuses. Enfin, on pourra citer UML ( Unified Modeling Language) et SDL ( Specification
and Description Language) qui sont deux notations très utilisées pour la modélisation des sytèmes informatiques.
La conception objet
La conception objet est recommandée car elle permet la reduction des coûts et la réutilisation du code produit. Là encore, les gains
financiers motivent ce choix de conception.
Ces nombreuses contraintes introduisent un coût important dans le développement d'un système embarqué.