-
Notifications
You must be signed in to change notification settings - Fork 3
Robot for Eurobot
License
jbtredez/Atlantronic
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Programmes du robot d'Atlantronic pour la compétition EUROBOT. Site : http://atlantronic.eu Ancien site : http://atlantronic.toile-libre.org/ --------------------------------------------------------- A/ Dependances "arm-none-eabi" toolchaine (thumb2, cortex m3 soft-float et cortex m4 hard-float) : - binutils-2.25 - gcc-4.9.2 (patch t-arm-elf, cf dossier toolchain) - gdb-7.9 - newlib-2.2.0 (cf ebuild dans toolchain) cible linux : - readline - (gtk+-2 et gtkglarea-2.1) ou gtk+3.16 - assimp - libepoxy-1.2 - glm-0.9.6 doc : - doxygen >= 1.8.4 - graphviz >= 2.28 jtag : - openocd 0.8.0 - libftdi 1.0 Package Ubuntu: - ibftdi1 - openocd - libassimp-dev - gcc-arm-none-eabi:i386 - libstdc++-arm-none-eabi-newlib - libreadline-dev - libgtk2.0-0-dev - libgtkgl2.0-dev - libepoxy-dev - libglm-dev pb d'installation du driver usb utiliser la ligne suivante: sudo insmod /Atlantronic/src/linux/modules/atlantronic_usb.ko --------------------------------------------------------- B/ Compilation compilation du code : make compilation qemu : il faut utiliser la branche Gitatlantronic-1.7.0-cortexm4 de qemu make qemu compilation du module usb de communication : make modules installation du moduke usb de communication : make install -------------------------------------------------------- C/ Simulation exemple simulation avec le binaire arm homologation : cd Atlantronic ./bin/linux/glplot -s bin/disco/homologation -------------------------------------------------------- D/ Installation sur cible dans un premier terminal : ./scripts/jtag/gdb_server_discovery dans un second terminal : arm-none-eabi-gdb -q bin/disco/homologation -ex "target remote localhost:3333" programmer : prog --------------------------------------------------------- E/ Organisation des dossiers src/kernel : Code bas niveau (noyau temps réel + BSP de la carte + drivers) src/middleware : code réutilisable et non bas niveau src/disco : code spécifique pour l'année src/linux : Code utilitaire pour linux - src/linux/modules : module usb de communication avec la carte - src/linu/test : tests unitaires réalisables sous linux - src/linux/tools : outils qemu : qemu modifié pour la simulation --------------------------------------------------------- F/ Regles de codage - Code en anglais et commentaires en français - Utiliser le c++ principalement - (c++) Le nom d'un fichier doit être identique au nom de la classe qu'il contient. - Le nom du fichier .h est identique au nom du fichier.c ou .cxx - La première lettre de chaque mot qui compose le nom de la classe,enum ou structure doit être en Majuscule exemple : MotionTool -> OK Motion_Tool -> KO motion_tool -> KO - (c++) Les variables d'une classe posédent toujours un préfixe m_ devant le nom de la variable (sauf éléments mathématiques vecteur.x ,....) Classe: - Les variables pointeurs possédent toujours un p après le préfixe s'il existe et avant le nom de la variable ex membre d'une classe bool m_theVariable -> OK bool m_TheVariable -> KO bool * m_ppointeurOfTheVariable -> OK variable bool theVariable -> OK bool TheVariable -> KO bool * ptheVariable -> OK - utiliser la macro assert pour vérifier des choses toujours vraie (pointeur non null par exemple) pour avoir la vérification uniquement en debug - Les destructeurs ne sont pas à créer (sauf cas exceptionnel) car on utilise que des déclarations statiques. - Les constructeurs ne sont pas à créer s'ils ne font rien. - Méthode / fonction : La première lettre de chaque mot sauf du premier mot qui compose le nom de la méthode doit être en Majuscule ex: void openWindows() -> OK void OpenWindows() -> KO void open_Windows() -> KO - Il faut toujours mettre des accolades pour les if, for, while, Switch.... - Les If ternaire "très simple" sont authorisés - Pour chaque cas de switch un break est présent à la fin. Si un break n'est pas présent un commentaire indique que c'est normal. - Il est possible d'utiliser des return pour sortir au plus vite des fonctions en cas d'erreur - Il est possible d'utiliser les goto seulement et seulement pour la gestion des cas d'erreur llorsqu'il y a des ressources a liberer (mutex) pour être sur de liberer les ressources correctement