Source

pymite_stm32f4 / source / tutorial_part1.rst

Utiliser gdb et exécuter un premier code :

  1. connecter votre STM32F4 :

    • connecter la carte sur un port USB
    • désactiver toute économie d'énergie sur les ports usb (cf powertop ou laptop_mode, cela peut agir sur la vitesse de transfert bien inutilement ...)
  2. 3 shells pour gouverner :

    • 1 pour le serveur gdb
    • 1 pour la compilation
    • 1 pour la console gdb permettant de charger le code sur le STM32F4

    sh:

    - cd ~/stm32f4_work
    - screen
    - export PATH=$PATH:~/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/
    - CTRL+A+C : un nouveau TAB
    - CTRL+A+N : prochain TAB
    - CTRL+A+P : précédent TAB
    
  3. démarrer le listener !:

    - # ce placer dans le bon répertoire ...
    - cd ~/stm32f4_work/stlink
    - steph@tuck-eeepc:~/stm32f4_work/stlink$ sudo ./gdbserver/st-util fu bar
        non-option ARGV-elements: fu bar
        2012-09-15T19:00:57 INFO src/stlink-common.c: Loading device parameters....
        2012-09-15T19:00:57 INFO src/stlink-common.c: Device connected is: F4 device, id 0x10016413
        2012-09-15T19:00:57 INFO src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
        Chip ID is 00000413, Core ID is  2ba01477.
        KARL - should read back as 0x03, not 60 02 00 00
        init watchpoints
        Listening at \*:4242...
    
  4. éditer son projet

    le module principal de votre projet se trouve sous ~/stm32f4_work/pymite-09/src/platform/stm32f4 et se nomme main.py:

    gvim ~/stm32f4_work/pymite-09/src/platform/stm32f4/main.py
    
  5. compiler son projet :

    ATTENTION À PYTHON 2.6 compiler le binaire pour la plateform stm32f4 suppose que votre interpréteur par défaut soit python2.6, sinon créer un virtualenv pour que ce soit le cas. - cd ~/stm32f4_work/pymite-0.9 # note la commande est sensible à la cas et attend l'argument PLATFORM en majuscule. - scons PLATFORM=stm32f4

  6. exécuter son projet:

    cd ~/stm32f4_work/pymite-0.9/src/platform/stm32f4
    # si votre path est bien configuré l'appel de arm-none-eabi-gdb devrait se dérouler correctement
    # sinon un appel directe fera l'affaire :
        ~/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/arm-none-eabi-gdb
    arm-none-eabi-gdb
    
            GNU gdb (Sourcery CodeBench Lite 2011.09-69) 7.2.50.20100908-cvs
            Copyright (C) 2010 Free Software Foundation, Inc.
            License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
            This is free software: you are free to change and redistribute it.
            There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
            and "show warranty" for details.
            This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-none-eabi".
            For bug reporting instructions, please see:
            <https://support.codesourcery.com/GNUToolchain/>.
            (gdb) target extended localhost:4242
            Remote debugging using localhost:4242
            0x080007bc in ?? ()
            (gdb) load main.elf
            Loading section .text, size 0x15ce8 lma 0x8000000
            Loading section .ARM.excep, size 0x8 lma 0x8015ce8
            Loading section .data, size 0x59c lma 0x8015cf0
            Start address 0x80007bc, load size 90764
            Transfer rate: 665 bytes/sec, 9076 bytes/write.
            (gdb) continue
            Continuing.
    
    
    # cela démarre la console gdb et vous donne la main
    target extended localhost:4242
    # charge le fichier elf (préalablement compilé, cf `scons PLATFORM=stm32f4`
    load main.elf
    # indique au debugger de continuer l'exécution sur le STM32F4
    continue
    
  7. having fun ...

    Si tout c'est bien passé, votre code python tourne sur la plaque.

Note

Je conseille d'utiliser screen ou byobu (en attendant d'avoir un IDE, dédié / ou pas ...)