comment programmer le flash STM32 en utilisant openocd et gdb
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?
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.