Question

J'utilise un dongle Olimex ARM-USB-TOC avec openocd et GDB à programmer et déboguer un micro stm32f103. L'IDE J'utilise est venu du kit de dev-Olimex CD et utilise Eclipse Ganymede.

Je peux charger un petit programme dans la RAM et l'étape dans le code sans aucun problème.

J'ai maintenant un programme beaucoup plus vaste qui ne rentre pas dans la RAM (qui est seulement 20K) et je voudrais lancer à partir de Flash (qui est 128K).

J'ai modifié le script de liaison indiquant le code de programme devrait être dans la section flash (adresse 0x8000000), mais gdb ne charge pas le programme.

(gdb) 
20 load main.out
&"load main.out\n"
load main.out
~"Loading section .text, size 0xb0e6 lma 0x8000000\n"
Loading section .text, size 0xb0e6 lma 0x8000000
&"Load failed\n"
Load failed

Que dois-je faire pour obtenir gdb pour charger le programme en flash?

Était-ce utile?

La solution

Avez-vous envisagé clignotant directement avec openocd? Je fais cela dans une configuration similaire, mais avec un microcontrôleur ARM7.

 openocd -f flash.cfg

Voici mon flash.cfg

set CHIPNAME at91sam7x512

source [find interface/olimex-arm-usb-ocd.cfg]
source [find target/at91sam7sx.cfg]

init    
halt

flash probe 0
flash probe 1

flash erase_sector 0 0 15
flash erase_sector 1 0 15

flash write_image my-image.elf

at91sam7 gpnvm 0 set
at91sam7 gpnvm 1 set
at91sam7 gpnvm 2 set
shutdown

Les trucs de GPNVM est spécifique Atmel SAM7, mais je pense que ce script devrait vous donner un bon point de départ pour faire une version STM32. Openocd peut être un peu déroutant au début, mais la documentation est bonne et mérite d'être lu (http://openocd.berlios.de/). La version stable actuelle (0.4.0) est assez vieux, donc si vous avez des problèmes, téléchargez le dernier code source et le compiler vous-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top