pymite_stm32f4 / source / ipm.rst

IPM : une console python

IPM est une console python interactive permettant d'exécuter votre code directement sur le STM32F4. Il y a différent éléments à connaître pour utiliser correctement cette console interactive.

  • Le mode interactif n'est disponible que si vous modifiez le fichier main.py afin d'exécuter la fonction ipm. Il peut se résumer à:

    import ipm
    ipm.ipm()
    
  • Le mode interactif peut être utilisé directement sans le debugger et le lien st-util. En effet, si vous modifiez le fichier ./src/platform/stm32f4/main.py pour exécuter la fonction ipm, ce sera toujours ce programme qui sera exécuté au démarrage du STM32F4. Lorsque votre programme sera prêt vous pourrez modifier le fichier ./src/platform/stm32f4/main.py pour exécutez votre fonction principale. Le fichier ./src/platform/stm32f4/main.py contient quelques exemples qui vous permettrons aisément de débuter.

  • Toutes les commandes python ne sont pas disponibles dans cette console:

    Par exemple actuellement, la fonction int(), n'est pas disponible. la liste des commandes disponibles est celle décrite dans le répertoire lib et plus particulièrement __bi.py

    Note

    int() peut être aisément remplacé par la fonction string.atoi (à besoin, on peut également compléter le module __bi.py ipm> from string import atoi ipm> a="123" ipm> len(a) # atoi prend un second paramètre pour indiquer la base de calcul # (la base 10 est utilisé par défaut) # mais il n'est pas obligatoire ipm> atoi(a) + 4 ipm> 138

  • Toutes commandes inconnues ou nom inconnu se verra gratifié d'une jolie exception:

    PM_RET_EX_NAME: Name error
    Error:     0xEA
      Release: 0x08
      FileId:  0x00
      LineNum: 0
    Traceback (top first):
      <ipm>()
      ipm()
      launch_ipm()
      main()
      main()
      <module>.
    ipm>
    
  • Vos propres modules doivent être également compilés pour la plateform STM32F4 :

    Si vous souhaitez utiliser vos modules dans le mode ipm, il faudra se rappeler qu'il est nécessaire de modifier le fichier ./src/platform/stm32F4/SConscript afin d'ajouter votre module. Recherchez la ligne contenant la déclaration des sources : PY_SOURCES:

    PY_SOURCES = ["main.py", "stm32f4discovery.py", "gpio.py", "pin.py", "lcd.py", "wire.py"]
    # et ajouter votre module pour qu'il soit compilé
    PY_SOURCES = ["main.py", "stm32f4discovery.py", "gpio.py", "pin.py", "lcd.py", "wire.py","my_tool"]
    # n'oubliez pas de recompiler le projet ensuite et de le recharger sur la carte
    sconscript PLATFORM=stm32f4
    # puis recharger le binaire pour le STM32F4
    

Plus concrètement :

o brancher le foca :

  • brancher le port TXD sur PA3
  • brancher le port RXD sur PA2

o compiler ipm

make ipm
#démarrer la console ipm
python ipm.py -f ../platform/stm32f4/pmfeatures.py  --serial=/dev/ttyUSB0 --baud=57600

o modifier la vitesse de transfert (57600 par défaut)

# modifier le fichier platform/stm32f4/SConscript et transformer la valeur 9600 en 57600
# si ce n'est pas déjà le cas ...

vars.Add("PM_UART_BAUD", "Baud rate of the ipm serial connection.", "9600")
vars.Add("PM_UART_ALT_BAUD", "ALT Baud rate of the ipm serial connection.", "57600")

# pour passer à 57600 bauds (nettement plus rapide :) )

vars.Add("PM_UART_BAUD", "Baud rate of the ipm serial connection.", "57600")
vars.Add("PM_UART_ALT_BAUD", "ALT Baud rate of the ipm serial connection.", "57600")

# recompiler ensuite le binaire et recharger le main.elf sur le STM32F4
scons PLATFORM=stm32f4

Note

Pour rappel (comme toujours) tout doit être exécuté et compilé avec python 2.6

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.