Primer Programa Bare Board (Pt I)
Con nuestro compilador instalado y OpenOCD listo para comunicarse con nuestra tarjeta Nucleo-F072RB, llego la hora de crear nuestro programa hola mundo. Antes que nada aclararemos que no usaremos ningun IDE en especifico, para escribir el codigo usaremos cualquier editor de texto plano ( te recomiendo Sublime Text ) y la compilacion la realizaremos usando archivos makefiles y la terminal.
El programa lo realizaremos sin el uso de ninguna libreria de funciones ( just balls!!! ), pero si nesecitaremos un par de archivos de apoyo y los optendremos de la libreria oficial STM32F0Cube de ST. Descarga el archivo y descomprimelo en tu lugar favorito de la computadora =).
Crea una carpeta donde estara tu flamante y nuevo programa de prueba
1 2 |
|
Copia a la carpeta de tu proyecto el archivo linker, el cual permitira a tu programa saber como esta ordenada la memoria del micro. El archivo se encuentra en la libreria de ST en la siguiente ruta:
1
|
|
Copia a la carpeta de tu proyecto el archivo startup el cual permitira a tu programa entre otras cosas iniciar desde el vector de reset, setear el valor del stack pointer y acomodar la tabla de vectores de interrupciones del micro. EL archivo se encuentra en la libreria de ST en la siguiente ruta:
1
|
|
Habra que hacer una pequeña modificacion al archivo de startup_stm32f072xb.s para que no nos de problema con una funcion que manda llamar ( y que por lo pronto no tenemos ). Abre con tu editor favorito el archivo y comenta la linea numero 101. Al archivo le deberas quitar la proteccion contra escritura para realizar lo anterior.
1 2 3 |
|
En el directorio de tu proyecto crea una carpeta a la que llamaremos Output y sera la carpeta en la que dejaremos los archivos producidos por la compilacion
1
|
|
Bien hora de la accion, crea un nuevo archivo al que llamremos main.c y que contendra nuestro codigo
1
|
|
Escribiendo el codigo
Abre el archivo con tu editor de texto favorito ( como Gedit ) y escribe el siguiente codigo
Hola Mundo - main.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
El anterior codigo solo hara parpadear el led conectado al puerto A pin 5, el cual esta presente en la tarjeta. Y te estaras preguntando que son todos esos numeros??, pues son las direcciones en las que se encuntran los registros que deberemos manipular para interactuar con el pin A5. Esta informcaion la optienes de la hoja de datos del micro.
Hora de compilar nuestro programa. La compilacion la realizaremos usando un archivo makefile el cual concentrara las ordenes de compilacion que le pasaremos a nuestro toolchain.
Crea un nuevo archivo llamado makefile en la carpeta de tu proeycto
1
|
|
Abre este nuevo archivo con tu editor de texto favorito ( digamos atom ) y escribe lo siguiente
makefile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
No te apures si no sabes nada de makefiles, dentro de poco posteare un par de tutoriales. Otra cosa muy importante cuando escribes lo anterior usa TABS en la identacion y no espacios, o tendras errores.
Uff!!. Hora de compilar, solo escribe make en tu terminal, recuerda estar en la carpeta de tu proyecto
1 2 |
|
Si la terminal no te arrojo ningun error de compilacion deberas tener un archivo test.hex en tu folder Output, anda ve y revisa, porque hay que programar la tarjeta
A Programar se ha dicho
Abre una nueva terminal y conectate con tu tarjeta usando OpenOCD
1 2 |
|
En la terminal anterior madaremos nuestro programa compilado a nuestra tarjeta usando telnet, conectate al puerto 4444 de la siguiente manera
1 2 |
|
Si te acepta la conexion, solo restara mandar el archivo .hex. Escribe los siguientes comandos en orden
1 2 3 |
|
El primer comando resetea y detiene al micro, el segundo manda el programa y lo escribe en la memoria y el ultimo lo resetea y pone a correr el programa, asi que ya podras ver un feliz led parpadeando.
Esta manera de programar ( sin ayuda alguna ) te obligara a leer bien la hoja de datos del micro y en consecuencia aprenderas muy bien a utilizar la maquina que estas usando, pero te costara buenas desveladas y canas verdes.
Para terminar te dejamos la estructura del directorio de tu proyecto
1 2 3 4 5 6 |
|