Hola, compañeros programadores, hardware y todos los que simpatizan con ellos. Me gustaría seguir revisando las capacidades del Qt Creator IDE junto con el sistema de compilación QBS con respecto a la programación de microcontroladores.
Anteriormente, escribí sobre mejoras en versiones anteriores de
QtC 4.10 y QBS 1.14 .
Para quien este tema es interesante, bienvenido a cat.
Justo el otro día, silenciosa e imperceptiblemente, se lanzó la versión
Qt Creator 4.11 , que agregó algunas mejoras para trabajar con microcontroladores (en personas comunes: dispositivos "baremetal"). Esta versión de Qt Creator integra el sistema de
compilación QBS 1.15 , que también tiene nuevas mejoras (aún no se ha lanzado).
Mejoras en Qt Creator
Todas estas mejoras están disponibles solo cuando el complemento BareMetal está activado, que se activa a través del menú "Ayuda -> Acerca de los complementos -> Soporte de dispositivos -> BareMetal".
- Se han agregado nuevas arquitecturas a los compiladores GCC, SDCC e IAR EW, cuyos detalles básicos se dan en la tabla a continuación:
Ahora estos nuevos compiladores se detectan automáticamente en la pestaña "Herramientas -> Opciones -> Kits -> Compiladores -> Detección automática".
Por ejemplo, para mí se ve así:

En Windows, la detección automática del compilador GCC para la arquitectura MSP430 no está implementada, porque Este conjunto se proporciona como un archivo simple y no como un instalador.
Pero nadie se molesta en agregar este compilador GCC (y cualquier otro compatible) manualmente, mientras que Qt Creator determinará correctamente el compilador ABI:

Nota: Y, por supuesto, todos los compiladores tendrán automáticamente directorios con encabezados, macros predefinidas, etc. para el resaltado correcto del código.
- A pedido de los trabajadores , se agregó soporte para archivos SVD para describir los registros de periféricos de microcontroladores.
Nota: Como sé, esta función está disponible solo para ARM (aunque puedo estar equivocado) y sigue siendo de naturaleza experimental.
Para usar esta función, primero debe seleccionar el archivo SVD requerido en el campo “Archivo de descripción periférica” en la configuración del dispositivo “Herramientas-> Opciones-> Dispositivos-> Su dispositivo”, correspondiente al microcontrolador de destino:

Nota: Estos archivos se pueden descargar desde el sitio web de ARM o desde directorios con productos Keil MDK o IAR EW instalados.
Además, después de comenzar la depuración, seleccione "Registros periféricos" en el menú "Ventana-> Vistas". Después de eso, se abrirá el panel "Registros periféricos" (similar al panel "Registros") en el que, al hacer clic con el botón derecho, se abre un menú con una lista de grupos de registros que se mostrarán:

Seleccionamos cualquier grupo (por ejemplo, RCC) y obtenemos una lista de todos los registros de este grupo con su descripción detallada y valores que se pueden leer / escribir:

Nota: Por el momento, solo se muestra un grupo seleccionado de registros.
Mejoras en QBS
QBS será una parte integral de esta revisión, por lo que tiene sentido hablar sobre sus mejoras:
- Se agregó soporte para estos nuevos compiladores e implementó la capacidad de detectar automáticamente los compiladores instalados y crear perfiles.
La propiedad qbs.architecture tiene los siguientes valores:
- Se ha agregado soporte de generador a los proyectos Keil MDK e IAR EW para las siguientes arquitecturas y versiones:
Nota: La tabla anterior muestra las versiones de los productos con los que iba el desarrollo de generadores y se comprobó más o menos la operatividad.
Por lo tanto, ahora es posible con estos generadores crear un proyecto nativo para el IDE objetivo deseado. Al mismo tiempo, cada generador convertirá todas las banderas, rutas y dependencias específicas del compilador especificadas en el proyecto QBS a la configuración correspondiente del IDE del proyecto de destino.
Si el proyecto QBS de origen contenía varios productos (por ejemplo, aplicaciones, bibliotecas, etc.), el generador creará un "espacio de trabajo" objetivo con "proyecto" de subproyectos anidados para cada IDE objetivo.
Nota: Diré de inmediato que, como sé, los IDE KEIL o IAR EW no admiten el seguimiento de dependencias (si estoy equivocado, corríjalo). Por lo tanto, por ejemplo, si el proyecto contiene la aplicación y la dependencia en forma de biblioteca, entonces el usuario tendrá que construir primero la biblioteca y luego la aplicación misma.
Para generar proyectos, debe haber configurado los perfiles QBS con los compiladores apropiados.
Nota: Hasta ahora, no puedes prescindir de los perfiles, porque el generador del perfil recibe la arquitectura en sí, la ruta al compilador preinstalado (IDE) y más. Estos datos son necesarios para la búsqueda correcta de scripts de enlazador, rutas a bibliotecas de tiempo de ejecución y otras cosas específicas (no hay una lógica simple allí).
Por ejemplo, para crear un proyecto de destino para el microcontrolador IAR EW y ARM, es suficiente ejecutar el siguiente comando:
qbs generate -g iarew8 -d <path/to/build/directory> -f <path/to/qbs/project/file> profile:<your/qbs/profile/for/arm>
Los nombres de perfil se pueden obtener utilizando, por ejemplo, la utilidad GUI qbs-config-ui (o use la versión de consola).
Nota: Por el momento, los generadores tienen estado experimental. Quizás en algunos casos (si el proyecto original es complejo) generarán archivos de proyecto de destino incorrectos u omitirán algunas marcas y más. No regañe mucho, pero cree informes de errores en el rastreador QBS.
Puede ver el estado actual del soporte del compilador
aquí , y el estado actual de la integración del generador
aquí .
Para ver cómo funciona todo, QBS proporciona un conjunto de
ejemplos simples.
Que sigue
En futuras versiones, se planea agregar arquitecturas y generadores de
Renesas al IAR EW para estas arquitecturas (no sé si tendrá éxito). Y también, si tienes mucha suerte, un depurador de Keil uVision se integrará en Qt Creator.
En esta nota, termino mi historia, gracias a todos los que prestarán atención a esta revisión.