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
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).
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"
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
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
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.
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)