Débuter avec les Kinetis KL2 (ou KL0) - Tout pour le débutant > Découverte + Ma première application de A à Z - Articles et téléchargements
Débuter avec les Kinetis KL2 (ou KL0) - Tout pour le débutant > Découverte + Ma première application de A à Z - Articles et téléchargements
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
proposer
 
   
             
 
Catégories
 
   
             
 
Recherche
 
   
 

Débuter avec les Kinetis KL2 (ou KL0)

Publié par Charly le 16/03/2013 (8233 lectures)
Première édition le 11/03/2013

Les Kinetis série L font partie des microcontrôleurs 32bits Freescale basés sur des cœurs ARM CortexM0+.
Affichés pour leur bas coût (2 a 3 euros le chip à l'unité...) et leur faible conso, ils se présentent comme un gros concurrent des S08 (qui ont déjà une dizaine d'année) pour nous les amateurs et pour ceux qui font de l'embarqué...
Il existe à ce jour 4 sous familles dans la série L, en cours de développement :
KL0KL02 (pre-prod)KL1KL2
CoeurARM Cortex M0+ARM Cortex M0+ARM Cortex M0+ARM Cortex M0+
Flash32Ko max32Ko256Ko max (128Ko aujourd'hui)256Ko max (128Ko aujourd'hui)
Ram4ko max4ko32Ko max (16Ko aujourd'hui)32Ko max (16Ko aujourd'hui)
BoitierLarge gammeMinus : 1.9 mm x 2.0 mmLarge gammeLarge gamme
USBnonnonnonOUI
Compatible série K (Cortex M4) pour augmenter les perf d’une appli existantenonnonOui (K10)Oui (K20)

Je fais ce petit article pour vous inviter à tester ces joujoux forts intéressants et pour vous éviter les premiers écueils des docs "Quick start" de Freescale qui sont un peu compliquées à aborder sans se faire promener partout.

Quel programmateur ?

La série L se programme exclusivement avec l’interface SWD (Serial Wire Debug) qui se présente sur un connecteur 10 points.
PEMICRO, l’éternel partenaire de Freescale a développé des cartes d’essai pour les KL0 et pour les KL2. Elles sont équipées du OpenSDA qui gère ce mode de debug SWD et basé sur un Kinetis K20 (un ARM Cortex M4 quand même…).

Premier pas

Tout commence donc par l’achat d’une carte de démonstration FRDM-KL25Z qui ne coûte que 12euros HT !
Pour commencer avec un KL0, vous avez à votre disposition la carte de démo FRDM-KL05Z qui coûte moins de 10euros HT ! Ce tuto conviendra également vu qu'elles sont très proches. Il semble juste qu’il y ait à disposition un peu moins d’exemples et de docs pour la version KL0, la FRDM-KL25Z (KL2) apparait comme « The » carte de démo pour les Kinetis L.

Déballage : Il est très rapide, il n’y a QUE la carte dans une petite boite…

La carte de démo FRDM-KL25Z

Nous trouvons dans un coin de la carte l’OpenSDA avec son connecteur USB, un Kinetis K20, son quartz et son connecteur 10pin SWD.
Nous trouvons par ailleurs la partie "application" de test avec le Kinetis KL25Z128VLK4, un quartz, un slider capacitif, un accéléromètre, une led 3 couleurs, son connecteur USB (le KL2 a un module USB OTG), une empreinte en attente pour une mémoire FLASH SPI AT45DB161, et toutes les autres IO reparties sur des connecteurs en attente.

L'openSDA : 3 modes de fonctionnement supers. ! Mais pas tous en même temps !

