Compiler et implémenter la démo de ChibiOS

Introduction

Afin de prendre en main chibiOS et de rentrer dans le vif du sujet, nous allons commencer par compiler, en guise d'essai, le programme de démonstration fournit avec chibiOS. Il sera considéré que le lecteur est capable de lui même d'installer les programmes spécifiés, et, soit de comprendre, soit de se documenter.

Téléchargement des divers outils

1- Afin d'utiliser chibiOS, nous devons déjà le télécharger.
Nous vous conseillons d'utiliser la version 1.0.0. pour réaliser votre premier essai car c'est sur cette dernière que nous travaillerons par la suite.
La documentation détaillée de chibiOS (en anglais) se trouve sur le site principal.
Note: chibiOS peut être décompressé dans le dossier de travail de votre choix car nous travaillerons pour ce premier exemple en ligne de commande en se plaçant dans le répertoire de travail (vous verrez pas la suite). En revanche, plus loin, nous automatiserons le processus de "compilation-implémentation-run-debugage" ce qui nécessitera de travailler avec un chemin ne contenant aucun espace. Les dossiers comme "Document and Settings" ou "Progam Files" ne pourront être utilisé. De plus, il est vivement conseillé de travailler à la racine de votre disque.
Je vous propose de prendre directement cette bonne habitude.
 
2- Créer un dossier ARM à la racine du disque (sous windows: "C:\ARM").
Ce dossier contiendra les divers outils de compilation nécessaires à nos projets. Dans ce dossier, nous allons créer un nouveau dossier appelé "projets" et décompresser chibiOS dedans.
Note: Nous allons utiliser maintenant des outils issus du toolchain Yagarto. Ce projet met en place un ensemble d'outil comprenant tout ce qu'il faut pour développer-compiler-debugger.
 
3- Relier la carte STM32-P103 au PC au travers de la sonde JTAG. 
Vous prendrez évidément soin d'installer les drivers de ladite sonde. Afin de pouvoir interfacer PC et carte, nous avons besoin d'un outil capable d'effectuer les communications entre ces deux périphériques. Cet outil se nomme openOCD. Il s'agit d'un serveur permettant de transcrire des messages de type telnet ou de debug en messages compréhensibles par la sonde JTAG, ceci permettant de programmer la carte et de deboger le programme in situ.
 
