HowTo / Tuto / Prise en main des cartes Kinetis tower TWR K40 / K60 /Freedom (FRDM) KL25Z / KL46Z

MCU Freescale Cortex M0 M3 M4

T. Grandpierre –sept. 2014

 

1)   Environnements de développement :

 

Sous windows : 2 grandes possibilités Code Warrior (l’IDE Freescale) ou Keil-MDK µVision. Ils permettent tous les deux de saisir du code C/asm, de le compiler, de le télécharger sur le micro, de faire du debug pas à pas.

 

a)      Code Warrior (« CW ») : c’est l’outil de dev. Freescale, l’avantage quand on l’installe s’est que l’on va disposer des exemples freescale pour chacune des cartes. L’inconvénient : il faut s’acquitter d’une licence si l’on veut développer des programmes dont la taille (celle du binaire de sortie) dépasse 128Ko. Il existe une version d’évaluation sans limite de taille mais avec une durée limitée à 1 mois.  Pour nos projet, la version limitée en taille est souvent suffisante.

 

Code Warrior est téléchargeable depuis la page suivante qui est ici , sur laquelle vous avez

 

·         « CodeWarrior MCU v10.6 Evaluation Edition »   la version complète limitée à 1 mois qui devient limitée en taille de binaire généré quand le mois est écoulé.

 

·         « CodeWarrior MCU v10.6 Special Edition »    la version illimitée en durée mais limitée en taille. Je vous conseille d’utiliser celle-ci, puis plus tard si vous etes limité par les 128Ko ( !!), d’installer la version  Evaluation Edition.

 

·         Remarque importante : CW a été conçu avant Win7, le répertoire d’installation des programmes s’appelait alors « c:\Program Files », il n’y avait pas de repertoire « c:\programme file x86 » dans lequel s’installent par défaut tous les softs 32bits => ATTENTION si possible  installez CW  dans c:\Program Files  car si il est installé ailleurs des exemples risquent de ne pas fonctionner car les includes sont parfois codés en dur. Cependant pour mes tests tout s'est bien passé en l'installant dans c:/freescale/CW etc

 

 

b)      Keil MDK µVision est l’outil supporté par ARM pour tous les micros de la famille des cortex M : Freescale (Kinetis), NXP (LPC), STM (32F 32L), Texas Instrument (Stelaris, Tiva) etc.).  Son IDE est très simple et très rapide à prendre en main (c’est celui que nous utilisons pour nos TPs d’introduction aux Cortex M à  l’ESIEE en première année).  Comme CW, il existe en version limitée (MDK-Lite) en taille de code généré mais seulement 32Ko (ce qui est quand même largement suffisant pour les premiers projets).

Il est téléchargeable depuis cette page, il faudra remplir un formulaire : http://www.keil.com/arm/mdk.asp

Il est intéressant de le connaitre pour passer d’un constructeur à l’autre. De plus, il est fourni avec au moins un exemple (clignotement d’une led)  pour quasiment toutes les cartes de dev. de tous les constructeurs.

Il est aussi très intéressant en pédagogie car il contient aussi un simulateur assez complet permettant entre autre de voir les GPIO et autres périphériques (attention cependant, ce simulateur n’existe pas pour toutes les variantes de micro/constructeur, pour un constructeur donné il faut chercher la référence de la variante pour laquelle il existe un simulateur).

2)   Premier test

 

a)      Brancher votre carte en USB (il faudra peut être rechercher les drivers manuellement dans le répertoire de freescale/CW si windows ne les trouve pas, chez moi c'est c:/Freescale/CW MCUV10.5/Drivers/Segger)

Il est important de le faire avant de lancer CW, ainsi la carte sera présente dans les menus dès le début (les profils de compilation seront existant)

b)      Lancer CW qui propose alors un emplacement par defaut pour le workspace : vous pouvez le changer si vous voulez, et quand vous voudrez passer d’un projet à l’autre ou l’archiver le transmettre le plus simple sera de le zipper.

c)       Ensuite ouvrir un projet d’exemple existant, utilisez « Help->Welcome -> Example project » : il faut choisir le type de famille de processeur  voulu (des kinetis dans notre cas) :). Attention ne pas prendre les "Processors Expert example project" pour commencer. Processor expert est très bien pour générer automatiquement des configurations de ports d'IO, de modules etc, mais n'est pas adapté quand on ne sait pas ce que l'on fait.

d)      Une liste de projets pour kinetis va alors s'afficher, je vous conseille d'en choisir un seul à la fois. Pour savoir lequel est adapté à votre carte, élargissez la fenetre de façon à voir le nom complet du projet exemple ainsi que son emplacement :  en fonction de son emplacement (/k60 /k60 etc) vous saurez pour quel processeur est destiné l'exemple.

