Está en la página 1de 14

9/9/12

STM32F4 Discovery

- TTDE-WIKI

STM32F4 Discovery
(Redirected from BOARD:STM32F4Discovery)

by Josnelihurt

Contents
1 Introduccin 2 Partes de la tarjeta 3 Entornos de desarrollo 3.1 Configurando el entorno de desarrollo con Eclipse (Indigo) sobre Ubuntu 12.04 LTS 3.1.1 Antes de instalar considere 3.1.2 Instalacin del toolchain CodeSourcery GNU para Cortex-M4 3.1.3 Instalacin de Java Runtime Environment 3.1.4 Instalacin de OpenOCD y herramientas de depuracin STLINK 3.1.5 Eclipse Indigo Como IDE e integracin de herramientas 3.1.6 Instalacin y configuracin de plugins 3.2 Configuracin de la herramienta sobre Keil uVisin 4 en Windows 3.2.1 Creacin de un proyecto sobre Keil 3.2.1.1 Creando un nuevo fuente y agregandolo al proyecto 3.2.1.2 Configuracin de STLINK sobre Keil uVision 3.2.1.3 Agregar las libreras y funciones de inicializacin 4 Ejemplo - Blinking led 5 Recursos

Introduccin

Dentro de los dispositivos de bajo costo resaltan las arquitecturas de procesadores basados en tecnologas ARM Cortex-M. Estos procesadores lideran el mercado de aplicaciones de bajo consumo energtico. Estos procesadores fueron diseados para su implementacin en MCUs y procesadores de seal mixta; las aplicaciones que generalmente los utilizan son aplicaciones biomdicas, en interfaces humano-maquina, industria automotriz y en sistemas de control.

La tarjeta STM32F4Discovery permite evaluar el desarrollo de aplicaciones con el procesador Cortex M4 con implementacin de STMicroelectronics. Esta tarjeta incluye las herramientas necesarias para programar el microcontrolador contenido en ella (STM32F407VGT6) a travs de la conocida interface de programacin STLINK/V2 embedded debug tool. Adicionalmente esta tarjeta tiene dos dispositivos ST MEMS el primero un acelermetro digital y el segundo un micrfono. A continuacin se muestra una fotografa de la tarjeta de desarrollo.

ttde.uniandes.edu.co/ttdewikim1/index.php/BOARD:STM32F4Discovery

1/14 /

9/9/12

STM32F4 Discovery

- TTDE-WIKI

Partes de la tarjeta
Microcontrolador STM32F407VGT6 32-bit ARM Cortex-M4F core, 1 MB Flash, 192 KB RAM LQFP100 package On-board ST-LINK/V2 LIS302DL, ST MEMS digital accelerometer MP45DT02, ST MEMS omni-directional digital microphone CS43L22, audio DAC with integrated class D speaker driver Eight LEDs: LD1 (red/green) USB LD2 (red) power on Cuatro LEDs de usuario, LD3 (orange), LD4 (green), LD5 (red) and LD6 (blue) Dos LEDs LD7 (green) VBus y LD8 (red) over-current del VUSB Dos push buttons (user and reset)

Entornos de desarrollo
Existen diversos entornos de desarrollo para las arquitecturas basadas en ARM. Algunas privativas como Keil uVision y IAR Workbench, y por otro lado existen las alternativas libres como la integracin de arm-gcc a Eclipse.

Configurando el ent orno de desarroll o con Ecli pse (Indi go) sobre Ubunt u 12.04 LTS
Para lograr desarrollar aplicaciones con esta plataforma sobre Ubuntu se debe comprender algunos conceptos generales de las plataformas embebidas y reconocer como estn impementadas en la tarjeta STM32F4 Discovery. La siguiente grfica muestra el esquema general de desarrollo para una plataforma embebida, donde se parten de una coleccin de archivos fuentes para llegar a un archivo binario que se ejecuta en la plataforma embebida. La serie de programas que permiten realizar este procedimiento se conoce como el toolchain o la cadena de compilacin de un sistema.

En este manual se instalarn las siguientes herramientas de desarrollo CodeSourcery GNU toolchain Compilador libre para ARM Java Runtime Environment. OpenOCD Eclipse Indigo

Antes de instalar considere


