Tools/Eclipse4STM32

(Difference between revisions)
Jump to: navigation, search
(Debug settings)
Line 43: Line 43:
 
* Unzip into c:\xdev\tools\openocd\0.7 (openocd-0.7.0.exe should be in C:\xdev\tools\openocd\0.7.0\bin)
 
* Unzip into c:\xdev\tools\openocd\0.7 (openocd-0.7.0.exe should be in C:\xdev\tools\openocd\0.7.0\bin)
 
* rename openocd-0.7.0.exe into openocd.exe
 
* rename openocd-0.7.0.exe into openocd.exe
* <strike>For the stm32f4 discovery board (st-link) : Download and install this driver [[File:libusb-win32_stlink_driver-120229.zip]]</strike>
 
 
* Download and install the ST-LINK/V2 USB driver from [http://www.st.com/web/en/catalog/tools/PF258167 here] (STSW-LINK003)
 
* Download and install the ST-LINK/V2 USB driver from [http://www.st.com/web/en/catalog/tools/PF258167 here] (STSW-LINK003)
 
** Optional: Test the connection with the STM32 ST-LINK Utility V2
 
** Optional: Test the connection with the STM32 ST-LINK Utility V2
Line 106: Line 105:
 
  * Startup tab
 
  * Startup tab
 
   [[File:eclipse-gdb_hardware_debugging-startup.png]]
 
   [[File:eclipse-gdb_hardware_debugging-startup.png]]
   * disable Reset and delay : 1
+
   * disable Reset and delay (this command is not supported by openocd)
   * halt
+
   * disable halt
 +
  * commands (This will make sure the core is in a known state)
 +
    monitor reset halt
 
     monitor flash erase_sector 0 0 0
 
     monitor flash erase_sector 0 0 0
 
     monitor reset halt
 
     monitor reset halt
   * Load image (use project binary)
+
   * Load image : use project binary (this will load the software to flash)
   * Load symbols (use project binary)
+
   * Load symbols : use project binary (no debugging without symbols)
 
   * Set breakpoint at main
 
   * Set breakpoint at main
   * Run commands
+
   * Run commands ( 1) reset the cpu -> reload PC 2) enable clock when in WFI 3) run to main
 
     monitor reset halt
 
     monitor reset halt
 +
    set *(uint32_t *)0xe0042004 = 0x00000001
 
     continue
 
     continue
 
  * Common tab
 
  * Common tab
 
   Save as shared file, so the debugging parameters will be saved into the project.
 
   Save as shared file, so the debugging parameters will be saved into the project.

Revision as of 14:29, 19 July 2013

Contents

Toolchain

The toolchain we use comes from https://launchpad.net/gcc-arm-embedded. This is a toolchain maintained by ARM employees and is available for Linux, Windows and OS X.

Linux (Ubuntu based)

There is a PPA for gcc-arm-embedded.

sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
sudo apt-get install build-essential gcc-arm-none-eabi

Linux (generic)

Windows

openocd

Linux

  • install openocd (should be in the repository of your favorite distribution)
  • create the file /etc/udev/rules.d/10-jtag.rules whith the following content:
# AMREBS4-like (ftdi) integrated debugger
ATTRS{idProduct}=="3100", ATTRS{idVendor}=="08ee", MODE="666", GROUP="plugdev"
 
# Amontec JTAGkey 2
ATTRS{idProduct}=="cff8", ATTRS{idVendor}=="0403", MODE="666", GROUP="plugdev"
 
# STM32F4 discovery board (stlink-v2 and DFU)
ATTRS{idProduct}=="3748", ATTRS{idVendor}=="0483", MODE="666", GROUP="plugdev"
ATTRS{idProduct}=="df11", ATTRS{idVendor}=="0483", MODE="666", GROUP="plugdev"
  • make sure you're in the plugdev group

