LPC1768 32-bit ARM Cortex-M3 : utilisation d’OpenOCD

    Après avoir installé notre chaine de cross-compilation, on est capable de compiler un programme. On veut maintenant le charger dans la mémoire flash et le lancer sur le LPC1768.

    Pour cela on va utiliser OpenOCD, que vous devriez avoir installé si vous avez suivi le premier article.

    Branchez votre programmateur JTAG (j’utilise l’USB-ARM-TINY de olimex, pas cher !) à votre platine (j’utilise une BlueBoard, pas chère !) et au PC, et alimentez la platine (via un autre port USB par exemple).

    Ouvrez un terminal dans le dossier du programme et lancez openocd (il charge automatique le fichier de config « openocd.cfg » que j’ai concocté pour vous dans mon immense bonté). Vous pouvez lui spécifier un autre fichier de config si besoin avec l’option « -f ».

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    roussel@roussel-pc:~/cortexMX/hello_world$ sudo openocd
    [sudo] password for roussel:
    Open On-Chip Debugger 0.5.0 (2012-03-12-21:58)
    Licensed under GNU GPL v2
    For bug reports, read
    http://openocd.berlios.de/doc/doxygen/bugs.html
    Info : only one transport option; autoselect 'jtag'
    adapter_nsrst_delay: 200
    jtag_ntrst_delay: 200
    500 kHz
    Info : clock speed 500 kHz
    Info : JTAG tap: lpc1768.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
    Info : lpc1768.cpu: hardware has 6 breakpoints, 4 watchpoints

    Ouvrez un second terminal (toujours dans le dossier dans lequel se trouve le programme, à coup de « cd » s’il faut) et connectez-vous au daemon openocd :

    1
    2
    3
    4
    5
    6
    7
    roussel@roussel-pc:~/cortexMX/hello_world$ telnet localhost 4444
    Trying ::1...
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    Open On-Chip Debugger
    #

    C’est presque gagné, vous pouvez envoyer des commandes pour effacer la mémoire, charger le programme, vérifier l’état de la mémoire, …

    Pour charger le programme :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    # halt
    # poll
    background polling: on
    TAP: lpc1768.cpu (enabled)
    target state: halted
    target halted due to breakpoint, current mode: Handler HardFault
    xPSR: 0x01000003 pc: 0xfffffffe msp: 0xffffffd8
    # flash erase_sector 0 0 0
    erased sectors 0 through 0 on flash bank 0 in 0.343463s
    # flash write_bank 0 mbed_test.bin 0
    Verification will fail since checksum in image (0x00000000) to be written to flash is different from calculated vector checksum (0xefff7ace).
    To remove this warning modify build tools on developer PC to inject correct LPC vector checksum.
    wrote 1872 bytes from file mbed_test.bin to flash bank 0 at offset 0x00000000 in 1.327636s (1.377 KiB/s)
    # reset init
    JTAG tap: lpc1768.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
    Only resetting the Cortex-M3 core, use a reset-init event handler to reset any peripherals
    target state: halted
    target halted due to debug-request, current mode: Thread
    xPSR: 0x01000000 pc: 0x1fff0080 msp: 0x10001ffc
    # resume
    # poll
    background polling: on
    TAP: lpc1768.cpu (enabled)
    target state: running
    #

    Et là on est trop fort, on a fait clignoter une LED …. ouééééé trop coule

    Tags: , , , , , ,

    Reply

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>