El desarrollo de STM32 código del microcontrolador en Linux (parte 5 de 8, la construcción de libopencm3)

El primer post de esta serie cubre los pasos para generar y ejecutar código para el STM32. El segundo puesto cubierto cómo construir un compilador cruzado para el STM32. El tercer puesto cubierto cómo construir un depurador para el STM32. El cuarto puesto cubrió el edificio y la configuración OpenOCD para su entorno de desarrollo. Este post va a cubrir la construcción de la biblioteca de dispositivos, libopencm3.
Como se ha mencionado en el post introductorio, que hace nuestra vida mucho más fácil si se utiliza una biblioteca de dispositivos. Esta es una biblioteca que abstrae los detalles de bajo nivel de los registros de hardware de distancia de nosotros, y nos da una API consistente agradable de usar. Mientras ST ofrece un éstas directamente, no es de código abierto (o más específicamente, es el estado de código abierto está turbia). Por suerte hay libopencm3, una re-implementación de código abierto que es también una mejor biblioteca en mi opinión. Como de costumbre, voy a recopilar una cierta versión del libopencm3; nuevas versiones o posteriores pueden o no pueden funcionar mejor para usted.
Como antes, comenzamos con la exportación de algunas variables de entorno:

 /> 

PREFIJO $ export = ~ / opt / cross />
$ export PATH = $ PREFIX / bin: $ PATH

La variable de entorno TOPDIR es el directorio en el que las fuentes se almacenan. La variable de entorno TARGET es la arquitectura que queremos que nuestro compilador emita código. Para los chips de ARM, sin un sistema operativo (como el STM32), queremos armar Coincidir eabi. La variable de entorno PREFIJO es el lugar que queremos nuestras herramientas de compilación cruzada para acabar en, no dude en cambiar esto a algo más adecuado. La variable de entorno BUILDPROCS es el número de procesadores que podemos utilizar, vamos a utilizar todos ellos, mientras que la construcción para acelerar considerablemente el proceso de generación. Por último, hay que añadir la ubicación de los binarios de compilación cruzada en nuestro camino para que las últimas etapas de construcción pueden encontrarlo.
Ahora que hemos establecido nuestro entorno, podemos obtener el código. Tenga en cuenta que a diferencia de la mayoría de las otras herramientas tratados en este tutorial, libopencm3 no hace comunicados. Esperan (más específicamente, requieren) la clonación de la última versión y utiliza eso. Eso es lo que vamos a hacer aquí. Al escribir estas líneas, la última git libopencm3 etiqueta de hash es a909b5ca9e18f802e3caef19e63d38861662c128. Dado que los desarrolladores libopencm3 no garantizan la estabilidad de la API, todos los pasos a continuación asumirá la API a partir de ese hashtag. Si usted decide usar una versión más reciente de libopencm3, es posible que tenga que actualizar el código de ejemplo que les doy para ajustarse a la nueva API. Con eso fuera del camino, vamos a conseguirlo:

  
$ sudo yum install git
$ cd $ TOPDIR
$ git clone git :/ / github.com/libopencm3 / libopencm3.git libopencm3 />


a909b5ca9e18f802e3caef19e63d38861662c128

Lo que hemos hecho aquí es clon el repositorio, haga la compra de una nueva rama con la cabeza en a909b5ca9e18f802e3caef19e63d38861662c128 hash. Esto asegura que incluso si la biblioteca se mueve hacia adelante en el futuro, siempre vamos a usar esa etiqueta hash para los fines de este tutorial. Siguiente construimos la biblioteca:

  
$ PREFIX unset
$ make DETECT_TOOLCHAIN ​​= 1
$ make install DETECT_TOOLCHAIN ​​= 1
$ export prefix = ~ / opt /
cruz

Aquí necesitamos PREFIJO unset porque libopencm3 usa un prefijo para el nombre de cadena de herramientas de prefijo (brazo--ningunos eabi), no prefijo del camino. Una vez que hemos hecho esto, podemos decirle libopencm3 para detectar la cadena de herramientas y, a continuación, utilizarlo para construir libopencm3. Finalmente utilizamos el objetivo de instalación para instalar las cabeceras y las bibliotecas estáticas (. Unos archivos) en nuestro conjunto de herramientas. Asumiendo que esto tiene éxito, todo lo necesario debe estar en ~ / opt / cross / brazo--ningunos eabi /, con las bibliotecas en lib/libopencm3 * y los archivos de cabecera en include/libopencm3. Tenga en cuenta que hay un un archivo por cada chip que es apoyado por libopencm3;. Volveremos a esto más adelante cuando empecemos el código de construcción para nuestro chip.

1 Comentario

  1. Patri

    Sería posible, de una placa STM32L Discovery, con un proyecto hecho, sacar el código de esta? Muchas gracias.

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *