He estado trabajando con microcontroladores ARM de la serie STM32 en IAR Embedded Workbench durante un tiempo. Por alguna razón, ahora necesito mover mis trabajos a Qt-Creator (tanto en Windows como en Linux). En IAR EWARM, las cosas son más simples: nunca tuve que lidiar con secuencias de comandos de vinculación o archivos de inicio, simplemente abra una plantilla de proyecto IAR EWARM de la versión Peripheral Library de ST y con algunos ajustes simples, está lista. De todos modos, intenté crear un nuevo proyecto para STM32F4 en Qt pero me encontré con varios problemas.
¿Hay alguien que pueda explicar este proceso claramente, paso a paso ? Con el archivo MAKE relacionado, la secuencia de comandos del enlazador, los archivos de inicio y del sistema si es posible.
Nota: En realidad, tengo un montón de preguntas específicas sobre el tema, pero como creo que una explicación de todo el proceso puede ser útil para mí y para otros novatos integrados, decidí hacer la pregunta de esta manera.
De hecho, trabajo con esta configuración, funciona de maravilla.
Primero asegúrese de usar una versión reciente de Qt Creator. Descargué el mío del sitio web. En algunos repositorios de Linux está desactualizado y no es compatible con el complemento BareMetal y/o QBS (que es bastante útil).
Requisitos:
Versiones utilizadas: Qt Creator 3.6.0, ARM GCC 4.8.2-14ubuntu1+6, ARM GDB 7.6/7.10 con soporte para python y OpenOCD 0.7.0.
1) Instale Qt Creator. Abra Ayuda -> Acerca de los complementos. Busque la categoría Soporte de dispositivos y verifique BareMetal.
2) Vaya a Herramientas -> Opciones. Hay algunas configuraciones que necesitamos crear y ajustar para compilar para un controlador ARM Cortex.
a) Vaya a "Bare Metal" (última categoría) - agregue un depurador de su elección. Yo personalmente uso OpenOCD. En este punto, puede configurar la conexión a gdb y su puerto, así como los comandos de inicio. Los comandos estándar están configurados para chips STM32F4xx, pero supongo que puede modificarlos para que funcionen con cualquier controlador ARM Cortex.
b) Vaya a "Dispositivos". Agregue un nuevo dispositivo, elija Bare Metal y el proveedor de GDB que acaba de crear. No hay nada más que configurar aquí.
c) Vaya a "Construir y ejecutar" - pestaña Depuradores. Esto ha sido lo más complicado de hacer.
Necesita una versión arm gdb con soporte para secuencias de comandos de python . En ese momento (hace unos 9 meses cuando escribo esta publicación), los archivos binarios en el repositorio de Ubuntu no tienen esta opción. Puede ahorrar mucho tiempo/molestias comprobando si esto ha cambiado.
Sin embargo, si necesita compilar GDB con soporte de python, aquí le mostramos cómo hacerlo. Descarga GDB desde los archivos de descarga . Todavía uso GDB-7.6 que parece funcionar bien, pero para este tutorial lo he recompilado para GDB-7.10.
Extraiga el archivo fuente. Abra en la terminal y ejecute "./configure --with-python --target=arm-elf". Esto configura el entorno de creación para objetivos ARM con secuencias de comandos de python habilitadas. Luego ejecuta hacer. Esto toma un tiempo, dependiendo de la velocidad de su sistema. Desafortunadamente, puede estar un poco solo una vez que la compilación se detiene debido a problemas de dependencia. No tengas miedo: ¡esto también me sucedió en mi primer intento y lo descubrí con un montón de búsquedas en Google! Si Python falla, asegúrese de instalar el paquete python2.x-dev (verifique su versión no, probablemente 2.7). Suponiendo que la compilación haya ido bien, puede encontrar el ejecutable gdb en el directorio principal.
Si está en Mac, es probable que el proceso sea similar. Pero no estoy familiarizado con OSX. Si está en Windows, lo siento, tendrá que buscar un poco en Google sobre cómo hacer esto con Mingw o lo que sea (honestamente, no lo sé). O tal vez encuentre binarios que tengan este soporte habilitado.
Una vez que haya adquirido un ejecutable gdb, llámelo, por ejemplo, "ARM GDB" y establezca la ruta. Personalmente, no me molesto en colocarlo en /usr/bin/, pero supongo que podría hacerlo.
Esta ventana arrojará un error si usa un ejecutable gdb que no está compilado con Python Scripting.
d) Pestaña "Construir y ejecutar" - "Compiladores"
Cree un nuevo "compilador GCC" y llámelo "ARM GCC". Para la ruta, use "/usr/bin/arm-none-eabi-gcc". El "ABI" no es realmente importante, solo lo configuré en arm-unknown-unknown-unknown-32bit.
e) Pestaña "Construir y ejecutar" - "Kits". Agregue un nuevo kit, llamé al mío "ARM Bare Metal". Tipo de dispositivo: "Bare Metal" Dispositivo: señale el dispositivo que ha creado con su servidor OpenOCD/St link GDB Sysroot: déjelo vacío Compilador: ARM GCC Depurador: ARM GDB Qt Versión: Ninguno - Obviamente no puede ejecutar el tiempo de ejecución de QT en una corteza m4! Herramienta Cmake: sin usar
Asegúrese de que no haya advertencias en ninguna de las pestañas Build & Run
3) Haga su proyecto make/qmake/QBS. En el lado izquierdo, vaya a la pestaña "proyectos" y en la parte superior izquierda agregue el kit "ARM Bare Metal". Esto debería funcionar sin errores. Su proyecto puede comenzar con un kit de escritorio. Reemplazar generalmente no funciona. En ese caso, agregue un kit ARM y luego retire el de escritorio.
4) Inicie su servidor OpenOcd. Utilizo un descubrimiento STM32F4 para el desarrollo y también programación externa para mis propias placas STM32. Para cualquier objetivo STM32F40x/STM32F41x ejecute:
openocd -f tablero/stm32f4discovery.cfg
Esto inicia un servidor gdb en el puerto 3333 y un servidor telnet (para comandos OpenOCD) en 4444. Como acceso directo, creo algunos archivos .sh en mi directorio de inicio para un inicio rápido de un servidor GDB.
5) Inicie la sesión de depuración. Debe programar y ejecutar!
Puede establecer puntos de interrupción, recorrer el código, incluso más PC, ver la pila de llamadas, variables (locales / ver) y desensamblar. Estoy realmente satisfecho con esto, pero obviamente le faltan algunas cosas como: 1) "Vista de registro". Sí, tiene uno, pero eso es solo los registros de la CPU. Quiero registrar la vista de mis periféricos también. 2) Descargue el progreso o información más detallada sobre el estado de la conexión. Debe consultar openocd para esto.
editar: He puesto un proyecto de ejemplo en este repositorio de Github . Contiene esta publicación con algunas capturas de pantalla de diálogo agregadas, así como un proyecto parpadeante para la placa Discovery STM32F4 usando un proyecto QBS en Qt Creator.
Descargue e instale GCC-ARM , OpenOCD y ST-Util . STM32CubeF4 es opcional pero obligatorio.
Agregue un compilador y un depurador personalizados como se muestra en la imagen a continuación en Tools->Options->Build & Run .
Aprenda a usar OpenOCD, GDB y ST-Flash.
Sitios sugeridos:
Cubrir toda la configuración de QtCreator
http://www.bartslinger.com/cx-10-quadcopter/debugging-stm32-from-qtcreator/
Proyecto bare metal simple para STM32 (es mío)
Un buen punto de partida para ti es wiki.qt.io/Building_Qt_5_from_Git
También encontrará todo lo que necesita en su documentación, que se encuentra en doc.qt.io.
Obtendrá el mejor soporte en su foro oficial forum.qt.io/category/4/qt-development .
Esta es una pregunta más SO, y no para SE EE.
Si desea compilar Qt dirigido a STM32, la respuesta corta es: ¡Olvídelo!
Por qué ? Qt está destinado a ejecutarse en Windows o Linux como mencionas. Pero no es posible ejecutar esos sistemas operativos en un STM32 porque carece de MMU, memoria, energía, etc.
Si desea portar Qt a un nuevo sistema operativo o un evento completo, ¡el camino será muy largo!
antonio
dyn
antonio
antonio
dyn