Pregunta

tengo que probar algo de código de bajo nivel en una arquitectura ARM. Normalmente la experimentación es bastante complicado en el consejo real, por lo que estaba pensando en QEMU.

Lo que me gustaría es conseguir algún tipo de información de depuración como printfs o GDB. Sé que esto es simple con Linux, ya que implementa tanto el controlador de dispositivo para el QEMU Integrator y la función del BGF, pero no estoy trabajando con Linux. También sospecho que la extracción de este tipo de funcionalidad del código fuente del núcleo de Linux sería complicado.

Estoy en busca de algún sencilla sistema operativo que ya implementa una de esas características. ¿Tiene algún consejo?

¿Fue útil?

Solución

Usted no necesita un sistema operativo de destino para depurar el código que se ejecuta dentro de QEMU -. QEMU ya lo hace por usted

En concreto, soportes QEMU depuración remota del BGF - puede ejecutar QEMU con las opciones de línea de comandos apropiadas y va a exportar una interfaz que una copia de GDB (que se ejecuta en la máquina host) puede conectarse. En ese punto, puede depurar el programa en GDB más o menos igual que si se ejecuta en la máquina host.

http://wiki.osdev.org/GDB parece tener información un poco más básica; posiblemente no lo suficiente para llegar por completo a empezar, pero al menos le da la idea básica y algunos términos a buscar en la documentación QEMU y GDB. Pasar por alto lo de "Implementación de GDB Talones", que no se aplica aquí desde QEMU tiene uno ya, y empezar en la sección sobre "Uso del emulador Talones". La forma corta es simplemente que se inicia QEMU con la opción -s (exportar una conexión BGF en localhost: 1234) y la opción -S (espera por una GDB "Continuar" comando antes de iniciar la ejecución), y luego en el GDB en el host que usted dice target remote :1234 en lugar de run. También, por supuesto, tiene que estar usando una versión ARM de GDB en lugar de una sola x86 nativa.

(Además, si usted está dispuesto a pagar por una solución comercial, cadena de herramientas ARM CodeSourcery tiene la integración IDE para configurar todo esto de forma automática, incluido el apoyo para "printf" para imprimir en la consola depurador. Que funciona en un tablero físico, también, si usted tiene un depurador de hardware descargo de responsabilidad habitual de que yo era un empleado de CodeSourcery aplica -.. pero yo no les resulta muy fácil de usar)

Actualización de 2012:. cadena de herramientas de CodeSourcery es ahora llamado Mentor Graphics Sourcery Codebench, pero todo lo anterior sigue siendo válida

Otros consejos

Me doy cuenta de que me estoy dirigiendo a su problema original aquí en lugar de la solución propuesta (que quizás es mejor?), Pero usar el BGF (o Insight / BGF) directamente en el destino, utilice una herramienta de bajo costo JTAG y OpenOCD . Un ejemplo de una puesta a punto tal y cómo ponerlo en práctica se puede encontrar aquí .

Si usted tiene un presupuesto más grande, un depurador JTAG más con todas las funciones pueden ser útiles, tales como el Abatron BDI3000 con bdiGDB firmware que permite la depuración remota y el dispositivo de programación a través de Ethernet con gDB y no hay controladores especiales o agente de depuración de destino.

Tal vez un microkernel como OKL4 se adapte a sus necesidades?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top