Annexes▲
Récapitulatif Instructions Adressage▲
Code condition des instructions :
Instruction | C | V | Z | N | X |
---|---|---|---|---|---|
ADD | X | X | X | X | X |
ADDA | |||||
ADDI | X | X | X | X | X |
ADDQ | X | X | X | X | X |
ADDX | X | X | X | X | X |
AND | X | X | X | X | |
ANDI | X | X | X | X | X |
ASL | X | X | X | X | X |
ASR | X | X | X | X | X |
Bcc | |||||
BCHG | X | ||||
BCLR | X | ||||
BRA | |||||
BSET | X | ||||
BSR | |||||
BTST | X | ||||
CLR | X | X | X | X | |
CMP | X | X | X | X | |
CMPA | X | X | X | X | |
CMPI | X | X | X | X | |
DIVS | X | X | X | X | |
DIVU | X | X | X | X | |
EOR | X | X | X | X | |
EORI | X | X | X | X | |
EXT | X | X | X | X | |
EXTB | X | X | X | X | |
JMP | |||||
JSR | |||||
LEA | |||||
LINK | |||||
LSL | X | X | X | X | X |
LSR | X | X | X | X | X |
MOVE | X | X | X | X | |
MOVE from CCR | |||||
MOVE from SR | |||||
MOVE to CCR | X | X | X | X | X |
MOVE to SR | X | X | X | X | X |
MOVEA | |||||
MOVEC | |||||
MOVEM | |||||
MOVEQ | X | X | X | X | |
MULS | X | X | X | X | |
MULU | X | X | X | X | |
NEG | X | X | X | X | X |
NEGX | X | X | X | X | X |
NOP | |||||
NOT | X | X | X | X | |
OR | X | X | X | X | |
ORI | X | X | X | X | |
PEA | |||||
RTE | X | X | X | X | X |
RTS | |||||
Scc | |||||
STOP | X | X | X | X | X |
SUB | X | X | X | X | X |
SUBA | |||||
SUBI | X | X | X | X | X |
SUBQ | X | X | X | X | X |
SUBX | X | X | X | X | X |
SWAP | X | X | X | X | |
TRAP | |||||
TST | X | X | X | X | |
ULNK |
Instructions et taille d'opérande :
Instruction | B | W | L |
---|---|---|---|
ADD | X | ||
ADDA | X | ||
ADDI | X | ||
ADDQ | X | ||
ADDX | X | ||
AND | X | ||
ANDI | X | ||
ASL | X | ||
ASR | X | ||
Bcc | |||
BCHG | X | X | |
BCLR | X | X | |
BRA | |||
BSET | X | X | |
BSR | |||
BTST | X | X | |
CLR | X | X | X |
CMP | X | ||
CMPA | X | ||
CMPI | X | ||
DIVS | X | X | |
DIVU | X | X | |
EOR | X | ||
EORI | X | ||
EXT | X | X | |
EXTB | X | ||
JMP | |||
JSR | |||
LEA | X | ||
LINK | |||
LSL | X | ||
LSR | X | ||
MOVE | X | X | X |
MOVE from CCR | X | ||
MOVE from SR | X | ||
MOVE to CCR | X | ||
MOVE to SR | X | ||
MOVEA | X | X | |
MOVEC | X | ||
MOVEM | X | ||
MOVEQ | X | ||
MULS | X | X | |
MULU | X | X | |
NEG | X | ||
NEGX | X | ||
NOP | |||
NOT | X | ||
OR | X | ||
ORI | X | ||
PEA | X | ||
RTE | |||
RTS | |||
Scc | X | ||
STOP | |||
SUB | X | ||
SUBA | X | ||
SUBI | X | ||
SUBQ | X | ||
SUBX | X | ||
SWAP | X | ||
TRAP | |||
TST | X | X | X |
ULNK |
Instructions et adressages :
Mode d'adressage | Catégorie 1 | Catégorie 2 | Catégorie 3 | Catégorie 4 |
---|---|---|---|---|
Absolu | X | X | ||
Immédiat | X | X | X | |
Direct registre d'adresse | X | |||
Direct registre de donnée | X | X | ||
Indirect registre d'adresse | X | X | X | X |
Indirect registre d'adresse pré-décrémenté | X | X | X | |
Indirect registre d'adresse post-incrémenté | X | X | X | |
Indirect registre d'adresse avec déplacement et déplacement et index | X | X | X | X |
Instruction | Source | Destination |
---|---|---|
ADD SUB | Tous | Direct registre de donnée |
ADD SUB | Direct registre de donnée | Catégories 2 et 4 |
ADDA SUBA | Tous | Direct registre d'adresse |
ADDI SUBI | Immédiat | Direct registre de donnée |
ADDQ SUBQ | Immédiat | Catégorie 4 |
ADDX SUBX | Direct registre de donnée | Direct registre de donnée |
AND | Catégorie 1 | Direct registre de donnée |
AND | Direct registre de donnée | Catégories 2 et 4 |
ANDI | Immédiat | Direct registre de donnée |
ASL et ASR | Immédiat | Direct registre de donnée |
ASL et ASR | Direct registre de donnée | Direct registre de donnée |
BCHG BCLR BSET BTSTS | Immédiat | Catégories 1 et 4 |
BCHG BCLR BSET BTSTS | Direct registre de donnée | Catégories 1 et 4 |
CLR | Catégories 1 et 4 | |
CMP | Tous | Direct registre de donnée |
CMPA | Tous | Direct registre d'adresse |
CMPI | Immédiat | Direct registre de donnée |
DIVS DIVU MULS MULU | Catégorie 1 sauf immédiat et absolue | Direct registre de donnée |
EOR | Direct registre de donnée | Catégories 1 et 4 |
EORI | Immédiat | Direct registre de donnée |
EXT EXTB | Direct registre de donnée | Direct registre de donnée |
JMP JSR | Catégorie 3 | |
LEA | Catégorie 3 | Direct registre d'adresse |
LSL LSR | Immédiat Direct registre de donnée | Direct registre de donnée |
MOVE | Tous | Catégories 1 et 4 |
MOVE from CCR MOVE from SR | SR ou CCR | Direct registre de donnée |
MOVE to CCR MOVE to SR | Direct registre de donnée | SR ou CCR |
MOVEA | Tous | Direct registre d'adresse |
MOVEC | Direct registre de donnée | Registre de contrôle |
MOVEM | Liste de registre | Indirect registre d'adresse ou indirect registre d'adresse avec déplacement |
MOVEM | Indirect registre d'adresse ou indirect registre d'adresse avec déplacement | Liste de registre |
MOVEQ | Immédiat | Direct registre de donnée |
NEG NEGX NOT | Direct registre de donnée | |
OR | Catégorie 1 | Direct registre de donnée |
OR | Direct registre de donnée | Catégories 2 et 4 |
ORI | Immédiat | Direct registre de donnée |
PEA | Catégorie 3 | |
Scc | Catégories 1 et 4 | |
SWAP | Direct registre de donnée | |
TST | Tous |
Simulateurs, compilateurs ...▲
Pour développer sur un microcontrôleur, rien ne remplacera jamais une carte d'évaluation. Néanmoins nous pouvons arriver à quelque chose de sérieux avec des outils disponibles gratuitement sur Internet.
L'émulateur de David Grant
c'est un logiciel libre sous licence GPL. Son installation ne pose
pas de problème particulier.Télécharger, dézipper le répertoire sous Windows. ./configure puis make sous linux.
Le binaire s'appelle ColdFire et peut être lancé en
spécifiant un modèle (fichier du répertoire boards). Par défaut c'est un 5206e
qui est lancé. L'interface est assez similaire au débogueur natif.
La liste des commandes s'obtient en tapant "help".
A noter que les deux ports série sont accessibles en faisant un telnet sur les ports 5206 et 5207
L'assembleur de austexsoftware
Cetassembleur
est un Freeware disponible en binaire pour Windows. Il fonctionne très bien sous
Linux avec wine. Son utilisation est triviale :
cfasm monfichier.s produira monfichier.o au format S19.
Il est fourni avec un manuel très complet.
Il permet de mettre en oeuvre un certain nombre de facilités de codage.
Le fait qu'il n'ait pas de licence d'utilisation explicite est néanmoins
un frein à son adoption en production. De plus, il n'y a aucune garantie quand
à la continuation de son développement.
Motorola utilise un format de binaire très simple le : S19
Gcc
On peut trouver des chaînes de cross compilation pour ColdFire
en format binaire sur le site deuclinx
. Une fois installés sous linux ou cygwin les binaires sont dans
/usr/local/m68k-uclinux-tools. Par défaut les options m5200, m5206e, m528X, m5307 et
m5407 sont disponibles. Gcc utilisant la syntaxe AT&T on pourra utiliser
le traducteur de Jan Kratochvil mot2as pour convertir les sources assembleur Motorola.
Gcc a l'avantage d'avoir une licence claire et
d'être un produit sans conteste suivi et maintenu.
Free Embedded Tools from MicroAPL
MicroAPL
fournit un certain nombre d'outils gratuits et fort utiles
pour le développement sur ColdFire :
- ColdFire Init : un générateur de code d'initialisation
- PortAsm/68K for ColdFire : un outil permettant de porter du code 68k vers ColdFire
- CF68KLib : une librairie permettant de faire tourner du code 68000 sur ColdFire
On trouvera ensuite tout un tas de produits commerciaux référencés sur le site deFreescale . Le plus célèbre étant l'IDECodeWarrior .
Liens▲
- L'émulateur de David Grant http://www.slicer.ca/ColdFire/
- Austexsoftware http://www.austexsoftware.com/
- uclinux http://www.uclinux.org/
- le traducteur de Jan Kratochvil http://www.jankratochvil.net/project/mot2as/
- MicroApl http://www.microapl.co.uk
- FreeScale http://www.freescale.com/
- Metrowerks http://www.metrowerks.com/
- Dev'ColdFire http://ColdFire.zewan.com/
- University of Waterloo ColdFire Resource http://sca.uwaterloo.ca/ColdFire/