Pense-W3ete du LAMI-MANTRA


Interface Khepera / Sun

  • Par ligne série (Serial mode): Il faut d'abord configurer les jumpers du Khepera de façon adéquate, et puis ouvrir un terminal série avec la commande tip . Par exemple tip kb38 ouvre une communication série par le port B à 38400 bauds. Apres il faut remettre à zero (reset) le Khepera. Le terminal devrait afficher Serial Communication Protocol. Apres vous pouvez taper le commande list et recevoir toute une liste de commandes disponibles en mode série. Pour fermer le terminal faites ~. sinon vous allez bloquer la ligne sérielle, et ça demandera de rebooter la station pour la débloquer.

  • Télécharge du code (download mode): Il faut d'abord configurer les jumpers du Khepera de façon adéquate, et puis ouvrir un terminal série avec la commande tip . Par exemple tip kb38 ouvre une communication série par le port B à 38400 bauds. Apres il faut remettre à zero (reset) le Khepera. Le terminal devrait afficher S format Motorola loader outrement il y a un problème de configuration. Ensuite, tapez ~> et en réponse à
    local file name? donnez le nom du fichier de code géneré avec le transcompilateur (crosscompiler), avec l'extension .s28
    Les LEDs du Khepera devrait clignoter pendant le téléchargement. Pour fermer le terminal faites ~.

  • Comment avoir un echo sur le terminal (tip): Grace à Masakazu Yamamoto, ce problème a été résolu. Il faut avoir un fichier appelé ~/.tiprc qui doit contenir:

    halfduplex
    localecho
    

  • Inclusion de routines en assembleur dans un programme en C: D'abord il faut écrire un fichier texte avec extension .s contenant la routine en question. Les mnémoniques qui peuvent être utilisés correspondent à l'assembleur de 680x0 disponible pour les vieilles stations Sun2. La liste des mnemoniques peut être trouvé soit dans la documentation de Sun (salle CAO) soit dans le TP Khepera 1 du cours microprocesseurs, géré par Francesco Mondada. Par exemple:
    | ********************************************************************
    |   void clk_event(void)
    |   				Genère un pulse sur 
    |   la ligne CLK du DAC, c'est a dire le port PA1 du MC68331.
    | ********************************************************************
    
    
    	GPT_DIR  = 0xFFF906
    	GPT_DATA = 0xFFF907
    	
    .globl _clk_event
    	.even
    
    _clk_event:	
    
    	bset	#1,GPT_DIR	| definit PA1 comme sortie
    	
    	bclr	#1,GPT_DATA     | CLK_LOW: bit 1 mis a 0.
    	bset    #1,GPT_DATA     | CLK_HIGH: bit 1 mis a 1.
    	bclr    #1,GPT_DATA	| CLK_LOW: bit 1 mis a 0.
    
            rts
    
    Note: Cette routine ne reçoit pas des paramètres, et par conséquent il n'y a pas d'accès à la pile.

    Ensuite il faut créer le fichier objet avec la commande:

    sun2-gcc -c f_assm.s qui produit le fichier f_assm.o

    De la même façon on compile le fichier principal en C:

    sun2-gcc -I. -c f_principal.c qui produit le fichier f_principal.o

    L'édition de liens (linkage) se fait:

    sun2-ld -L/dir/gcc68k/gcc-2.7.1/lib -o f_principal.code -s -Ts_khep /dir/gcc68k/gcc-2.7.1/lib/skhe_crt0.o f_principal.o f_assm.o -lKhep

    Et finalement pour produire du code MC68331 on fait:

    precross f_principal.code
    sform f_principal.code > f_principal.s28


  • Ecriture du programme principal en assembleur: La procedure est similaire au point précedent. D'abord il faut compiler avec:

    sun2-gcc -c f_assm.s qui produit le fichier f_assm.o

    et ensuite linker et transcoder avec:

    sun2-ld -L/dir/gcc68k/gcc-2.7.1/lib -o f_assm.code -s -Ts_khep /dir/gcc68k/gcc-2.7.1/lib/skhe_crt0.o f_assm.o f_autres.o -lKhep

    precross f_principal.code
    sform f_principal.code > f_principal.s28


  • Comment générer des instructions de 32 bits?: Les instructions spécifiques au MC68331 (par rapport au 68000) ne peuvent pas être généreés par mnémoniques. On doit les spécifier comme opcodes. Pour cela on doit d'abord obtenir les opcodes correspondants (en les produisant à la main ou bien lisant l'output d'un assembleur MC68331) et ensuite les introduire dans le fichier .s de la façon suivante:

     .long 	0x4E47		| L'opcode de "trap #7" est 4E47h 


  • Comment programmer pour la tourelle générique 68331?: Puisqu'il s'agit du même processeur, la programmation et compilation sont similaires. L'édition des liens est différente, car les librairies ont changé:

    sun2-ld -L/dir/gcc68k/gcc-2.7.2/lib -o f_principal.code -s -Ts_gen331 /dir/gcc68k/gcc-2.7.2/lib/s331_crt0.o f_principal.o f_autres.o -l331top

  • Simulateur de Khepera: Il existe un simulateur de Khepera qui permet de simuler et de piloter un robot Khepera par le port série. Ce logiciel, crée par Olivier Michel, peut être librement téléchargé.




  • Pour des commentaires et modifications adressez-vous à : Yuri López de Meneses