
Voilà ,
Après avoir installé CodeWarrior 10.3, MQX 4.0, assemblé le kit d’évaluation (TWRK60F120M-KIT, composé des cartes TWRK60F120M et TWR-SER), je suis prêt à tester mon tout nouveau jouet: une microcontrôleur Kinetis K60, de chez Freescale.
Pour ce premier contact, l’objectif tient en une ligne: « Hello World ».
Etape 1: Préparatifs
La fonction printf() va envoyer les caractères passés en paramètres sur la sortie standard.
Avec MQX et le kit d’évaluation TWRK60F120M-KIT, l’entrée et la sortie standard s’effectuent par défaut via l’UART 5. Cela est bien pratique, car c’est justement l’UART 5 qui est relié au connecteur DB9 déporté sur la carte d’extension TWR-SER.
Pour info, les paramètres par défaut de l’UART 5 sont:
- Baudrate = 115200
- Parity = None
Pour obtenir l’affichage « Hello World » sur le PC, il faut donc relier le connecteur DB9 du kit d’évaluation à un port série du PC. Ensuite, un terminal (PuTTY, Hyperterminal, etc…) sera nécessaire. CodeWarrior 10.3 possède un terminal qui fait parfaitement l’affaire (mais il est un peu caché!).
Etape 2: Générer le projet
Pour créer rapidement l’application « Hello World », tout est déjà prévu. Il suffit de suivre les étapes suivantes:
- Dans CodeWarrior 10.3, aller dans le menu File, puis New et enfin MQX 4.0 Project.
- Le wizard demande un nom pour le nouveau projet: « helloworld » par exemple.
- Sélectionner le nom du kit d’évaluation pour lequel le projet sera généré (dans mon cas: Kinetis Evaluation Board, TWRK60F120M Board.
- Cliquer sur Next (pas sur « Finish »)
- Choisir l’option « Select application Type » : Example application.
- Dans le dossier Basic examples, sélectionner hello example
- Cliquer sur Finish.
L’application est maintenant générée et se trouve dans la liste des projets actuellement ouverts. Il comprend une seule tâche, qui fait une seule chose:
Un clic sur Build et la compilation s’effectue sans erreur.
Etape 3: Exécution
Un clique sur le bouton Debug lance le chargement du projet sur le K60. Une fois le chargement effectué, l’exécution du programme est suspendue jusqu’à ce que l’utilisateur clique sur le bouton « Run ».
Avant de faire cela, il convient d’ouvrir le terminal qui permettra de voir le texte « Hello World » s’afficher via l’UART 5 :
- Dans le menu Window, choisir Show View puis Other…
- Développer le dossier Terminal, sélectionner l’item Terminal et cliquer sur OK
- Dans l’onglet « Terminal » qui vient d’apparaître, cliquer sur l’icone Connect (zigzag vert). Une fenêtre d’options apparaît.
- Pour Connection Type, choisir Serial
- Pour le champ Port, sélectionner le port COM du PC sur lequel est relié le kit d’évaluation
- Changer la valeur de Baud Rate en 115200
- Cliquer sur OK
On peut maintenant lancer l’exécution du projet: un clic sur Run (bouton avec la flèche), et le texte « Hello World » s’affiche dans le terminal que l’on vient d’ouvrir.
C’est gagné !
Etape bonus: La même résultat sans port série
MQX permet de définir librement le périphérique qui sert à l’entrée/sortie standard.
En plus des « TTY », qui sont associés aux UARTs du K60 (ex: « ttyf: » est associé à l’UART 5), il est également possible d’utiliser le périphérique « IO Debug ». Avec « IO Debug », la sonde JTAG se débrouille magiquement par acheminer les caractères du printf() dans la Console de debug de CodeWarrior. Ce qui permet de se passer du port série.
Pour obtenir ce résultat:
- Ouvrir le code source de MQX: rechercher le fichier .wsd correspondant au kit d’évalutation (dans mon cas: C:\Freescale\Freescale_MQX_4_0\config\twrk60f120m\cw10\twrk60f120m.wsd) et le faire glisser-déposer dans l’onglet « CodeWarrior Projects » de CodeWarrior.
- Ouvrir le projet du BSP (dans mon cas: bsp_twrk60f120m)
- Dans le dossier twrk60f120m User Config, double-cliquer sur user_config.h
- Dans la section Default Driver Installation in BSP startup, mettre la valeur de BSPCFG_ENABLE_IODEBUG Ã true.
- Dans la section Default MQX initialization parameters, mettre la valeur de BSP_DEFAULT_IO_CHANNEL Ã « iodebug: » (y compris les guillements).
- Il faut maintenant tout recompiler en cliquant sur Build All.
Avec cette modification dans le code source de MQX, tous les caractères passés à printf() vont s’afficher dans la console de debug de CodeWarrior.
Avantages:
- On se passe de la liaison RS232.
- On peut même se passer complètement de la carte d’extension TWR-SER pour faire fonctionner ce programme d’exemple.
Inconvénients :
- C’est très lent.
- Pour des projets plus compliqués, il y a un risque de blocage. Notamment, il devient impossible de faire fonctionner le programme d’exemple du lecteur de carte SD.