No hace mucho tiempo, ayudó con el desarrollo de microcontroladores de una compañía poco conocida: Milander. El entorno de desarrollo oficial de Keil. No me gustó, pero el procesador se basa en la arquitectura de otra compañía ARM poco conocida, lo que significa que hay un compilador gcc para él. Y donde hay gcc, QtCreator también se puede usar como IDE.

Introduccion
Inicialmente, la tarea era bastante simple. Encuentra los archivos que necesitas para construir el proyecto. Tome un proyecto ya realizado bajo stm32f407 y proceselo con un archivo. Sin embargo, durante la implementación de un plan tan simple, hubo un deseo de hacer un proyecto un poco más interesante de lo que se pensaba originalmente.
Preparación
Primero debe descargar el compilador y el depurador para microcontroladores basados en los núcleos de la serie Cortex-M. La última versión está aquí
[1] . También necesitará QtCreator, los no perezosos pueden compilar desde la fuente, los perezosos pueden llegar aquí
[2] . También necesitamos openocd para flashear y depurar el microcontrolador.
[3] Compilador GCC para Cortex-M en el sitio ARM
[9]Instale el software especificado, así como todas las dependencias según sea necesario. Luego procedemos a configurar el entorno.
Configuración de QtCreator'a en imágenesSi no está habilitado, habilite el soporte básico en Ayuda -> Acerca de los módulos
Agregar compiladores
g ++

gcc

Agregar depurador gdb

Creamos un perfil de depuración abierto, esto
no es
una gran muleta. La ruta al archivo de configuración debe especificarse como absoluta. El archivo para cada microcontrolador es diferente, esto presenta ciertos inconvenientes.

Ajuste de metal desnudo

Y ponlo todo en un conjunto

Bibliotecas de microcontroladores
Una búsqueda rápida en el sitio de Milander no produjo un conjunto oficial de bibliotecas para trabajar con periféricos y el núcleo del microcontrolador. El conjunto admite gcc y está ubicado en el github
[4] . El ensamblaje fue al proyecto terminado para stm32f407 con bastante facilidad, y después de arreglarlo en un par de lugares, ya estaba ansioso por flashear el microcontrolador. Editando el archivo de configuración de openocd y ahora todo está parpadeando. Un poco más de cerrajería y depuración ya está funcionando. Y parece que eso es todo: una victoria fácil. Pero las bibliotecas admiten varios microcontroladores. Y los microcontroladores en diferentes núcleos también usan diferentes bibliotecas periféricas. Inmediatamente surgió la idea de hacer un proyecto para que pueda seleccionar fácilmente el microcontrolador deseado, y el entorno mismo seleccionará las bibliotecas y periféricos centrales necesarios. Esta idea se me ocurrió cuando dominé stm32f407. La oportunidad de realizar una idea tan interesante no podía dejar pasar.
Un par de noches recogiendo en bibliotecas y qbs
[5] dio un resultado positivo. Fue posible configurar la compilación para los siguientes microcontroladores: MDR1901VC1T (19011), MDR1986VE1T (1986 BE1T), MDR1986VE3 (1986 BE3), MDR1986BE4 (1986 BE4x), MDR1986VE8T (1986 BE8x), MDR1986VE9x (1986 BE). Aunque la descripción de las bibliotecas de origen no era compatible con MDR1986VE8T, había una parte de la biblioteca central y los archivos de la biblioteca periférica. Faltaban algunos de los archivos de encabezado que se encontraron en el repositorio ARM
[6] .
Proyecto final
El resultado fue una plantilla bastante modesta que le permite escribir proyectos para varios microcontroladores. Plantilla de mentiras en github
[7] . La biblioteca de origen ha sufrido una serie de cambios cosméticos. Aunque quería mantener la compatibilidad con el proyecto original, tuve que bifurcar
[8] y perder la compatibilidad, pero esto es una tarifa por la versatilidad. Puede descargar el proyecto de la siguiente manera.
git clone https://github.com/WicRus/emdr1986x-std-per-lib-qbs.git --recursive
También puede clonar un proyecto directamente desde QtCreator especificando la dirección del repositorio y marcando Recursivamente.
La cría
El resultado principal es una plantilla universal con soporte para varios microcontroladores con varias bibliotecas centrales y periféricas. Sin embargo, hubo una serie de puntos que deben tenerse en cuenta:
- Fue posible verificar el firmware y la depuración solo en MDR1986VE1T.
- Los archivos de configuración de openocd de destino se encontraron solo para MDR1986VE1T y MDR1986VE9x. Para el resto de los controladores, debe tomar o escribir en algún lugar usted mismo.
- Las bibliotecas para el MDR1986VE8T se compilaron sin mucha comprensión del problema. Es necesario verificar el correcto funcionamiento.
- Las bibliotecas de origen han cambiado significativamente. Posibles problemas de fusión.
- Al compilar para MDR1901VC1T, MDR1986BE4, MDR1986VE9x, se emite una advertencia sobre las bibliotecas de kernel obsoletas. Es necesario actualizar las bibliotecas del núcleo por analogía con MDR1986VE8T, y luego verificar el funcionamiento correcto.
- Característica de crear la configuración de openocd. Para cada tipo individual de microcontrolador, es posible que necesite un kit de construcción separado en QtCreator.
ReferenciasPrecaución, los enlaces se abren en esta ventana.
0. La base para el sitio de KDPV Milander1. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads2. https://www.qt.io/download-qt-installer3. http://openocd.org4. https://github.com/eldarkg/emdr1986x-std-per-lib5. https://doc.qt.io/qbs/6. https://github.com/ARM-software/CMSIS_57. https://github.com/WicRus/emdr1986x-std-per-lib-qbs8. https://github.com/WicRus/emdr1986x-std-per-lib9. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloadsHistoria de ediciones.17/09/19 Se agregó un enlace a GNU Arm Embedded Toolchain.