Nous travaillons sur la puce STM32F103 (ARM Cortex M3) et compilons notre projet avec uVersion (compilateur ARM-MDK). Lorsque le crash s'est produit, nous avons sauvegardé les registres PC et LR. Après cela, nous aimerions mapper les adresses enregistrées dans les registres PC et LR aux lignes de code source pour la lecture humaine en écrivant certains scripts. J'ai lu ce What are .axf files?, qui dit axf contient de telles informations. Mais je ne sais pas comment l'utiliser. Merci beaucoup.Comment mapper l'adresse ARM Cortex M3 PC/LR à la ligne source?
[mise à jour 1]
Aujourd'hui j'ai essayé le fromelf.exe qui peut jeter un peu de débogage des informations utiles (fromelf.exe --text -g E: \ proj_keil \ keil_output \ test.axf), par exemple:
008f5d: SPECIAL(0, 1) : 13 080043cc: ..\init\main.c:23.5
008f5e: DW_LNS_negate_stmt : 06
008f5f: SPECIAL(1, 2) : 1a 080043d0: ..\init\main.c:24.5 [
Quand je recherche l'adresse PC tombé en panne (0x080043d0), je peux trouver sa ligne de source correspondante, bien que je ne trouve pas la ligne de source d'adresse LR pour cet accident.
Puis-je utiliser fromelf.exe pour résoudre mon problème?
Je ne connais pas ARM-MDK mais la chaîne d'outils gcc a l'utilitaire "addr2line" utilisé à cette fin. Votre toolchain a probablement quelque chose de similaire. Addr2line a besoin du fichier .elf avec l'information de débogage. .axf semble être le même fichier que .elf avec debug .. – mkmk88