Location de la bibliothèque stm32 à recoder

Salut,
 
Je cherche les headers non implémentés (les prototypes non définis, quoi) de la bibliothèque stm32... J'ai trouvé une version dans le trunk/prog/, donc en stable, mais est-ce réellement la version stable de la stm32 que l'on doit recoder ? Si oui, apparemment il y a 28 headers pour 24 fichiers sources, dois-je en déduire qu'il n'en reste plus que 4 à recoder ? 
 
Enfin, j'ai jeté un oeil aux headers et il n'y a aucun commentaire sur le rôle de la fonction (déroulement, paramètres, retour), seul le nom est plus ou moins explicite et pour quelqu'un qui ne touche pas à la robotique, c'est pas forcément évident :/ A moins que vous ne nous donniez individuellement une seule fonction à la fois en nous l'expliquant, à part documenter via doxygen (il me semblait pourtant que vous l'aviez fait, si je me souviens bien de la réunion) je ne vois pas comment on pourrait les coder...
 
++
Mg

Commentaires

Portrait de Dom

En fait, il ne s'agit pas non plus de refaire "pour refaire", mais d'incorporer les fonctions de la stm32 dans Iteris, en proposant un lot de fonction de service. (un peu comme de l'encapsulation C++, mais en C!). Par exemple, dans le module d'asservissement, cela a déjà été commencé, en effet, ce module initialise directement ses timers (pour l'instant "en dur" sans fonctions de service). Le but serait de proposer des fonctions claires et simples, plus "directe" que celle de la stm32. Chaque module implémente et utilise ce qu'il a besoin. Les fonctions ne sont pas réunit en un dossier stm32lib.
Pour rester compatible, les fonctions de la stm32 pourront éventuellement réappeller nos fonctions de service (à terme). Mais pour l'instant, commençons simple. Toutes les portions de code de Iteris qui appelle une fonction de la stm32 doivent être refaite de sorte à NE PLUS L'UTILISER. D'une part parce qu'elle n'est pas claire, d'autre part parce qu'elle est propriétaire et que notre projet est sous GPL. Pour comprendre si le travail est bien fait imagine le test suivant: L'ensemble Iteris doit respecter l'architecture sous forme de module (celle qu'en réunion j'ai présenté comme souhait final. Avec les dossiers modules indépendants dans Iteris et le chargeur de module...) et ne plus utiliser stm32. (donc si une fois terminé tu devrais pouvoir supprimer pur et dur le dossier stm32lib et tout devrait fonctionner!).
Bon, j'avoue ne pas être certain d'être clair et capable de m'exprimer correctement!
Miroslav

To the engineer, the world is a toy box full of suboptimized and feature-poor toys. (Adams Scott)

www.axiomcafe.fr

Portrait de Siviuze

Pour faire simple, la bibliothèque du constructeur (stm32lib donc) souffre pour notre projets de plusieurs problèmes majeurs :
- elle est propriétaire, ce qui est incompatible avec notre licence : nous n'aurons pas le droit de redistribuer le projet avec la bibliothèque stm32 dans sa version stable
- elle est incompatible avec l'organisation en module : chaque module possède son dossier 'personnel' qui contient un driver pour les fonctions matériels qu'il requiert, un ensemble de fonctions de services pour interfacer ce matériel (ces fonctions peuvent être inclues dans la définition de driver) et un thread qui lui permet de communiquer avec le reste du système. Le thread permet d'éviter les problèmes d'accès concurrents aux ressources matériels en utilisant les fonctions de communications fournit par chibiOS/RT (mailbox).
- elle n'est pas clair : cela dépend des fonctions mais certaines sont vraiment indigestes
- elle a des problèmes d'optimisations : certains flags du compilateur permettant de réduire la taille final du code ne peuvent être activés lorsque des fonctions de la stm32lib sont utilisées
L'idée est donc de la réimplémenter pour chaque module (ce qui nous permet de facilement désactiver des modules : la place est un facteur critique).
Il est possibles que certaines fonctions matériels très usitées puissent disposer d'un dossier driver séparé (je pense notamment aux timers qui peuvent être utilisées à toutes les sauces et où les configurations possibles sont nombreuses).
 
Si tu as d'autres questions n'hésite pas !