Vous devez commencer par brancher le cable d'alimentation puis le cable plat de liaison serie de la station la plus proche:
Mise sous-tension:
Un moniteur est resident dans la REPROM du kit. Il offre toutes les fonctionnalites necessaire pour charger, lancer et debugger un programme en RAM.
Pour etablir la communication entre le kit et la station, vous devez lancer la commande
kit 68000 ou kit 68010 (suivant le kit) dans une fenetre terminal de la station. Ainsi tous les caracteres tapes au clavier dans cette fenetre seront envoyer apres chaque Retour Chariot vers le kit via la liaison serie. Le moniteur du kit interprete ces caracteres comme des commandes.
La liason serie fonctionne egalement dans l'autre sens: tous les carateres emis par le kit sont
affiches dans la fenetre.
Apres la mise sous-tension du kit le moniteur vous invite (il affiche son prompt) a entrer une commande.
Format des commandes:
Les commandes ont le format suivant:
prompt> CO [ PARAMETRE(S) ] [ ; OPTIONS ] <CR>
prompt> Ce message est affiche' par le moniteur en attente d'une commande.
CO Nom de la commande en 2 caracteres
PARAMETRE(S) Sont le ou les parametres de la commande. Un parametre peut etre une expression, une adresse ou un symbole.
OPTIONS Options de la commande.
[ ] Precise que Le text entre les crochets n'est pas obligatoire. Une valeur par defaut sera prise.
<CR> Touche Retour Chariot (Return ou Enter), validation de la commande.
Les differents champs doivent etre separes par un espace.
Parametres.
Les prefixes permettent de definir le type du parametre:
$ valeur hexadecimale
& valeur decimale
@ valeur octale
% valeur binaire
* valeur immediate
+ valeur positive (par defaut)
- valeur negative
Par defaut la valeur sera prise en hexadecimale
Une expression peut-etre une ou plusieurs valeurs numeriques separees par les operateurs arithmetiques + ou -.
Edition d'un programme en assembleur
L'édition du programme se fait sous un éditeur du réseau (ved, ed, vuepad, emacs, vi, ...).
ATTENTION votre nom de fichier doit avoir une extension en .s , exemple: Source.s
Il est obligatoire de respecter les champs séparés par des espaces ou des tabulations:
Etiquette..........Mnemonique..........Operande..........Commentaires
Les commentaires en début de ligne sont précédés d'une étoile, les commentaires après une opérande sont précédés d'un point-virgule.
Toute valeur hexadécimale est suivie du suffixe H et est précédé d'un 0 si le premier chiffre est une lettre; exemple:
MOVE.L 0FFB000H,D0
Suffixe hexadécimal : H
Suffixe octal : Q
Suffixe binaire : B
Un nombre sans suffixe est considéré comme décimal. Donc le nombre décimal 14 peut s'écrire 0EH ou 16Q ou 1110B.
L'adressage immédiat est indique par une dièse:
MOVE.B #0C3H,D1
L'adressage indirect est symbolise par des parenthèses; exemple:
SUB (A5),D4
La commande asm permet d'assembler un fichier source en assembleur 68000 ou 68010:
- assemble le fichier FichierSource.s soit en 68000, soit en 68010 (l'option par defaut est 68000).
Cette commande génère 3 fichiers:
Un fichier .lst qui contient le code machine + le source + la table des symboles + les éventuelles erreurs.
Fichier.o est le fichier objet.
Fichier.s29 est le fichier ``exécutable'' a telecharger dans le kit.
Pour une application ne comportant qu'un module en C 68000
Il faut utiliser la commande de compilation cckit + en option le nom du kit(68000,
68010 ou 68030) + le nom du fichier (sans extension .c). Cette commande génère alors 4 fichiers:
Fichier.lst contient le mnémonique assembleur (en correspondance avec le source C)
+ le code machine + la table des symboles).
Fichier.map est le rapport de l'édition des liens.
Fichier.o est le fichier objet.
Fichier.s29 est le fichier a telecharger dans le kit.
Pour une application comportant des modules C 68000 et assembleur 68000
Soit l'application nommée appli comportant:
1 module main.c (programme principal en langage C)
1 module ext.s (sous-programme en langage assembleur 68000)
TRADUCTIONS SEPAREES:
a) Compilation des sources C avec la commande c68 nomfichier:
info18 4: ls
main.c
info18 5: c68 main
info18 6: ls
main.c main.lst main.o
main.c source C du programme.
main.o contient le code objet de main.c ( creer si main.c est sans erreur).
main.lst contient la traduction du fichier source C main.c en mnemonique assembleur +
le code machine 68000.
b) Assemblage des sources assembleur avec la commande a68 nomfic :
info18 6: ls
ext.s
info18 7: a68 ext
info18 8: ls
ext.s ext.lst ext.o
ext.s source 68000, extension en .s obligatoire!
ext.o contient le code objet de ext.s
ext.lst contient le code machine 68000 + la table des symboles + les éventuelles erreurs...
EDITION DES LIENS
La commande l68 NomFichier permet une édition des liens avec tous les fichiers
objets (extension .o) présents dans le répertoire courant avec les librairies standards.
Le paramètre Nomfichier est le fichier a telecharger sur le kit. Exemple:
info18 8: ls
ext.s ext.lst ext.o main.c main.lst main.o
info18 9: l68 appli
info18 10: ls
ext.s ext.lst ext.o main.c main.lst main.o
appli.map appli.s29
appli.s29 exécutable au format S2-S9 a telecharger sur le kit
appli.map rapport de édition des liens et éventuellement les erreurs.
Note: La commande l68 [options] NomFichier accepte 2 options ( kit68000 et kit68010).
L'option par défaut est kit68000. Elle a pour effet de générer un fichier exécutable a
partir de l'adresse hexadécimale 800 (compatible avec le kit 68000), pour l'option kit68010
l'adresse est FF9000 (compatible avec le kit 68010).
Téléchargement vers le kit:
Dans une fenêtre Xterm, placez vous (cd + chemin) dans votre répertoire de travail. Lancez la
commande kit + le nom du kit 68000, 68010 ou 68030. Attendez l'apparition du prompt
retourne par le kit. Alors vous pouvez entrer la commande:
send Fichier (sans extension .s29)
Vous exécuté votre programme avec la commande:
go + l'adresse de début du programme (800 sur kit68000 et ff9000 sur kit68010)
Pour revenir sous UNIX tapez la commande quit ou Ctrl-c.
Les autre commandes du moniteur du kit sont les suivantes:
Liste des commandes du moniteur
.reg:
.reg <CR>
.reg EXPRESSION <CR>
Son rôle est de permettre les opérations sur les registres. La commande non suivie d'une expression
numérique retourne le contenu du registre; sinon elle met le registre a la valeur spécifiée.
La commande DF (pour 68000 registre display):
DF <CR>
Elle édite tout simplement -en hexadécimal- le contenu de tous les registres.
la commande RD (pour 68010 register display)
voir la commande DF (cf 6.2)
La commande MD (memory display):
MD <=Symbole1><,=Symbole2><;option><CR>
MD <,longueur><;option><CR>
Les options possibles sont:
DI : avec désassemblagee.
DIS : avec désassemblage et édition des symboles.
P : édition d'une page écran.
Cette commande permet de visualiser une zone mémoire, sous deux formats possibles:
Au nombres d'octets désiré pour édition en hexadécimal.
Au nombre de lignes désassemblés pour édition en source 68000/68010
La longueur par défaut est 16. Les lignes ne sont pas tronques: on prend le multiple
de 16 le plus proche par excès.
Si aucune des 2 options DI ou DIS n'est précisée, on est en édition hexadécimale;
l'équivalent ASCII de chaque octet est affiche en fin de ligne.
Si un octet ne correspond pas a un code ASCII affichable, on écrit un point.
Si une des option DI ou DIS est utilisée, et si on ne rencontre aucun code opératoire
indéfini, ce code sera désassemblé sous forme de constante sur un mot (DC.W).
La frappe de <CR> après l'exécution de la commande permet de visualiser les adresses
suivantes avec les mmes options.
La commande MM (memory modify):
MM <=Symbole1><CR>
MM <Adresse><CR>
Cette commande permet de visualiser un ou plusieurs emplacement mémoire, avec ou sans
désassemblasse, et éventuellement de les modifier. Attention: Si la modification de
données hexadécimales ne pose pas de problèmes, il n'en va pas de mme pour la modification
de programme désassemblé; Si on remplace un code opératoire par un autre ne comportent pas
le mme nombre d'octets, la suite du programme sera perdu. Ce genre de modification doit être
fait de préférence par éditeur sur le programme source.
L'adresse et son contenu sont édites de la façon suivantes:
<=Donnee><CR> modification de la mémoire et passage a l'adresse suivante.
<=Donnee> ^ <CR> modification de la mémoire et passage a l'adresse précédent.
<=Donnee> = <CR> modification de la mémoire et visualisation de la mme adresse.
<=Donnee> . <CR> modification de la mémoire et arrêt.
Si l'option DI a été choisie, il est nécessaire d'insérer un espace avant la nouvelle instruction.
Dans le cas ou une mauvaise instruction est rentre, le caractère X est affiche, et la mme adresse
est visualisée vue d'une nouvelle modification.
La commande MS (memory set):
MS <=Symbole1><=Donnee><CR>
MS <=Adresse><=Donnee><CR>
MS <=Symbole1><='Texte ASCII'><CR>
MS <=Adresse><='Texte ASCII'><CR>
Cette commande permet de modifier directement la mémoire. la donnée peut être alphanumérique (Texte
ASCII entre cotes) ou numérique.
La commande DU (dump memory):
DU [T]<=Symbole1><=Symbole2><CR>
DU [T]<=Adresse debut><=Adressefin><CR>
Cette commande permet de visualiser a écran le contenu d'une zone mémoire.
La commande BM (block move):
BM <=Symbole1><=Symbole2><=Symbole3><CR>
BM <CR>
Cette commande permet de dupliquer une zone de mémoire. Le bloc origine est définir par ses deux
adresses de début et de fin; il est copie a partir de l'adresse destination.
La commande retourne le message suivant:
Adresse mémoire =
Adresse mémoire =
La commande BS (block search):
BS <=Symbole1><=Symbole2><`Texte ASCII'><CR>
BS <`Texte ASCII'><CR>
BS <=Symbole1><=Symbole2><;taille><CR>
BS <;taille><CR>
Cette commande permet de localiser dans la mémoire (RAM ou ROM) une chaîne de caractères
ASCII ou une valeur numérique. La recherche se fait entre les bornes précisée par les deux
premiers paramètres.
Si on cherche une chaîne, celle-ci doit-être placée entre cotes.
Lorsqu'on cherche une valeur numérique, on peux utiliser un masque: dans ce cas, la recherche
se fera en appliquant un ET logique entre les données testées et le masque. Dans ce mode de
recherche, on peut aussi précisée la taille du mot a chercher, et le type de la recherche
(égalité ou inégalité) :
;B Donne de type octet, recherche d'une égalité.
;-B Donnée de type octet, recherche d'une inégalité.
;W Donnée de type mot, recherche d'une inégalité.
;-W Donnée de type mot, recherche d'une inégalité.
;L Donnée de type mot long, recherche d'une égalité.
;-L Donnée de type mot long, recherche d'une inégalité.
L'option par défaut est ;B (recherche d'une inégalité sur un octet).
La commande retourne les messages suivants: Adresse mémoire =
suivi des adresses mémoire ou la recherche est positive.
La commande BF (block fill):
BF <=Symbole1><=Symbole2><=Donnee><CR>
BF <=Adresse debut><=Adressefin><=Donnee><CR>
Cette commande, comme toutes les autres, accepte des symboles comme paramètres. Il suffit de faire
précéder leur nom du signe =. Block fill permet d'initialiser une zone de RAM a une valeur donnée.
La donnée doit être du type MOT et les adresses doivent en conséquence être paires.
La commande retourne le message suivant:
adresse mémoire = <=Adresse debut><=Adressefin>
La commande BT (block test):
BT <=Symbole1><=Symbole2><CR>
BT <CR>
BT <,longueur><CR>
Cette commande teste la mémoire (de façon destructive) entre les bornes précisées. Si le test se
déroule sans erreur, toute la zone est positionnées a zero. Sinon, un message est édité sur écran,
donnant:
l'adresse de l'erreur,
la valeur écrite,
la valeur lue.
La commande BR (breakpoints):
BR <CR>
BR <=Symbole><CR>
BR <Adresse><CR>
BR <=Symbole><;compteur><CR>
BR <Adresse><;compteur><CR>
BR sans paramètre affiche les points d'arrêts déjà positionnes en mémoire.
BR suivie d'une adresse mémoire positionne un point arrêt a cette adresse; A l'exécution, le programme
s'arrêtera a cette adresse en affichant le contenu des registres. Si on ajoute a BR un compteur (sur 32 bits),
le programme ne s'arrêtera qu'après un nombre de passages déterminé par la valeur du compteur.
Le nombre de points d'arrêt est limite a 8. Apres le passage par un breakpoint, le programme peut
être relance par la commande GO. Les points arrêt ne sont pas modifiées par un RESET.
La commande NOBR (no breakpoints)
NOBR <CR>
NOBR <=Symbole><CR>
NOBR <Adresse><CR>
Sans paramètres, cette commande efface tous les points arrêt précédemment positionnes. Suivi d'une adresse
(ou d'un symbole), elle supprime le breakpoint (s'il existe) qui était associe a cette adresse.
La commande GD (go direct):
GD <CR>
GD <=Symbole><CR>
GD <Adresse><CR>
Cette commande lance le programme objet en mémoire, soit a l'adresse spécifiée dans la commande,
soit a l'adresse contenue dans le registre PC par défaut. Cette commande ne positionne pas les
points d'arrêts.
La commande GO (exécution du programme):
GO <CR>
GO <=Symbole><CR>
GO <Adresse><CR>
Cette commande est identique a la précédente, a ceci près qu'elle positionne les points d'arrêts en mémoire.
La commande GT
GT <CR>
GT <=Symbole><CR>
GT <Adresse><CR>
Cette commande est identique a la précédente, a ceci près qu'elle positionne un point d'arrêt temporaire,
de plus, celui précise dans le texte de la commande. Des qu'un point arrêt est rencontre, le programme
s'arête en supprimant le point arrêt temporaire.
La commande T
T <CR>
Elle exécuté l'instruction pointée par le compteur ordinal PC, édite le contenu des registres
(cf commande RD, affiche la prochaine instruction a exécuter, et s'arrête...
Un appui sur <CR> ``trace'' l'instruction suivante. T suivi d'un compteur exécute le nombre
d'instructions précise par la valeur du compteur. Les points d'arrêt et les compteurs d'arrêts
sont opérants en mode TRACE. Il est a noter cependant que le mode TRACE ne peut pas être utilisé
dans un programme de traitement d'interruption ou de traitement d'exception (TRAP).
La commande TT (trace to temporary breakpoint):
TT <CR>
TT <=Symbole><CR>
TT <Adresse><CR>
Elle positionne les points d'arrêts, et lance le programme en mode TRACE (en affichant le
contenu des registres a chaque instruction) et s'arrête sur un point arrêt (en tenant compte
des compteurs).