Dans ce tutorial, je vous propose de voir comment désassembler le fichier elf du projet de façon à voir le résultat de la compilation (assembleur) conjointement au code source.
Le script Python suivant est utilisé pour ajouter la fonctionnalité au projet :
Import("env", "projenv")
# Ajout de l'option -g aux indicateurs du linker pour obtenir le code source dans le fichier elf.
env.Append(LINKFLAGS=["-g"])
# Ajout d'un outil dans le menu Custom de PIO
env.AddCustomTarget(
"asm_dump",
"$BUILD_DIR/${PROGNAME}.elf",
"C:/Users/%username%/.platformio/packages/toolchain-atmelavr/avr/bin/objdump -D -S $BUILD_DIR/${PROGNAME}.elf > $BUILD_DIR/${PROGNAME}.asm",
"Dump ELF to ASM",
"Dump de firmware.elf vers firmware.asm (source + ASM résultant de la compilation)."
)
# Fonction de call back pour extraire le code asm compilé avec le code source
def asmAvecSourceCB(source, target, env):
print("Dump firmware.elf ...")
env.Execute("C:/Users/%username%/.platformio/packages/toolchain-atmelavr/avr/bin/objdump -D -S $BUILD_DIR/${PROGNAME}.elf > $BUILD_DIR/${PROGNAME}.asm")
# do some actions
# Ajout d'une fonction de call back a exécuté lorsque le fichier firmware.elf est créé.
env.AddPostAction("$BUILD_DIR/${PROGNAME}.elf", asmAvecSourceCB)
Vous pouvez contribuer par vos dons (1€, 5€, 10€ ou au choix) au développement de nouveaux tutoriaux nécéssitant d'investir dans du matériel spécifique, de financer la fabrication de circuits imprimés permettant d'illustrer certains aspects théoriques et pratiques...
Vous avez un compte PayPal ? Faites votre don en évitant les frais PayPal :
Vous n'avez pas de compte PayPal, cliquez sur le bouton ci-dessous :