En cochant une case CW propose alors de copier les fichiers dans le workspace ou non, il me semble qu’une seule des 2 options fonctionne bien (il est toujours préférable de copier et laisser ainsi les fichiers originaux intacts.

e)      Une fois le projet ouvert, vous avez 2 choix :

a.       soit on téléchargera le code en RAM (le programme sera perdu dès un reset ou une coupure d’alimentation)

b.      soit on téléchargera le code en mémoire Flash : c’est plus long mais le programme reste en mémoire ensuite.

Pour changer entre Flash ou RAM il suffit de cliquer sur le nom du projet (partie de gauche de CW : explorateur de fichier) et de sélectionner le mode voulu dans la liste déroulante. Parfois il n'y aura pas de choix, une seule des deux configurations aura été prévue.

f)       Ensuite il suffit de compiler (build, le petit icone d'un marteau) le programme, puis de le télécharger sur la cible (download/debug, l'icône du petit insecte "bug"). Il est très important d’avoir branché la carte avant, sinon CW demande de créer soit même un profil de download/debug ce qui est fastidieux. Si il faut choisir, sur les FRDM par exemple, on utilise OpenSDA. Si aucune carte n'est trouvé, ou bien que le driver n'a pas été installé on tombe sur une fenetre "P&E  Assistant" : il faut alors essayer Refresh/Retry jusqu'à voir la carte, éventuellement changer la carte de port USB…

g)      Une fois le programme télécharger, faire « run » dans le debuggeur et admirez vos leds clignoter (si c’est l’exemple que vous avez choisi) !

 

Autres exemples : il se peut que vous trouviez des exemples de code directement sous forme de zip sur le site de freescale ou ailleurs. Si ce sont des projets CW il faut les ouvrir en faisant "File" puis "Import" puis "Existing Projects into Workspace"

3)   Pour aller plus loin

 Pour comprendre et surtout modifier les programmes d’exemple il est indispensable d’avoir à disposition les schémas et users manual. En voici quelques uns pointant sur l'espace interne ESIEE (icampus). Sur le site Freescale, pour chaque dev. board il y a une page, choisir l'onglet "Downloads" de ces pages pour trouver les exemples et les schémas des cartes.

 

a.       Les Kinetis :

                                                  i.      "Kinetis Peripheral Module" KQRUG.pdf : compilation de demo/code Kinetis Peripheral Module Quick Reference

                                                 ii.      AN3731.pdf et AN4410.pdf : FlexTimer ADC et IT et FlexTimer and ADC Synchronization for Field Oriented Control on Kinetis

                                                iii.      AN4419.pdf : Using DMA and GPIO to emulate timer functionality on Kinetis Family devices

                                               iv.      AN4381.pdf : Configuring the FlexTimer for Position and Speed Measurement with an Encoder

                                                 v.       

b.      Ressources pour la K40 TWR :

                                                  i.      "K40 Sub-Family Reference Manual" K40P144M100SF2Datasheet.pdf  : 1735pages, tous les registres, modules et périphériques etc, K40-Reference Manuel Processeur

                                                ii.      " K40 Sub-Family Data Sheet" K40P144M100SF2Datasheet.pdf (78 pages essentiellement les caract. mécaniques et electriques, pinout), Data sheet K40

                                                iii.      Kinetis TWR-K40X256-UM.pdf K40 TWR- Reference

                                               iv.      schema : TWR-K40X256-SCH.pdf K40 TWR Schéma

 

c.       Ressources KL 25Z

                                                   i.      KL 25 Processor Reference Manual KL25P80M48SF0RM.pdf

                                                ii.      User's Manual du processeur KL-25Z KL25P80M48SF0.pdf

                                              iii.      KL25 Sample code (du site freescale)

                                               iv.      Manuel Carte FRDM-KL25Z : FRDM-KL25Z Users Manual (Rev 2).pdf

                                                 v.      Schéma carte KL-25Z : FRDM-KL25Z_SCH_REV_E.pdf

                                               vi.      Brochage carte FRDM-KL25Z : FRDM-TFC_HandAssemblyPrints.PDF

                                             vii.      Schémas carte puissance moteur de la FRDM-KL-25Z FRDM-TFC_Schematics.pdf

                                           viii.      Sérigraphie FRDM-KL25Z FRDM-TFC_HandAssemblyPrints.PDF

                                               ix.      Exemple Freescale Cup pour FRDM-KL25Z Version ?? FRDM-TFC_R1.0.zip et FRDM-TFC-REVB-BUILD_Package.zip

                                                 x.      Tutorial interessant sur la FRDM-KL25Z

                                               xi.      Mon tuto pour IT sur port GPIO : Interruptions sur Port GPIO et Fichier Exemple GPIO+IT sur FRDM KL46Z