Windows

  • Download and install openocd-0.7.0
  • Unzip into c:\xdev\tools\openocd\0.7 (openocd-0.7.0.exe should be in C:\xdev\tools\openocd\0.7.0\bin)
  • rename openocd-0.7.0.exe into openocd.exe
  • Download and install the ST-LINK/V2 USB driver from here (STSW-LINK003)
    • Optional: Test the connection with the STM32 ST-LINK Utility V2
  • For the other boards FIXME

Eclipse

Tested with eclipse 4.3 (Kepler), but at least works with Juno (4.2) and Indigo (4.1)

  • Help -> Install new software ... -> work with "-- All available sites --" and add at least :
 * Programming Languages : C/C++ development Tools
 * Mobile and Device Development : C/C++ Hardware Debugging
 * Mobile and Device Development : C/C++ Cross compiler support
 * Subversive SVN Team provider + subversive connector
  • After setup and restart, subversive should ask to choose a connector, choose:
 * SVNkit 1.7.9

Project Setup

In the project properties make sure

* C/C++ build > settings -> Settings tab : "Cross settings" :
    * prefix : "arm-none-eabi-"
    * path (windows) : "C:\xdev\tools\gcc-arm\4.7_2013q2\bin"
    * path (Linux generic) : "/opt/xdev/gcc-arm-none-eabi-4_7-2013q2/bin/"
    * path (Unbutu based) : arm-none-eabi- tools are in the PATH.
* C/C++ build > settings -> Settings tab : "Cross GCC compiler" :
  * Symbols :
    * STM32F4XX=1
    * ARM_MATH_CM4=1
    * __FPU_PRESENT=1
    * USE_STM324xG_EVAL=1
  * Includes :
    * "${workspace_loc:/${ProjName}/libheivs_stm32/include}"
    * "${workspace_loc:/${ProjName}}"
  * Debugging: 
    * Maximum -g3
  * Warnings:
    * -Wall
  * Miscellaneous
    * "-c -fmessage-length=0 -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16"
* C/C++ build > settings -> Settings tab : "Cross GCC linker" :
  * General :
    * No shared libraries (-static)
  * Libraries
    * m
  * Miscellaneous
    * Linker flags : "-T "${workspace_loc:/${ProjName}/libheivs_stm32/stm32f407ig_flash.ld}" -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16"
    * Other options (-Xlinker [option])
      * -Map=linker.map
      * --gc-sections
* C/C++ build > settings -> Settings tab : "Cross GCC assembler" :
  * General:
    * Assembler flags : "-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -g3"

Debug settings

  • Debug configuration -> GDB Hardware debugging
* At the bottom of the page, make sure the project uses "Standard Hardware Debugging Laucher" (DSF won't work).
* Debugger tab
  * GDB command (Ubuntu based) : "arm-none-eabi-gdb"
  * GDB command (Linux generic) : "/opt/xdev/gcc-arm-none-eabi-4_7-2013q2/bin/arm-none-eabi-gdb"
  * GDB command (Windows) : "C:\xdev\tools\gcc-arm\4.7_2013q2\bin\arm-none-eabi-gdb.exe"
  * Use remote target : checked
  * JTAG Device (via pipe)
  * GDB Connection string (stlink): "| openocd -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg -c "gdb_port pipe""
  * GDB Connection string (jtagkey2): "| openocd -f interface/jtagkey2.cfg -f board/stm3241g_eval.cfg -c "gdb_port pipe""
* Startup tab
  Eclipse-gdb hardware debugging-startup.png
  * disable Reset and delay (this command is not supported by openocd)
  * disable halt
  * commands (This will make sure the core is in a known state)
    monitor reset halt
    monitor flash erase_sector 0 0 0
    monitor reset halt
  * Load image : use project binary (this will load the software to flash)
  * Load symbols : use project binary (no debugging without symbols)
  * Set breakpoint at main
  * Run commands ( 1) reset the cpu -> reload PC 2) enable clock when in WFI 3) run to main
    monitor reset halt
    set *(uint32_t *)0xe0042004 = 0x00000001
    continue
* Common tab
  Save as shared file, so the debugging parameters will be saved into the project.
Personal tools
Namespaces
Variants
Actions
Navigation
Browse
Toolbox