2011-06-05 13 views
10

Tengo un x86, linux box. mientras leía información variada sobre ARM, me puse curioso y ahora estoy pensando en pasar algún tiempo aprendiendo esta arquitectura. Mi objetivo a partir de ahora es poder escribir programas de ensamblaje triviales para ARM, usar algún ensamblador para generar el código objetivo para ARM y poder ejecutar ese programa en una máquina ARM emulada. Para empezar, he descargado el manual de referencia de arquitectura ARM. De acuerdo con la información here, Keil no es compatible con Linux, por lo tanto, por favor ayúdenme con las herramientas (ensamblador, emulador) que necesitaría.Herramientas necesarias para aprender ARM en la plataforma Linux x86

Respuesta

0

Existen compiladores cruzados de GCC disponibles para objetivos ARM; Code Sourcery es bastante común si quieres uno preconstruido.

En cuanto a un entorno de emulación, qemu hace un buen trabajo al emular el ARM. El emulador de Android de Google se basa en eqmu (y su "NDK" es otra fuente de un compilador cruzado ARM preconstruido).

9

Básicamente, necesita dos cosas: una cadena de herramientas y un emulador.

La cadena de herramientas consiste en todo lo que necesita para crear aplicaciones para la arquitectura ARM y ejecutarla en el destino (en su caso, un emulador). Un buen lugar para comenzar sería buildroot o ELDK. Estos le proporcionarán una solución completa de Linux. Si solo desea poder compilar, sin trabajar con una instalación de Linux (y los rootfs que lo acompañan), puede usar solo un compilador cruzado. Una gratis es CodeSourcery, pero también hay algunas otras (la mayoría basadas en GCC).

El emulador es el lugar donde ejecutará el código, que se comportará como una CPU ARM. Un buen lugar para comenzar es QEMU.

Los proyectos cruzados tienen una curva de aprendizaje bastante empinada, y requieren mucha búsqueda en línea para hacer las cosas. Rara vez hay guías detalladas paso a paso para todo el proceso, pero hay muchas guías para diversas partes del trabajo.

+0

Gracias Eli, descargué buildroot e hice los pasos básicos mencionados en la sección README. Después de la finalización exitosa de make, la cadena de herramientas para el destino macine (brazo) en mi caso se encontró en ~/buildroot- /output/host/usr/bin. Ahora, como mencionaste, trataré de ejecutar un código de máquina de brazo simple en el procesador emulado por QEMU. Gracias de nuevo por su ayuda y, por favor, avíseme si me he perdido algo. – Amit

3

codesourcery es más o menos la herramienta de brazo de gcc. puedes construir tu propio gcc por supuesto o hay otros (devkitarm, yagarto, emdebian, etc.), pero codesourcery es de vanguardia y simplemente funciona. llvm es también un buen compilador, no es necesario realizar una compilación cruzada, admite múltiples objetivos con la única instalación. Para ambos utilizo binutils (parte de codesourcery, construyo uno para usar con llvm). cada vez es más difícil obtener una compilación con newlib, si mal no recuerdo estas instrucciones funcionan http://www.cowlark.com/2009-07-04-building-gcc/. Newlib es súper fácil de portar a cualquier objetivo.

Tengo un emulador de pulgar, el conjunto de instrucciones de brazo reducido. búsqueda de thumbulator en github. Ofrece una visibilidad mucho mayor que qemu si eso es lo que buscas, pero limitado a una tabla de cortex-m3 como excepción y arranque. Para construir un brazo basado en Linux y correr que definitivamente va con qemu. gdb tiene incorporado el brazo (emulador de ARM). Todo depende de lo que estás buscando.

Cuestiones relacionadas