Tools/EclipseArmebs4/SetupLinux/2015-10-27

(Difference between revisions)
Jump to: navigation, search
(Created page with "{{TOC right}} = Goal = Install a click-and-run IDE for stm32f4 based boards. This HOWTO has been tested on: * ubuntu 15.10 64 bits Using : * HEIVs armebs4 (stm32_camera b...")
 
Line 131: Line 131:
 
* After setup and restart, subversive should ask to choose a connector, choose:
 
* After setup and restart, subversive should ask to choose a connector, choose:
 
** SVNkit (same version as the subversion installed on your system)
 
** SVNkit (same version as the subversion installed on your system)
 
= Openocd from eclipse =
 
* Run->External Tools->External Tools Configuration...
 
* Program -> new
 
  * Location:
 
    * linux : /usr/bin/openocd
 
    * windows : c:\xdev\tools\openocd/0.8.0/bin/openocd.exe
 
  * Working directory : empty
 
  * arguments :
 
    * ARMEBS4 : -f "${workspace_loc}/libheivs_stm32/armebs4.cfg"
 
    * stm32f4discovery : -f board/stm32f4discovery.cfg
 
 
= Project Setup =
 
In the project properties make sure
 
* C/C++ Build > Settings -> Tool 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 -> Tool Settings tab : "Cross GCC compiler" :
 
** Symbols :
 
*** BOARD_STM32_CAMERA or BOARD_STM32_CAMERA or BOARD_ARMEBS4 depending on your board
 
** Includes :
 
*** "${workspace_loc:/${ProjName}/libheivs_stm32/include}"
 
*** "${workspace_loc:/${ProjName}}"
 
** Optimization : -O2 for normal use and -O0 for laboratories
 
** 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 -> Tool Settings tab : "Cross GCC Linker" :
 
** General :
 
*** No shared libraries (-static)
 
** Libraries
 
*** "m", "c" and "nosys"
 
** 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 -> -Tool 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 : Generic TCP/IP, localhost 3333
 
** Startup tab
 
*** [[File: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.
 

Revision as of 11:32, 27 October 2015

Contents

Goal

Install a click-and-run IDE for stm32f4 based boards.

This HOWTO has been tested on:

* ubuntu 15.10 64 bits

Using :

* HEIVs armebs4 (stm32_camera board).
* ST's stm32f4discovery board.

Feel free to contribute (by editing or by email).

The big picture

Here is an overview of the tools :

Eclipse stm32.png

Detailed description

Hardware:

* JTAG adapter
  * Connects physically the host computer to the target, usually from USB to JTAG.
  * Can be integrated into the target
* Target board
  * HEIVs ARMEBS4 integrates a "jtagusb" JTAG adapter
  * ST stm32f4discovery integrates a st-link v2 JTAG adapter

Software:

* Eclipse + CDT
  * IDE with c/c++ support
* make
  * The classical program builder
* gcc, ld, as, ...
  * GNU compiler, linker, assembler, ...
* gdb
  * GNU debugger
* openocd
  * Tranlate GDB orders into JTAG commands

Source files

* Application source file
  * Your application
* libheivs_stm32
  * Collection of source files from various vendors (ST, ARM, ..., HEIVs) to be used on stm32 boards

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 arm-none-eabi-gdb

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:
#
# \file /etc/udev/rules.d/10-jtag.rules
# \brief udev rules for drivers and ownership for ARMEBS4-like boards
# \author marc dot pignat at hevs dot ch
# \rev 1.0
#
# The ownership will be set to the 'plugdev' group
#
 
#
# AMREBS4-like (FTDI) integrated debugger and serial port
#
ATTRS{idProduct}=="3100", ATTRS{idVendor}=="08ee", MODE="666", GROUP="plugdev", RUN="/etc/udev/armebs4-serial.sh"
 
#
# 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"
 
#
# Amontec JTAGkey 2
#
ATTRS{idProduct}=="cff8", ATTRS{idVendor}=="0403", MODE="666", GROUP="plugdev"
  • create the file /etc/udev/armebs4-serial.sh whith the following content:
#!/bin/sh
#
# \file         /etc/udev/armebs4-serial.sh
# \brief        Load the ftdi sio (CDC) driver and add the ARMEBS4 VID+PID
# \author       marc dot pignat at hevs dot ch
# \rev          1.1
#
 
# Constants
ID="08ee 3100 ff"
SYS_FILE=/sys/bus/usb-serial/drivers/ftdi_sio/new_id 
 
# modrpobe can be called with already loaded driver
modprobe ftdi_sio
 
# add our ID only if necessary
if ! grep -q "$ID" $SYS_FILE; then
        echo  $ID > $SYS_FILE
fi
  • make the file /etc/udev/armebs4-serial.sh executable
    • sudo chmod +x /etc/udev/armebs4-serial.sh
  • make sure you're in the plugdev and dialout groups
    • verify: id username

Eclipse

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

  • Help -> Install new software ... -> add site/repository: http://gnuarmeclipse.sourceforge.net/updates
  • Help -> Install new software ... -> work with "-- All available sites --" and add at least :
    (Some of the items below might already be installed, e.g. if you installed Eclipse for C/C++. To make them appear in the list uncheck Hide items that are already installed.
    Collaboration
    Subversive SVN Team provider + subversive connector
    GNU ARM C/C++ Cross Development Tools
    GNU ARM OpenOCD Debugging
    Mobile and Device Development
    C/C++ GCC Cross Compiler Support
    C/C++ GDB Hardware Debugging
    Programming Languages
    C/C++ Development Tools
  • After setup and restart, subversive should ask to choose a connector, choose:
    • SVNkit (same version as the subversion installed on your system)
Personal tools
Namespaces
Variants
Actions
Navigation
Browse
Toolbox