4- Installer cet outil directement dans le dossier précédemment créé (C:\ARM).
Au cours de l'installation, veillez à choisir l'option automatique de modification de la variable PATH (en cas d'oubli, il est évidement possible de le faire manuellement).
 
5- Installer de la même façon les outils yagarto tools et yagarto GNU ARM toolchain.
Le premier vous fournira un ensemble d'outils nécessaire à la compilation et le second des utilitaires tels que le makefile.
NOTE: ces deux ensemble d'outils doivent être installé dans des dossiers du même nom dans votre répertoire C:\ARM

Compilation de la démo

1- Nous devons tout d'abord commencer par nous placer dans le dossier de la démo. Nous utiliserons évidément le portage de notre carte, c'est à dire la démo pour STM32-P103 dans le dossier ChibiOS_1.0.0\demos\ARMCM3-STM32F103-GCC.
Pour cela, ouvrez un nouvel invite de commande (sous Windows: démarrer/exécuter/cmd).
Taper la commande:

cd C:\ARM\projets\ChibiOS_1.0.0\demos\ARMCM3-STM32F103-GCC

2- Pour compiler, vous devez vous assurer que le projet est propre, c'est à dire qu'aucun fichier issu de compilation précédente n'existe encore. Le but étant bien-sûr de recompiler l'ensemble du projet. 
Utiliser la commande:

make clean

Puis, compiler le projet dans son ensemble en utilisant:

make all

De multiples fichiers devraient avoir été créés: il s'agit de fichiers de divers extensions représentant les différents "morceaux" du fichier de compilation final. Dans votre dossier principal (celui dans lequel nous travaillerons) vous devriez avoir deux fichiers finaux ch.bin et ch.elf
Le premier représente le programme compilé, en binaire, à implémenter dans votre carte. Le second représente le même programme auquel a été ajouté des options de débugage, des points d'arrêts et pleins de choses utiles pour débuger, c'est à dire vérifier le bon fonctionnement du programme.

Transmition du programme à la carte

1- Nous allons en premier lieu devoir définir pour openOCD un fichier de configuration lui expliquant comment se connecter à notre carte en particulier.
- créer un fichier maconf.cfg dans C:\ARM par exemple.
- insérer les lignes suivantes:
  1. #******
  2. # fichier de configuration par Miroslav, pour des détails
  3. # ou des options supplémentaires, consulter la documentation
  4. #******
  5. #
  6. # --
  7. # définition du port pour le serveur telnet 4444
  8. # openOCD permet en effet de définir une connexion de type telnet
  9. # en localhost avec la carte (celle-ci devenant en quelque sorte le serveur).
  10. telnet_port 4444
  11. # --
  12. # définit le premier port sur lequel écouter la réponse de GDB provenant de la carte
  13. # (les informations de débugage).
  14. # Le système écoute sur le port indiqué puis sur le port+1 etc...
  15. # jusqu'à obtenir le signal.
  16. gdb_port 3333
  17. # --
  18. # définit le drive à utiliser pour la connexion.
  19. # Ici celui fourni par le fabricant (ftdi2xx)
  20. interface ft2232
  21. # --
  22. # description du type de branchement JTAG. Ici nous utiliserons le Olimex JTAG-Tiny
  23. ft2232_device_desc "Olimex OpenOCD JTAG TINY A"
  24. # --
  25. # définition du modèle des GPIO (quelle patte sert à quoi!) de notre modèle
  26. #(ici toujours le modèle standard Olimex-JTAG)
  27. ft2232_layout olimex-jtag
  28. # --
  29. # fournit l'ID du fabricant du connecteur et l'ID Produit exact.
  30. ft2232_vid_pid 0x15ba 0x0004
  31. # --
  32. # définition de la vitesse maximale de connexion
  33. #(ne doit pas dépasser 1/6 de la valeur du processeur de la carte)
  34. # pour le driver ftd2xx la vitesse se calcule comme suit:
  35. # maxSpeed= 6Mhz/(nombre+1)
  36. jtag_speed 20
  37. # --
  38. # définit le temps qu'openOCD doit attendre avant toute nouvelle opération
  39. # de type nSRST (en ms)
  40. jtag_nsrst_delay 200
  41. # --
  42. # définit le temps qu'openOCD doit attendre avant toute nouvelle
  43. # opération de type nTRST (en ms)
  44. jtag_ntrst_delay 200
  45. # --
  46. # définit la forme des signaux utilisés comme reset de la connexion
  47. reset_config trst_and_srst separate
  48. # --
  49. # définit différentes tailles d'instructions et de registres
  50. jtag_device 4 0x1 0xf 0xe
  51. jtag_device 5 0x1 0x1 0x1e
  52. # --
  53. # définit l'action par défaut lors du démarrage de la connexion:
  54. # ici on lance toujours un rdaemon_startup reset
  55. # --
  56. # définit à quelle carte se connecter (jusqu'à présent nous travaillions
  57. # sur le type de connection: ici, ce qu'il y a à l'autre bout du fil!)
  58. # Ici nous indiquons que le type de notre carte est cortex-m3
  59. # puis qu'elle fonctionne en little endian (ordre des bits d'un mot binaire:
  60. # en Little Endian, le bit de point de plus faible est à gauche)
  61. # ce sera la connexion 0 (par défault)
  62. target cortex_m3 little run_and_init 0
  63. # --
  64. # définit ce qui doit être fait lorsque la connexion est établie.
  65. # Ici nous laissons tourner le programme déjà existant puis l'on s'arrête.
  66. # Nous laissons donc tourner la carte définie par la connexion 0 durant 30ms
  67. run_and_halt_time 0 30
  68. # --
  69. # définit l'espace que peut utiliser le debug sur la carte.
  70. # Ici sur la connexion 0, le debug peut utiliser les 16384 octets commencant à l'adresse
  71. 0x20000000
  72. # nobackup signifie que lorsque q'un programme est envoyé,
  73. # toute la zone de debug est systématiquement réécrite.
  74. working_area 0 0x20000000 16384 nobackup
  75. # --
  76. # définit la zone dans la flash à utiliser
  77. flash bank stm32x 0x08000000 0x00010000 0 0 0
  78.  
2- Ouvrir une nouvelle invite de commande et se placer à nouveau dans le dossier du projet:
cd C:\ARM\projets\ChibiOS_1.0.0\demos\ARMCM3-STM32F103-GCC
puis lancer un nouveau serveur de connexion distante:
  1. openocd-ftd2xx -f C:\ARM\maconf.cfg
  2.  
Cette invite de commande a maintenant créée un serveur distant qui se trouve virtuellement sur la carte. Nous devons à présent nous y connecter pour envoyer notre programme
 
3- Se connecter au serveur distant. Pour cela, -sans fermer la fenêtre actuelle du serveur crée-, ouvrir une nouvelle invite de commande et lancer:
  1. telnet localhost 4444
  2.  
Votre invite de commande s'est transformée en invite de requête sur un serveur distant. Tout ce que vous ferez dans cette fenêtre aura une incidence sur le serveur (la carte) comme le prouve la fenêtre-serveur.
 
4- Pour transférer et lancer le programme, il suffit de lancer la séquence suivante:
  1. soft_reset_halt
  2. wait_halt
  3. poll
  4. flash probe 0
  5. stm32x mass_erase 0
  6. flash write_bank 0 ch.bin 0
  7. soft_reset_halt
  8. resume
  9.  
Cette séquence initialise la carte, efface la mémoire, la remplie avec notre fichier ch.bin puis lance le programme.

Conclusion

Sur votre carte, une petite LED doit s'être mise à clignoter!
Certes cela semble bien peu et décevant au vue de la complexité de la manœuvre. Relativisons!
D'une part cette manœuvre est indépendante de la complexité du code à compiler et transmettre.
D'autres part si l'on ne voit qu'une simple LED il se passe en réalité beaucoup plus! C'est un noyau complet qui tourne et s'exécute la dessous, avec notamment un test et un benchmark de l'ensemble des fonctions.
Pour s'en convaincre, même si je ne décrirai pas la procédure dans l'article, le lecteur est invité à brancher un câble série entre son ordinateur et celui de la carte et d'observer les résultats de cette procédure de test.
 
Utiliser une connexion hyperterminal (Accessoire/Communications/HyperTerminal) en détection automatique sur le bon port COM :
- baudrate: 38400
- bit de stop: 1
- aucune parité
- pas de contrôle de flux
La procédure de test démarre lorsque l'on appuie sur le bouton poussoir.
 
 
Votre note : Aucun(e) Moyenne : 3.7 (13 votes)

Commentaires

Utilisateur non enregistré

Cialis Danger cheap cialis Viagra Online Bestellen Ausland No Prescription Pharmacy Online viagra Cialis Originale Forum Generic Levitra Overnight Discount Deltasone Cialis No Presciptiononline El Viagra Y La Diabetes Purchase Accutane Online Come Acquistare Viagra In Farmacia Vendo Cialis Napoli viagra Prezzo Cialis One Day Antabuse For Sale Buy Generic Propranolol Online Over The Conter Chlamydia Treatment Amoxicillin Real Shipped Ups Amoxicilina Free Shipping Discount Shop Accutane Products Best Prices For Viagra On Loine Bentyl Website Saturday Delivery Order Clomid Pills Propecia Se Usa Kaufen Buy Dapoxetine Lebensmittel Zur Levitra Keflex Affects On Birth Control Pills Priligy Effect Of Tadalis Sx Soft Get Pyridium Without Perscription Tablet With Free Shipping viagra Baclofene Contre Indication Discount Need Cheap Macrobid In Usa Amex Accepted Cheap Viagra Venta Cialis En Tenerife Phu Buy Viagra Usa Html Buy Viagra Usa ajanta kamagra oral jelly Paroxetine Order Colchicine By Mail How To Get Accutane Online Kamagra Gold 100mg Order Now Dutasteride Pharmacy Boise viagra Amoxicillin Yeast Infections Generic Viagra Online Paypal Buy Cheap Strattera Online Drugstore Hong Kong Billig Cialis Buy Viagra Cialis 20 Mg Gold Price Generic Viagra Generic Cytotec Usa Propecia Weight Training Cialis Quante Ore Prima Levitra Pill Propecia Dolor Testicular Unicure Remedies Pvt Ltd Buy Zoloft Cheap Fluconazole By Mail Medical Propecia Price Of Levitra Amoxicillin Clavulan Top Hair Loss Products Propecia And Rogaine Generic Propranolol Buy Prednisone Overnight Delivery Progesterone C.O.D. Internet Prozac Interactions Priligy Taiwan Cialis Urologie Generic Viagra Buy Celexa No Prescription Package Insert Amoxicillin Dosage Strattera Pill Cephalexin 500mg Doasage Pastillas Cialis Farmacia Prozac To Buy Where To Purchase Generic Amoxicilina Quick Shipping Cialis Prostata Buy Strattera Online Usa Viagra Problemi Psicologici Kamagra Oral Jelly Quanto Prima Viagra Free Trial Levothyroxine Canada No Prescription Vre Amoxicillin Buy Strattera Online Usa Viagra Canada Drugs Bladder Infection Amoxicillin Dog Cost Of Strattera Keflex By Vbulletin Cheap Brand Propecia Online Pharmacy Propecia Maca Viagra Ano

Portrait de Cespet

Euro Pharmacy Online [url=http://lasix.mdsmeds.com/cheap-lasix-no-rx.php]Cheap Lasix No Rx[/url] Can You Buy Cialis In Cebu Pharmacy Stendra Us Without A Script Pharmacy [url=http://accutane.usamedz.com/accutane-pills-online.php]Accutane Pills Online[/url] Cialis Generico Marca Zithromax Tri Pak [url=http://cialis.usamedz.com/cialis-online-pharmacy.php]Cialis Online Pharmacy[/url] Buy Propecia In Usa Order Discount Propecia [url=http://nolvadex.ccrpdc.com/buy-nolvadex-online-cheap.php]Buy Nolvadex Online Cheap[/url] Official Canadian Pharmacy Flagyl Without Insurance [url=http://doxycycline.rxbill7.com/vibramycin-online-online.php]Vibramycin Online Online[/url] Dbc Secure Site For Viagra 100 Mg [url=http://kamagra.mdsmeds.com/order-kamagra-online.php]Order Kamagra Online[/url] Testiculos Propecia Costo Del Cialis 5 Mg [url=http://clomid.mdsmeds.com/buy-clomid-cheap.php]Buy Clomid Cheap[/url] Vancomycin Viagra Dosage Level [url=http://priligy.mdsmeds.com/buy-priligy-pills.php]Buy Priligy Pills[/url] Brand Cialis Sale Secure Stendra Cheap [url=http://4rxday.com]Cheap Cialis[/url] Sintomas Propecia order accutane online no prescription [url=http://kamagra.ccrpdc.com/kamagra-online-cheap.php]Kamagra Online Cheap[/url] Achat Pfizer Viagra Lowest Price For 20 Mg Of Levitra [url=http://nolvadex.rxbill7.com/order-nolvadex.php]Order Nolvadex[/url] Kamagra Effects Cephalexin Dosage [url=http://giwes.com]cheap cialis[/url] Viagra Wie Teuer Effexor Xr Without Prescription [url=http://prozac.usamedz.com/prozac-pills.php]Prozac Pills[/url] Achat Cialis 5 Mg Pak Side Effects [url=http://antabuse.mdsmeds.com/best-antabuse-online.php]Best Antabuse Online[/url] Where To Buy Erythromycin Keflex Drug Allergy [url=http://prozac.usamedz.com/brand-prozac-online.php]Brand Prozac Online[/url] Cheap No Perscription Viagra Viagra Farmacia Ricetta [url=http://kamagra.mdsmeds.com/buy-kamagra-usa.php]Buy Kamagra Usa[/url] Propecia Buy Online Canada Fluoxetine Visa No Doctor C.O.D. Express Delivery [url=http://prozac.ccrpdc.com/prozac-buy-online.php]Prozac Buy Online[/url] Baclofen Generique En France Amoxicillin Bacterial Reaction [url=http://zithromax.rxbill7.com/zithromax-z-pack.php]Zithromax Z Pack[/url] Propecia Shop Pill