• [^] # Re: Idée pour les autres MCU

    Posté par . En réponse au journal Un utilitaire pour formater la sortie de avr-objdump. Évalué à 2.

    Ta suggestion a piqué ma curiosité et j'ai essayé d'arriver à ce résultat avec uniquement le préprocesseur avr-cpp. Et bingo! Voici ce que ça donne avec un "bête" programme de démo pour le ATtiny1634, par exemple:

    avr-cpp -E -dM -Os -DF_CPU=8000000 -mmcu=attiny1634 demo.cpp | \
    sed -rne 's/#define\s+(\w+)\s+_SFR_([IM]\w+[0-9]+\(\w+\))/1円: 2円/p'

    En gros, ça n'affiche que les lignes de définition des registres (SFR_IOxx et SFR_MEMxx) et le résultat est le suivant:

    TWSSRA: MEM8(0x7D)
    EECR: IO8(0x1C)
    EEDR: IO8(0x1D)
    OSCCAL0: MEM8(0x63)
    MCUCR: IO8(0x36)
    PINA: IO8(0x0F)
    PINB: IO8(0x0B)
    PINC: IO8(0x07)
    ...

    Note que les options -O et -DF_CPU= sont nécessaires pour éviter un avertissement (généré dans les en-têtes).

    Il "suffit" de tripatouiller le script sed pour adapter la sortie en fonction du langage souhaité. Moralité: on a déjà assez avec les outils de base.

    C'est bien entendu un premier jet car, tu l'auras remarqué, on perd l'info du processeur et du fichier d'en-tête incorporé. Je pense que c'est l'objet de l'option -d du préprocesseur. Je suis à peu près certain que c'est là-dessus qu'il faut jouer.