En Linux las personas estn libres de ubicar los programas en cualquier parte del sistema de archivos, pero en general las herramientas de desarrollo y programas opcionales no descargados ni integrados completamente con la distribucin se ubican en la carpeta /opt/. Desde el punto de vista del autor es mucho mas cmodo otorgar la pertenencia de esta carpeta al usuario principal del sistema para este ejemplo tomado como user Abra una consola y sitese en la direccin /opt Ejecute los siguientes comandos:
sudo chown user:user .

Cambiar de el terminal por defecto del sistema de dash a bash


sudo dpkg rec on figu re plow dash

Cuando el sistema le pregunte que si desea usar dash como shell por defecto indique NO Instalar Paquetes necesarios para compilar los paquetes dentro de este manual A continuacin se muestran los paquetes necesarios en la compilacin de los programas usados en el presente manual. Usted puede hacer uso del comando sudo apt-get install para instalarlos
gi core bui des ent al patch automake l bu sbdev l btoo l texinfo texl ve t l s i i i i

En caso de encontrar algn paquete faltante contacte al administrador para sugerir la inclusin de dicho paquete en la lista.

Instalacin del toolchain CodeSourcery GNU para Cortex-M4


Para instalar la versin del compilador necesario en la cadena de compilacin usted debe descargar arm-2011.03-42-arm-none-eabi.bin de [1] (https://sourcery.mentor.com/GNUToolchain/subscription3053?lite=arm) (Es posible que necesite registrarse) Una vez tenga el archivo arm-2011.03-42-arm-none-eabi.bin abra un terminal y ejecute los siguientes comandos:
cd ruta_d e_desca rga chmod +x arm2011 .03 42armnon eea bi.bin sh arm2011 .03 42armnon eea bi.bin

Un asistente en le guiar en la instalacin de este toolchain Recuerde donde lo ubica para el desarrollo de este manual se tomar por defecto la ruta /opt.

ttde.uniandes.edu.co/ttdewikim1/index.php/BOARD:STM32F4Discovery

2/14

9/9/12

STM32F4 Discovery

- TTDE-WIKI

Edite el archivo .bashrc Este archivo se encuentra en la siguiente ruta /home/user/.bashrc tenga claro que los archivos que inician por punto(.) son interpretados en linux como archivos ocultos as que si est buscando este archivo desde el visor de archivos nautilus pueda hacer uso de la siguiente combinacin de teclas para activar /desactivar la visualizacin de estos tipos de archivos CTRL + H En este se debe agregar la linea:
export PATH=$PATH:/op t/CodeSou rce ry/Source ry_ G++_Li e/bin t

Esto le dir al sistema que existe una ruta ms de bsqueda de binarios para la ejecucin desde consola.

Instalacin de Java Runtime Environment


Para la ejecucin de eclipse sobre Ubuntu es necesario instalar una versin de Java Runtime, es posible que ya lo tenga instalado pero en este manual se deja una de las mltiples opciones de Java Runtime instalables.
sudo aptget install op enjdk 6jdk

Instalacin de OpenOCD y herramientas de depuracin STLINK


Descargar las funtes de OpenOCD Descarge las fuentes del proyecto OpenOCD desde la pagina [2] (http://so urc e fo rge .ne t/pr o je cts/o pe no cd/) . Diferentes versiones de Ubuntu tienen en sus repositorios dicho programa aunque se prob con la versin compilada desde las fuentes del proyecto OpenOCD. Ejecute las siguientes instrucciones para compilar e instalar programa.
cd /op t cp /ruta_d e_desca rga/op enocd_ fi e.tar.gz . l tar zxv f op enocd_ fi e.tar.gz l

Nota: Recuerde que el nombre del archivo descargado puede variar en nombre dependiendo de la versin en la cual se encuentre el desarrollo actual. Compilar el programa Para compilar el programa ejecute los siguientes comando dentro de un terminal
cd /op t/OpenOCD/openo cd_v ersion strip ./src/op enocd make make pd f

Instalacin del programa y modificacin de la ruta del sistema Ejecute el siguiente comando en la terminal donde compil el programa
sudo make install

Ejecut el comando openocd -v y el sistema le debe entregar el nombre de la versin de openocd que compil e instal. Descargar las funtes de STLink para la depuracin de la aplicacin On-Board Las fuentes del programa se pueden descargar mediante la aplicacin git recuerde estar en una terminal al intentar ejecutar esta instruccin y dentro de la carpeta /opt
git clone ht ps:/ gi hub .com/texane/sti nk sti nk t / t l l

Compilar el programa Para compilar el programa ejecute los siguientes comando dentro de un terminal
cd /op t cd sti nk l ./autogen.sh ./configu re

ttde.uniandes.edu.co/ttdewikim1/index.php/BOARD:STM32F4Discovery

3/14

9/9/12
make

STM32F4 Discovery

- TTDE-WIKI

Instalacin del programa y modificacin de la ruta del sistema


sudo make install

3. Once install finished, Open terminal, plug stm32F4Discovery and test stlink st-util It should return libusb couldnt open USB device /dev/bus/usb/002/004: Permission denied. libusb requires write access to USB device nodes. 2012-0519T00:20:00 WARN src/stlink-usb.c: Couldnt find any ST-Link/V2 devicest It is because we dont have access to usb port. Type this to get access, which is not permanent, once you unplug and plug board again, need to change permission again, But you can search online to disable this permission checking for Ubuntu. sudo chmod 777 /dev/bus/usb/002/004

Eclipse Indigo Como IDE e integracin de herramientas


Un entorno de desarrollo es aquel que permite integrar las herramientas de desarrollo dentro de un solo programa al cual se le conoce como IDE de programacin. Una de las partes de un IDE son los editores de texto, existen muchos editores de texto que permiten resaltar la sintaxis de casi todos los lenguajes de programacin existentes. Dentro de estos editores se encuentra notepad ++ (Win32) Gedit y Geany (Linux Gnome) entre muchos mas. Eclipse presenta una interfaz amigable y diferentes plugins que incrementan sus capacidades. Para el presente manual se toma como base de desarrollo el IDE Eclipse (Indigo) - Eclipse IDE for C/C++ Developers. Descargando el Eclipse Para descargar la versin probada con el sistema descargue el archivo eclipse-cpp-indigo-SR2-incubation-linux-gtk.tar.gz de la pagina oficial de eclipse o de la siguiente direccin espelhos.edugraf.ufsc.br_mirror (http://e s pe lho s.e dugra f.ufsc .br /e c lipse //technology/epp/downloads/release/indigo/SR2/eclipse-cpp-indigo-SR2incubation-linux-gtk.tar.gz)

Instalacin y configuracin de plugins


cd /op t cp /ruta_d e_desca rga/ec l psecpp ind igo SR2incub at onl nux gtk.tar.gz . i i i tar zxv f ec l psecpp ind igo SR2incub at onl nux gtk.tar.gz i i i

Edite el archivo .bashrc Este archivo se encuentra en la siguiente ruta /home/user/.bashrc tenga claro que los archivos que inician por punto(.) son interpretados en linux como archivos ocultos as que si est buscando este archivo desde el visor de archivos nautilus pueda hacer uso de la siguiente combinacin de teclas para activar /desactivar la visualizacin de estos tipos de archivos CTRL + H En este se debe agregar la linea:
export PATH=$PATH:/op t/ec l pse i

Esto le dir al sistema que existe una ruta ms de bsqueda de binarios para la ejecucin desde consola. Por ltimo ejecute en una nueva consola el comando elcipse (si tiene una consola abierta puede teclear bash para reabrir dicha consola) Si todo se ejecuto conforme al manual se debe presentar el splash de eclipse Indigo

Configuraci n de l a herramient a sobre Keil uVisi n 4 en Wi ndow s


La tarjeta STM32F4 trae dentro de su configuracin un circuito de depuracin conocido como STLINK, el cual se basa en un microcontrolador de la misma empresa (ST). La interfaz STLINK es ampliamente soportado por diversos entornos de desarrollo. Para utilizar la tarjeta de desarrollo sobre Windows es necesario instalar los drivers, para esto utilice el programa mostrado en la siguiente imagen. Nota: Debe instalar el entorno de desarrollo Keil uVision 4 [3] (http://www. ke il.c o m/a rm /mdk .a sp)

ttde.uniandes.edu.co/ttdewikim1/index.php/BOARD:STM32F4Discovery

4/14

Una vez tenga los drivers instalados puede conectar la tarjeta al PC y deber observar el que el sistema reconoce la tarjeta de la siguiente manera:

Nota Para iniciar el administrador de dispositivos puede usar la combinacin de teclas CTRL + PAUSA

Creacin de un proyecto sobre Keil


Para iniciar el desarrollo sobre la tarjeta STM32F4 se debe crear y configurar un proyecto sobre un entorno de desarrollo, para el caso Keil uVision. El primer paso es iniciar el entorno de desarrollo y crear el proyecto. Las siguientes imgenes lo guiarn a travs de la creacin y configuracin del entorno.

En el cuadro de dialogo indique el nombre y ubicacin del proyecto nuevo.

En el cuadro de dialogo de seleccin del dispositivo seleccione el dispositivo STM32F407VG

En la pregunta que si desea agrear el archivo .s a su proyecto responda que SI, este archivo contienen la inicializacin del microncontrolador desde el nivel de arranque as como tambin los vectores de interrupcin. Dado que por defecto Keil no configura correctamente la integracin de esta con la librera de manejo del microcontrolador sugerida en esta gua se debe reemplazar el vector de inicio por el siguiente. Esto se encuentra en el archivo .s
Reset hand ler Reset_Handler PROC EXPOR Reset_Handler [WEAK] T IMPORT SystemInit IMPORT main FPU seti ng s t LDR LDR ORR 20) R0, =0xE000 ED88 Enab le CP10 ,CP11 R1,[R0] R1,R1,#(0xF << STR R1,[R0]

LDR R0, =SystemInit BLX R0 LDR R0, = main BX R0 M O R0,#0x000 4 V M OV R0,#0x080 0 T BX R0 ENDP

Ahora usted tendr un proyecto vaci sobre el cual debe agregar cdigos fuentes para compilar su aplicacin.

Creando un nuevo fuente y agregandolo al proyecto


Por defecto el proyecto no tiene archivos ni estructura. Se debe crear una estructura del proyecto para iniciar el desarrollo. Generalmente las aplicaciones para sistemas microprocesados se deben dividir en diferentes niveles o capas de software. Estas etapas son: Capa de inicializacin (Archivos de inicializacin) generalmente ensamblador Capa de bajo nivel, en esta capa generalmente se crean las funciones que interactan directamente con el Hardware Capa de drivers, esta capa puede variar dada la complejidad y cantidad de drivers que se tengan dentro del sistema. Capa de aplicacin, en esta aplicacin generalmente se ubican los cdigos de mas alto nivel (el main.c) Se debe recordar que en los archivos .h solo deben de incluirse los prototipos de las funciones y variables que se deseen acceder desde otros archivos c. En los archivos .c solo existir la definicin de funciones y variables no es recomendable crear constantes o elementos del preprocesador. Para disear esta estructura dentro del entorno Keil siga los siguientes pasos.

Para renombrar un grupo ya existente haga un solo click sobre el grupo a renombar y edite el nombre. Termine con enter para confirmar el cambio

Para crear un nuevo grupo haga click auxiliar sobre el nombre de la aplicacin y en crear un nuevo grupo

Una aplicacin promedio debe incluir por lo menos los siguientes grupos

Para crear un nuevo archivo fuente haga click en archivo nuevo, luego guardelo para que el sistema de desarrollo interprete y resalte el cdigo que est escribiendo. Guarde el archivo sobre la ubicacin que prefiera pero se sugiere que sea sobre una carpeta dentro de la carpeta del proyecto. Recuerde del orden de una aplicacin depende la velocidad con la que se pueda buscar y administrar los archivos fuentes del mismo.

Recuerde crear un archivo no implica haberlo agregado a la aplicacin. Observe el icono del archivo recientemente creado y la estructura.

Para agregar un archivo al proyecto debe dar click auxiliar sobre el grupo y luego agregar archivo fuente (Puede dar doble click sobre el grupo y resulta en la misma accin). Busque en la estructura de archivos el archivo que ha creado y agrguelo.

Note como ha cambiado el icono del archivo ha cambiado y se ha agregado sobre la estructura de archivos.

Configuracin de STLINK sobre Keil uVision


Para habilitar la depuracin sobre el Hardware por medio de la interfaz STLINK se debe configurar el depurador dentro del ambiente de desarrollo. Para esto se pueden seguir los siguientes pasos. Opciones del Target

Opciones del Debug o depurador Seleccionar STLINK

Opciones de STLINK Seleccione SWD

Agregar las libreras y funciones de inicializacin


Para agregar terminar con la configuracin del proyecto es necesario agregar el archivo que contiene todas las definiciones necesarias en la utilizacin del microcontrolador File:Stm32f4xx.h. Descrgelo y agrguelo al proyecto. Nota: Dependiendo de la ubicacin donde lo ubique es importante que la directiva #include debe apuntar a la direccin donde se encuentra este archivo. Este archivo tiene el prototipo de una funcin llamada void SystemInit() que define la inicializacin del microcontrolador. Consulte la hoja de datos [4] (http://www. s t.co m/inte r ne t/co m/TECHNIC A L_RES O URC ES /TEC HNIC A L_LI TER A TURE/REFER ENCE_MA NUA L/DM00031020. pd f) del microcontrolador para ampliar la informacin de los registros usados en la siguiente funcin.

vo id SystemIni () t { unsign ed int i for (i=0i<0x00100000 i++) // Rut na de esp a p r el OSC i er o RCC>CFGR |= 0x00009400 // Con f gurar la mxima ve locida d po r AHB y APB i RCC>CR |= 0x00010000 // Selecc in del cristal whi e (!(RCC>CR & 0x00020000 ) // Esperar qu e el Xtal se estabii ce RCCl ) l >PLLCFGR = 0x07401544 // PLL en M=4, N=85 , P=2 y Q=7 Velocida d de 85 Mhz RCC>CR |= 0x01000000 // Iniciar PLL whi e(!(RCC>CR & 0x02000000 ) // Esperar al PLL l ) FLASH>ACR = 0x00000605 // Iniciar ART RCC>CFGR |= 0x00000002 whi e ( RCC>CFGR & 0x0000000 F) != 0x0000000 A) l ( RCC>AHB1ENR |= 0x0000000 F // hab ii acin de clock de GPIO A,B,C,D lt }

Ejemplo - Blinking led


El Led 3 de color naranja est conectado al I/O PD13 del STM32F407VGT6. Tome en cuenta que cada puerto tiene mximo 16 bits tal como se muestra en la siguiente imagen.

Para configurar correctamente el pin como salida primero se debe habilitar el GPIO mode register - MODER este registro configura el modo del pin como se muestra en la siguiente figura:

Configuracin del pin en modo salida

Para configurar como salida el pin PD13 se debe establecer en 1 el bit 26 del registro GPIOD_MODER como se muestra en la figura anterior. Configuracin de energa y habilitacin del registro Con el creciente desarrollo tecnolgico y la constante integracin de componentes dentro de los microcontroladores da a da se integran mas elementos o perifricos dentro estos micros; con el fin de reducir el consumo energtico los fabricantes brindan la posibilidad de encender y apagar cada uno de estos perifricos de manera dinmica. En la implementacin de ST se crean los registros RCC (Reset and Clock Control) para controlar los perifricos y su consumo (RCC_AHB1ENR and RCC_AHB2ENR) para ampliar la explicacin recurra a la hoja de datos en pag 93 (sec 5.3). el registro RCC->AHB1ENR |= 0x0000000F; se configur en la funcin void SystemInit() Establecimiento de Alto o Bajo un pin del puerto Por ltimo se debe escribir en el registro ODR del GPIO deseado para activar o desactivar un valor de salida. Cdigo de ejemplo:

int main(vo id) { unsign ed int i=0 GPIOD>ODR=(1<<12) for( ) { GPIOD>MODER = (1 << 26 ) // set pin 13 to be general p rp e ou tpu t u os for ( ) { GPIOD>ODR ^= (1 << 13 ) for (i=0i<0x FFFFFF i++)/ Rut na de espera / i {} } } }

Recursos
www.s t.c o m/stm32f4-discove ry http://www. mik ro c o ntr o lle r.ne t/ar tic le s /S TM32F4-Disco ve ry

Privacy policy About TTDE-WIKI Disclaimers Powered by MediaWiki Designed by Paul Gu