Difference between revisions of "Nucleo Boards"
Line 140: | Line 140: | ||
</pre> | </pre> | ||
− | Download Makefile from [[here]] | + | Download Makefile from [[media:makefileNucleoST | here ]] and copy it to helloworld dir |
<<<<TODO AGUTI>>>>> | <<<<TODO AGUTI>>>>> |
Revision as of 11:18, 25 November 2015
Contents
Configuring the environment
Install Compiler gcc-arm-none-eabi
Download last version of GCC ARM Embedded from: https://launchpad.net/gcc-arm-embedded/+download
Untar the compiler:
tar -xvjf gcc-arm-none-eabi-<VERSION>.tar.bz2
Copy it to a common place:
sudo cp -r gcc-arm-none-eabi-<VERSION> /opt/compilerNucleoST
Install OpenOCD On-Chip Debugger
Instal dependencies:
sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo build-essential \\ libftdi-dev libusb-1.0-0-dev libexpat1-dev
Download last version of Openocd from: http://openocd.org/
Untar openocd:
tar -xvzf openocd-<VERSION>.tar.gz
Go into the directory:
cd openocd-<VERSION>
Configure openocd compilation:
./configure --prefix=/opt/openocd/ --enable-jlink --enable-amtjtagaccel --enable-ftdi --enable-buspirate --enable-stlink \\ --enable-ftdi --enable-rlink
Compile it:
make
Install:
sudo make install
Prepare its use according to udev:
sudo cp -r contrib/99-openocd.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules
Hello World experiment
Download STMCube
STMicroelectronics introduces STMCube as an initiative to ease developers life. They are sharing packages containing libraries, documentation and examples. Packages are delivered per series (such as STM32CubeF4 for STM32F4 series)
And select the STMCubeXX according to your microcontroller (e.g. STM32CubeL4 for STM32L4 series) and load it in a prefered directory:
Untar STM32CubeXX:
unzip stm32cubexx.zip
This will create a Firmware directory which will be referred in this tutorial as <STM32_CUBE_FW_ROOTDIR>.
Create the experiment
The example is done for a toggle led experiment. It will be compiled for a specific nucleo board, named in this tutoral as <STM32_NUCLEO_BOARD>.
Create experiment dir in your prefered directory:
mkdir helloWorld
Copy experiment sources:
cp -r <STM32_CUBE_FW_ROOTDIR>/Projects/<STM32_NUCLEO_BOARD>/Examples/GPIO/GPIO_IOToggle/Src hellowWorld/src cp -r <STM32_CUBE_FW_ROOTDIR>/Projects/<STM32_NUCLEO_BOARD>/Examples/GPIO/GPIO_IOToggle/Inc helloWorld/include
Copy STM32 libraries:
cp -r <STM32_CUBE_FW_ROODIR>/Drivers/ helloWorld/lib
Copy startup code to src dir:
cp <STM32_CUBE_FW_ROOTDIR>/Projects/<STM32_NUCLEO_BOARD>/Templates/TrueStudio/startup_<NUCLEO_BOARD>.s helloWorld/src
where <NUCLE_BOARD> refers to your nucleo board model.
Important If TrueStudio does not exists use SW4STM32 instead.
Copy linker file:
cp <STM32_CUBE_FW_ROOTDIR>/Projects/<STM32_NUCLEO_BOARD>/Templates/SW4STM32/<STM32_NUCLEO_BOARD>_Nucleo/<NUCLEO_BOARD>_FLASH.ld helloWorld/
where <NUCLE_BOARD> refers to your nucleo board model.
Important If TrueStudio does not exists use SW4STM32 instead.
Create an environment file to export PATH:
cd helloWorld echo $PATH > env.sh
Edit env.sh and at the begining of the line include:
export PATH=/opt/openocdNucleoST/bin:/opt/compilerNucleoST/bin:
Your file should look like this:
export PATH=/opt/openocdNucleoST/bin:/opt/compilerNucleoST/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Download Makefile from here and copy it to helloworld dir
<<<<TODO AGUTI>>>>>
/opt/compilerNucleoST/bin/./arm-none-eabi-gcc -Wall -mcpu=cortex-m4 -mlittle-endian -mthumb -I/home/aguti/universidad/proyectos/nucleoST/tools/STM32Cube_FW_L4_V1.1.0/Drivers/CMSIS/Device/ST/STM32L4xx/Include -I/home/aguti/universidad/proyectos/nucleoST/tools/STM32Cube_FW_L4_V1.1.0/Drivers/CMSIS/Include -DSTM32L476xx -Os -c system_stm32l4xx.c -o system_stm32l4xx.o <pre>