Tools/Eclipse4STM32
(Difference between revisions)
Line 104: | Line 104: | ||
**** GDB Connection string (jtagkey2): "| openocd -f interface/jtagkey2.cfg -f board/stm3241g_eval.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 | *** Startup tab | ||
− | + | **** [[File:eclipse-gdb_hardware_debugging-startup.png]] | |
**** disable Reset and delay (this command is not supported by openocd) | **** disable Reset and delay (this command is not supported by openocd) | ||
**** disable halt | **** disable halt | ||
Line 119: | Line 119: | ||
***** continue | ***** continue | ||
*** Common tab | *** Common tab | ||
− | + | **** Save as shared file, so the debugging parameters will be saved into the project. |
Revision as of 14:58, 19 July 2013
|
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)
- Download gcc-arm-none-eabi-4_7-2013q2-20130614-linux.tar.bz2
- Uncompress into /opt (arm-none-eabi-ld should be in /opt/xdev/gcc-arm-none-eabi-4_7-2013q2/bin/)
Windows
- download gcc-arm-none-eabi-4_7-2013q2-20130614-win32.zip
- unzip in C:\xdev\tools\gcc-arm\4.7_2013q2 (arm-none-eabi-gcc.exe should be in C:\xdev\tools\gcc-arm\4.7_2013q2\bin)
- download gnuwin-make-3.81.zip
- unzip in c:\xdev\tools\gnuwin\make\3.81 (make.exe should be in c:\xdev\tools\gnuwin\make\3.81\bin)
- add make.exe to your PATH.
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
- General :
- C/C++ build > settings -> Settings tab : "Cross GCC assembler" :
- General:
- Assembler flags : "-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -g3"
- General:
- 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
- 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.
- Debug configuration -> GDB Hardware debugging
- Symbols :