Programa de ejemplo que imprime el mensaje Hello World!
, basado en la demo de FreeRTOS para QEMU.
Generar la imagen docker con:
docker build rtsg -t .
Importante: el script docker.make
espera que la imagen se llame rtsg
.
Desde una termina se puede compilar el proyecto mediante el siguiente comando:
$ ./docker.make
Para ejecutar el programa en una máquina virtual QEMU, ejecutar:
$ ./docker.make qemu
Se puede terminar la ejecución presionando C^A X
. También es posible visualizar la salida gráfica de QEMU mediante VNC conectandose a :0
.
Para importar el proyecto en Eclipse:
-
Seleccionar [File > New > Makefile Project with Existing Code].
-
En la nueva ventana:
- En [Existing Code Location] indicar el path en donde se descargó o clonó el repositorio (usar el botón [Browse...]).
- En [Toolchain for Indexer] seleccionar la opción ARM Cross GCC (¡importante!).
-
El proyecto debe aparecer ahora en la vista Project Explorer:
- Hacer clic derecho sobre el mismo, y seleccionar [Properties] en el menú contextual.
- En la nueva ventana, en la sección izquierda, seleccionar [C/C++ Build > Settings]. En la sección derecha de la ventana, hacer clic en la pestaña [Toolchains]. Verificar que el campo Name indique GNU MCU Eclipse ARM Embedded GCC (arm-none-eabi-gcc) o similar.
- Hacer clic en [Apply and Close].
Para configurar el proceso de compilación para que utilice la imagen Docker:
- Seleccionar [Project > Properties]
- En la nueva ventana:
- Seleccionar [C/C++ Build > Settings] en la lista de la izquierda.
- En la sección derecha, hacer clic en la pestaña [Container settings]
- Tildar la opción [Build inside Docker image]
- En Connection seleccionar la conexión al daemon Docker (generalmente
unix:///var/run/docker.sock
) - En Image seleccionar
rtsg:latest
- En Data volumes mapear el path
/app
con el path del proyecto. - Finalmente, cliquear [Apply and close]
Luego, para compilar el proyecto se puede:
- Hacer clic derecho sobre el proyecto en la vista Project Explorer y seleccionar [Build] en el menú contextual.
- Seleccionar en la barra de menúes de Eclipse [Project > Build Project].
- Hacer clic en el ícono Build (un martillo).
Si el proyecto compilo correctamente, en la vista [Console] debe indicarse que se generó correctamente el archivo build/main.elf
.
Primero configurar el perfil de debugging:
- Seleccionar [Run > Debug Configurations...] en el menú de Eclipse.
- En la nueva ventana, hacer doble clic sobre [GDB Hardware Debugging] en el menú izquierdo. Esto crea una nueva configuración basada en el perfil, con el nombre del proyecto activo.
- Seleccionar el nuevo perfil creado (lm3s6965evb-helloworld-makefile).
- En el panel derecho:
- En la pestaña [Main]:
- En el Project debe indicar el nombre del proyecto (lm3s6965evb-helloworld-makefile).
- En el campo C/C++ Application se debe indicar
build/main.elf
. - Seleccionar Use workspace settings.
- En la pestaña [Debugger]:
- El campo GDB Command debe decir
arm-none-eabi-gdb
. - Seleccionar Use remote target.
- En GDB Connection String completar
localhost:1234
.
- El campo GDB Command debe decir
- En la pestaña [Startup]:
- Desmarcar Reset and delay, Halt y Load image si estuvieran seleccionados.
- Seleccionar la opción Load symbols y Use project binary: main.elf.
- Seleccionar la opción Set breakpoint at: y en el campo adyacente indicar
main
. - Seleccionar la opción Resume.
- En la pestaña [Common], seleccionar la opción [Shared file:], indicando en el campo el nombre del proyecto. De esta manera la configuración para debugging es guardada en un archivo
*.launch
dentro del proyecto. - Hacer clic en el botón [Apply], no cerrar la ventana aún.
- En la pestaña [Main]:
Luego, para ejecutar QEMU, tenemos dos opciones:
Si se instalo QEMU localmente (por ejemplo en el directorio ~/setr/qemu
, ejecutar el siguiente comando desde una terminal:
~/setr/qemu/bin/qemu-system-arm -kernel ./build/main.elf -S -s -machine lm3s6965evb
Luego, en Eclipse hacemos clic en el botón [Debug], y cuando Eclipse nos pregunte si queremos cambiar a la perspectiva de Debugging le decimos que sí (switch).
Si todo funcionó correctamente, se alcanza el breakpoint en la función main()
y la ejecución queda detenida en ese punto. Seleccionar [Run > Resume] (o presionar F8).
Si se tiene la imagen Docker, abrir una terminal y ejecutar el siguiente comando:
$ ./docker.gdb
Luego, en Eclipse hacemos clic en el botón [Debug], y cuando Eclipse nos pregunte si queremos cambiar a la perspectiva de Debugging le decimos que sí (switch).
Si todo funcionó correctamente, se alcanza el breakpoint en la función main()
y la ejecución queda detenida en ese punto. Seleccionar [Run > Resume] (o presionar F8).
Se puede configurar una acción en Eclipse para ejecutar este script sin necesidad de ir a una terminal:
- Ir al menú [Run > External Tools > External Tools configurations].
- En la nueva ventana, crear una nueva configuración haciendo doble clic en Program.
- En el campo [Name] ingresar
docker.qemu-gdb
o cualquier nombre descriptivo que se quiera. - En el campo [Location] ingresar el path completo al script
docker.gdb
del proyecto. - En el campo [Working directory] ingresar el path completo al directorio del proyecto.
- Cliquear [Apply] para guardar los cambios.
Luego, ejecutando esta acción, se inicia el servidor gdb de QEMU desde Eclipse.