This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS/TMS320F28035: comprendre le code assembleur

Part Number: TMS320F28035


Tool/software: Code Composer Studio

Bonjour,

J'aimerais comprendre le code assembleur. Est-ce que vous pourriez m'aider ? ou me traduire un code (pour au moins avoir une idée) ?

Et, est-ce qu'il est possible de passer du code assembleur en code C ? Pourriez-vous m'aider à traduire le code ci-dessous ?

Voici un bout de code du DLOG4CHC.asm :

;==============================================================================
; Initialization Function
;==============================================================================

_DLOG_4CH_init:
MOVL XAR5,#POS_TRIG_S1
MOVL *XAR4,XAR5 ; task=#POS_TRIG_S1
ADDB XAR4,#10 ; XAR4->trig_value

MOV *+XAR4[2],#0

MOVL XAR5,#DLOG_4CH_buff1
MOVL *+XAR4[4],XAR5 ; write_ptr=DLOG_4CH_buff1


MOV AL,*+XAR4[6] ; ACC=size
MOV *+XAR4[3],AL ; cntr=size
LRETR

Merci d'avance pour votre aide

  • Bonjour Furkan,

    Le code dans votre message ressemble à une partie d'un enregistreur de données à quatre canaux à partir d'une bibliothèque de contrôle moteur pour les appareils F280x et F281x. C'est un code assez ancien, mais il n'y a rien de plus récent pour ces appareils.

    Pour comprendre le code, vous devrez connaître la structure DLOG_4CH illustrée à la page 2 du document data_log, que j'ai joint. Voici ce que font les lignes de code:

    Ces lignes chargent XAR4 s'inscrivent avec l'adresse, qui est à un décalage de 10 mots du premier ajout (l'élément "task"). Toutes les adresses suivantes sont relatives à cet élément.
     MOVL    XAR5,#POS_TRIG_S1
            MOVL    *XAR4,XAR5          ; task=#POS_TRIG_S1
            ADDB    XAR4,#10            ; XAR4->trig_value

    Cette ligne charge l'élément "pre-scalar" avec la valeur 0.
            MOV     *+XAR4[2],#0

    Ces lignes chargent l'élément "write_ptr" avec l'adresse de mémoire de données du tampon.
            MOVL    XAR5,#DLOG_4CH_buff1
            MOVL    *+XAR4[4],XAR5      ; write_ptr=DLOG_4CH_buff1

    Ces lignes copient l'élément "size" dans l'élément "cntr".
          MOV     AL,*+XAR4[6]        ; ACC=size
            MOV     *+XAR4[3],AL        ; cntr=size

    La dernière ligne revient à partir de l'appel de fonction.
            LRETR

    Le guide d'utilisation suivant décrit l'assemblage C28x:
    C28x CPU instruction set:  http://www.ti.com/lit/ug/spru430f/spru430f.pdf

    Il n'y a pas de cours de formation récents sur la programmation d'assemblage C2000, malheureusement. Le seul que je connais est l'atelier F2812 multi-jours, ici:

    http://processors.wiki.ti.com/index.php/C2000_Archived_Workshops

    Vous pouvez trouver des diapositives pertinentes dans les annexes de cet atelier.

    J'espère que ça aide.  Merçi.

    Richard

    data_log.pdf