La carte de dev LPC en compagnies de quelques cartes sœurs. |
La procédure d'implémentation de ce compilateur Forth est on ne peu plus triviale. Il est nécessaire de télécharger la version mecrisp-stellaris-2.1.3.tar.gz (version 2.1.3 à la date de ce billet) disponible sur le site Sourceforge.net. La décompression de cette archive permettra de trouver le fichier 'mecrisp-stellaris-lpc1114fn28.hex' dédié, on s'en douterait, au processeur LPC1114FN28!
Ce fichier 'hex' doit être programmé dans le LPC à l'aide de la carte de développement que j'ai développé (la programmation peut aussi se faire sur plaque d'essais en fil volants, mais c'est moins pratique), et par exemple le logiciel FlashMagic :
Il n'y a plus qu'a user du bouton 'start'! |
Ready! |
Tout d'abord le type d'émulation :
Puis le port série concerné et la configuration nécessaire à la communication avec Forth à savoir 115200, 8, N, 1 :
Enfin, il est nécessaire de désactiver les broches RTS et DTR de l'interface série sinon le processeur reste constamment en mode RESET :
Il ne reste plus qu'à appuyer sur le bouton RESET de la carte pour obtenir l'invite du compilateur Forth :
J'aime qu'un plan se déroule sans accrocs ;-) |
\ Blink a LED on P1.8
$40044014 constant IOCON_PIO1_8
$50013FFC constant GPIO1_DATA
$50018000 constant GPIO1_DIR
: blinky ( -- )
$C0 IOCON_PIO1_8 ! \ Set P1.8 as GPIO without Pullup/Pulldown. $C0 are reserved bits that must be set.
256 GPIO1_DIR ! \ Set P1.8 as Output
begin
256 GPIO1_DATA !
1000000 0 do loop
0 GPIO1_DATA !
1000000 0 do loop
key? until
;
Ce code se passe de commentaire... Si ce n'est que, bien que la carte de développement possède une LED dédiée à ce type d'exercice, je ne souhaitait pas modifier le programme de l'auteur car sur la carte, la LED ne se trouve pas sur le port P01_8. J'ai donc câblé une LED 'externe' directement sur le PORT P01_8 :
Le système utilisé avec la LED jaune reliée sur le connecteur externe. |
L'étape suivante consiste donc à 'envoyer' ce fichier à la carte de développement à l'aide de l'émulateur de terminal. Afin de laisser le temps au noyeau Forth de décoder les lignes envoyées et de les gérer, j'ai inséré quelques milli-secondes d'attente après chaque lignes. Realterm permet d'effectuer ce type d'action très facilement :
Juste avant d'appuyer sur 'Send file'.... |
Il suffit dès lors de taper la commande 'blinky' pour lancer l'application et constater le clignotement de la LED :
Et voilà! |
: delay 0 do loop ; ok.
10000000 delay ok.
s'exécute en à peu près 4 secondes. Pour rappel, le Micromite version 2 exécute une boucle basic vide en 11 secondes. Une carte à 8051 basic rapide, en 50 secondes et le vénérable Sharp PC1500 en 3000 secondes. Nous sommes donc plus de 700 fois plus rapide que le PC1500.
Bonjour,
RépondreSupprimerJe croyais être le seul français à avoir flashé Mecrisp-Stellaris !
Je l'ai fait sur une stm32f429 à écran graphique il y a 2 ans. Mais devant l'apparente petitesse de la communauté française j'ai laissé tomber pour me tourner vers FlashForth pour Atmel 328p.
Néanmoins si l'on peut se compter en France , pourquoi ne pas retenter le coup.
Peut être à vous lire.
Guy Fortabat
78squirel78@gmail.com
PS: j'ai toujours un Sharp PC1350 ;-)