d.      Ressources FRDM KL46Z

                                                  i.      Reference manuel processeur KL4x (KL46Z256) KL46P121M48SF4RM.pdf

                                                ii.      Datasheet processeur : KL46P121M48SF4RM.pdf

                                                iii.      User Manual carte Freedom : KL46P121M48SF4RM.pdf

                                               iv.      Schéma carte Freedom : FRDM-KL46Z_SCH.pdf

                                                 v.      Exemple de Projets FRDM-KL46Z (.exe) Exemple de projet version zip kinetis_kl46_sc.zip

                                               vi.      Le problème de driver de la FRDM-KL46Z (tiré de http://mcuoneclipse.com/2013/09/02/the-freescale-opensda-trap-no-device-available-or-something-like-that/#more-9353)

·         Lorsque l'on reçoit la carte et que l'on veux y télécharger un programmable avec Code Warrior, la carte n'est pas reconnue par CW alors que les drivers sont bien installés : C'est du au fait que la carte est livrée dans un mode qui ne convient pas (le mode Bootloader, ce mode permet de voir la carte comme une clef USB).Il faut donc changer le mode de démarrage de la carte : Débrancher la carte , En gardant le bouton de reset (SW2 entre les 2 prises USB) appuyé, connectez la carte au pc par la prise USB "SDA", LA carte est alors vue comme une clef appelée BOOTLOADER et la led verte clignote tant que vous restez appuyé. Relachez. Téléchargez  FRDM-KL25Z quickstart package depuis http://www.freescale.com/freedom (ce n'est pas la bonne carte mais ca fonctionne). De ce zip estraire le fichier "DEBUG-APP_Pemicro_vxxx.SDA" et le mettre dans le disque "BOOTLOADER " (la carte). Débranchez et rebranchez l'usb (sans appuyer sur le bouton) : maintenant vous pouvez télécharger le code avec CW!

e.      Ressources Kinetis TWR K60 : (attention les exemples fournis dans CW sont pour une autre version du K60) :

                                                   i.      page freescale : http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=TWR-K60F120M

                                                ii.      allez dans l'onglet download pour trouver les schémas et les exemples : par exemple KINETIS_120MHZ_SC.zip contient des démos directement exécutables pour l'ADC, l'interface spi, USB, dac. Une fois décompressé attention pour les compiler suivre les instructions du readme du sous répertoire build/cw :

1.       choisir le répertoire  KINETIS_120MHZ_SC comme workspace

2.       une fois le projet ouvert, il faut exclure  le fichier fpu_asm.s de la compilation (bouton droit exclude from build ou décocher la case build

 

4)   Quelques liens

 

La page freescale de la freescale cup (https://community.freescale.com/docs/DOC-1284) donne plusieurs liens et tuto très intéressants pour vous aider à créer des projets CW « from scratch », manipuler les GPIO, les horloges , les pwm etc. Cependant il s’avère un peu difficile parfois de s’y retrouver car historiquement plusieurs types de cartes sont supporter : 1) carte à base de MCU PowerPC (non ARM), 2) carte kwickstick (carte de dev. K40) 3) carte KL-25Z etc

 

Mes pages Freescale Cup contiennent aussi des infos. qui peuvent vous aider :

·         https://icampus.esiee.fr/course/view.php?id=104

·         http://www.esiee.fr/~grandpit/FC/QuickStartFreescaleCupTG.htm

 

5)   Remarques – Problèmes / solutions


TOWER K40

Drivers USB : c'est PnE, dans les projets sélectionner OSJTAG pour la Tower k40
-Sur mon PC bureau ESIEE sous XP, problème : j'ai dû désinstaller tous les drivers et installer les driversP&E.zip
-Sur mon  PC perso. (win7), j'ai installé les drivers 64bits (PEDrivers_install.exe, P&E Hardware Interface Drivers, Version 11 (Windows XP/Vista/7))
=>j'essaie aussi l'OSBDM Virtual Serial Toolkit qui permet d'accéder au port serie par usb (http://www.pemicro.com/osbdm/index.cfm)
(pemicro_osbdm_osjtag_tower_toolkit.exe) et j'essaie avec free-virtual-serial-ports.exe de hddsoftware.com.

===>Echec, P&E m'a informé que leur nouveau OSBDM firmware permet de voir la liaison série du BDM comme un comm. port standard (CDC), pour ca il faut juste faire un update firmware avec firmware_updater_install.exe de p&e (le numéro firmware est 31.21).

Procédure pour faire du serial other usb :

1) faire un update du firmware de l'interface JTAG/BDM de la carte tower avec le logiciel firmware_updater_install.exe sur le site de pemicro.com . Il suffit de l'installer, le lancer, choisir OSBDM, Kinetis puis quand il le demande débrancher la carte et ajouter le jumper JM60 sous l'écran du lcd (normalement toutes les cartes freescale cup ont été flashée maintenant, en avril)

2) quand on rebranche la carte twr : un nouveau port com apparait

3) ensuite il suffit de changer votre appli tower pour qu'elle utilise ce com port qui passe par l’usb et partagé avec le  : k40_platform.h ET io.c (voir plus bas)