Le SDA dispose de trois fonctionnalités :
  • Une classe CDC (port COM virtuel) avec son driver CDC sérial port (on peut le tester avec plusieurs applis de démonstration, voir ci dessous).
  • Une classe Mass storage device (par défaut à réception de la carte de démo). Ce mode permet de charger une application pré-compilée (binaire) dans le KL25, sans utiliser Code Warrior ou autre soft. Citation de Yvan à ce sujet : "ca c'est classe !!!!!".
  • Une classe propriétaire (avec son driver propre à PEMICRO) : Un programmateur/debugger classique (et bigrement performant pour ce que j’en ai vu, mais il en faut peu pour m'impressionner...)
La classe CDC (port COM virtuel) est toujours active.
Pour les deux autres il faut choisir et reprogrammer l’OpenSDA en fonction de ce que l’on souhaite. Sous XP et Seven ça tourne nickel. D’après PEMICRO cela tourne aussi sous mac et linux…

Essais sans programmation

Le K20 (SDA) et le KL25 sont tous les deux préprogrammés à la réception de la carte de démo, on a donc droit à un premier test au branchement du cordon USB (à raccorder sur la prise USB du SDA) :
Par défaut, le SDA est reconnu comme un mass storage device par le PC (on y reviendra) et on a droit à une jolie application où la led 3 couleurs change de teinte suivant les mouvements de la carte et le slider capacitif qui permet de modifier l’intensité lumineuse de la led.
On peut ensuite charger d’autres applications dans le KL25 en glissant tout simplement un fichier binaire dans le lecteur "FRDM-KL25Z" qui apparait dans windows (mass storage device). L’OpenSDA se charge de programmer le KL25 aussitôt.

Le fichier n’est pas réellement écrit dans le lecteur, il est juste lu et transféré dans le KL25. Du coup, sous Windows Seven, la fenêtre de copie ne se ferme pas une fois le fichier copié. Rien de grave, ça se termine proprement dès que l’on déconnecte l’usb. Il n’y a pas ce souci avec Windows XP.

Où trouver ces fichiers binaires à tester ? A deux endroits :
  • En téléchargeant le FRDM-KL25Z Quick start package qui contient une doc pas terrible mais tout un tas de fichiers binaires (.srec), les fameux fichiers binaires à copier dans le lecteur mass storage device.
  • En téléchargeant un .exe de 26Mo sur le site de Freescale KL25_SC.exe, appelé FRDM-KL25Z and TWRKL25Z48M Sample Code Package
    Cette archive auto extractible vous donnera accès à un répertoire "Kinetis L Sample Code" qui contient des exemples de code pour 3 plateformes de développement (Code Warrior et 2 plateformes ARM que je n’ai pas regardé).

    Dans tous les projets CW il y a un répertoire binary qui contient les fameux fichiers pré-compilés que le mass storage device saura digérer.

Tester ainsi le driver CDC virtual com port :
Il faut charger le fichier "helloworld.srec", disponible dans le répertoire "binary" du projet "helloword".
Depuis l’hyperterminal (ou teraterm ou autre) on peut voir un message qui nous invite à cliquer sur une touche pour changer la couleur de la led…et ça marche !

Passer l’OpenSDA en mode Programmateur/debug (ou le remettre en Mass Storage Device)

Pour cela il faut passer l’Open SDA en mode bootloader et lui changer son applicatif :
Il suffit de débrancher la carte et de rebrancher le cordon USB de l’openSDA en maintenant pressé le bouton reset.
La led du SDA se met à clignoter et windows voit apparaitre un nouveau lecteur mass storage device du nom de "BOOTLOADER" (et non plus "FRDM-KL25Z" comme avant) ; L’OpenSDA est prêt à recevoir une mise à jour pour lui-même. (le K20 sera reprogrammé, pas le KL25)

Où trouver les mises à jour ?
Il faut télécharger le ZIP "Firmware Apps" sur la page dédiée à l'OpenSDA sur le site de PEMICRO
Cette archive contient des fichiers .SDA
2 nous intéressent :
  • DEBUG-APP_Pemicro_v102.SDA, qui va transformer l’OpenSDA en Programmateur/debugger.
  • MSD-FRDM-KL25Z_Pemicro_v107.SDA, qui va transformer l’OpenSDA en mass storageDevice, comme l’est la carte de démo à réception.

Ne pas oublier d’installer les drivers du debugger OpenSDA, car oui il faut évidement un nouveau driver dans ce cas. Ce driver est disponible sur la même page, la page dédiée à l'OpenSDA sur le site de PEMICRO

OpenSDA non reconnu par Code Warrior pour le debug

Si vous tentez de programmer avec CW la carte de démo et que vous voyez apparaitre cette fenêtre au chargement :
Cela signifie soit que vous n’avez pas (ou mal) installé les drivers du debugger OpenSDA, soit (et c’est le plus probable) que vous n’avez pas reflashé l’OpenSDA avec son firmware DEBUG-APP_Pemicro_v102.SDA, le firmware qui en fait un debugger plutôt qu’un mass storage device.

Documentation

Deux documentations sont fondamentales pour aller plus loin :
Et quelques documents forts utiles :
  • le schéma de la carte de démo : FRDM-KL25Z_SCH.pdf
  • Kinetis L Peripheral Module Quick Reference : KLQRUG.pdf qui regroupe un tas de petits exemples pour ne pas passer 100 ans sur des bricoles.
  • L’OpenSDA User's Guide : OPENSDAUG.pdf

Essai avec Code Warrior

Depuis CW, il faut créer un projet : File->New->Bareboard project
Donner un nom au projet: Choisir le KL25Z128
Choisir l’Open Source SDA comme connexion

(A noter les options de debug I/O (UART ou console) qui passent par le driver CDC de l’openSDA ou sur la console de CW !)

C'est terminé.

On obtient un fichier "main.c" vierge avec juste :
#include "derivative.h" /* include peripheral declarations */

int main(void)
{
    
int counter 0;    
    
    for(;;) {       
           
counter++;
    }    
    return 
0;
}

Il suffit de le remplacer par :
#include "derivative.h" /* include peripheral declarations */

#define PTOR(PORT)    GPIO##PORT##_PTOR
#define LED1_PTOR(LED1_PORT,LED1_BIT)        PTOR(LED1_PORT) |= (1<<LED1_BIT)
#define LED1_TOGGLE     LED1_PTOR(D,1)

int main(void)
{
    
int counter 0;
    
int counter2 0;
    
    
SIM_COPC 0x00;         // Disable the watchdog timer 

    
SIM_SCGC5 |= (uint32_t)0x1200UL;     /* Active l'horloge pour driver les ports */
    
    
PORTD_PCR1 = (uint32_t)((PORTD_PCR1 & (uint32_t)~0x01000600UL) | (uint32_t)0x0100UL); /* configure le MUX de la pin de la led bleue */
    
    
GPIOD_PDDR |= (uint32_t)0x02UL/* pin de la led bleue en sortie */
    
    
for(;;) {       
        
LED1_TOGGLE;
                   for(
counter=0;counter <65000counter++)
                   {
                       for(
counter2=0;counter2 <10counter2++)
                       {
                       
__asm("nop");
                       }
                   }
    }
    
    return 
0;
}
Un clic sur l’icône "marteau" pour compiler puis un clic l’icône "scarabée vert" pour programmer la cible via l’OpenSDA et hop la led 3 couleurs clignote en bleue !
A noter l’activation de l’horloge sur le module PORTS (SIM_SCGC5) indispensable sinon l’exécution plante dès que l’on cherche à écrire dans le registre PCR.

Transformer la carte de démo en programmateur indépendant

Sur la carte de démo, OpenSDA et partie applicative peuvent être totalement séparés en coupant quelques ponts sur des straps.

Nous avons donc à disposition un programmateur SWD pour 10euros !

Résumé

J’ai le sentiment d’avoir sous les yeux le parfait outil pour le débutant et bien au-delà !
La doc de prise en main est manifestement faite pour des bons et le manuel de référence précise un peu trop discrètement certaines choses fondamentales comme l’activation des ports via le registre SIM_SCGC5 mais c’est peut être que l’outil est tellement énoooorme que j’en demande un peu trop à la doc qui a déjà fort à faire avec toutes ces fonctionnalités…
Il y a beaucoup de choses très intéressantes à tester : le debug console et uart, les ports avec filtre, pull up et down,l'IHM capacitif, les innombrables timers, les UART low power, le DMA (kesako) et tout pour les amateurs de MQX, de LitleMQX (kesako ?) et pour les autres.

Enjoy yourself…et racontez-nous tout

Tags: Débutant   OpenSDA   kinetis  


Article précédent Article suivant
Article précédent MC9S08 à partir de zéro
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Auteur Commentaire en débat
joel_g
Posté le: 30/03/2013 11:29  Mis à jour: 30/03/2013 11:29
Pilier de la communauté
Inscrit le: 27/09/2005
De:
Contributions: 793
 Re: Débuter avec les Kinetis KL2 (ou KL0)
Très bon article pour démarrer avec le plus simple des projets : la petite LED qui clignote ! On trouvera pas mieux

Joël
Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Débuter avec les Kinetis KL2 (ou KL0) - Tout pour le débutant > Découverte + Ma première application de A à Z - Articles et téléchargements