Assemblage de bras d'apprentissage
Au cours de cette année, il y aura quelques sous-600€ Ordinateurs portables multi-touch qui contiennent Tegra2. Ils m'apportent une bonne excuse pour apprendre le langage D'assemblage de bras. Mais je n'ai aucune idée par où commencer à côté de la arm.com.
Pour le premier jet, je pourrais simplement prendre un émulateur avec une distribution linux. Mais quel émulateur et quelle distribution fonctionneraient le mieux sur celui-ci? Avoir accès aux fichiers du système hôte serait correct donc je pourrais compiler et exécuter des binaires ARM directement de mon répertoire home.
Je ne voudrais pas gaspiller beaucoup d'argent dans les livres, donc j'aurais besoin d'exemples de code source d'assemblage et d'une bonne introduction gratuite au jeu d'instructions. les drapeaux du compilateur gcc pour compiler des programmes ARM sur x86 seraient également bien, mais je pourrais aussi les trouver moi-même.
5 réponses
Obtenir une version d'évaluation de l'une des boîtes à outils logicielles arm qui comprendra un débogueur/émulateur logiciel. Si vous êtes prêt à dépenser quelques centaines de dollars, obtenir un conseil d'évaluation arm ( Keil vend quelques-uns). Vous pouvez tester votre code sur la carte via une interface JTAG et voir ce qui se passe sur le matériel réel.
Ceux-ci devraient vous amener dans la bonne direction
divulgation: je travaille pour ARM.
Les documents de référence ARM fournissent en fait une très belle introduction au jeu d'instructions. Ceux-ci sont un excellent endroit pour commencer.
Puisque vous écrivez assembly (et donc probablement intéressé par les détails de performance de bas niveau), vous voudrez soit un simulateur de cycle précis ou du matériel réel (ou les deux). Outre les options matérielles suggérées par David Lively , Vous pouvez également regarder dans une carte Beagle .
En ce qui concerne les compilateurs, il y a ARM Outils RealView et il y a GCC. La prise en charge des nouvelles fonctionnalités matérielles peut être un peu plus complète dans les outils ARM.
La meilleure ressource que j'ai trouvée pour apprendre le langage D'assemblage ARM à partir de Zéro est ce tutoriel: "http://www.coranac.com/tonc/text/asm.htm"
C'est un peu dépassé mais il explique les bases de L'assemblage ARM, et vous pourrez alors lire les manuels de référence ARM officiels pour voir les spécificités de l'appareil que vous ciblez. Par exemple, si vous visez les smartphones, ARM v7 est un jeu d'instructions très populaire ces jours-ci afin que vous puissiez cibler cela et en apprendre davantage sur Thumb-2 et des technologies plus récentes. Ou si vous visez des puces de microcontrôleur intégrées qui ne coûtent que quelques dollars, il existe des fonctionnalités légèrement différentes, etc.
Commencez par qemu pour un émulateur, distributions linux, et certaines cartes sur et hors du marché sont pris en charge. Aller à sparkfun.com il existe de nombreuses cartes arm sous 50 $pour l'apprentissage de l'assembleur arm, mais pas nécessairement linux. Vous voulez apprendre arm7 ou arm d'abord puis pouce deuxième. La carte embest (en supposant qu'elle ne soit pas trop bon marché) est meilleure que le beagleboard pour rendre le beagleboard utile, vous devrez dépenser 150 $ de plus en câbles et en USB. Le Conseil embest a pris une semaine ou deux pour obtenir aux états-unis de l'époque, il a été ordonné. Pour cet argent, je préfère la carte openrd ou un ordinateur de prise avec un sheeva marvell. Ou pour un système plus ancien aller avec embeddedarm.com. si vous êtes à la recherche d'assembleur, vous n'aurez pas besoin d'un système compatible linux, alors optez pour quelque chose de sparkfun, arm7 basé comme le sam7 ou LPC quelque chose, il y en a un avec un port série à bord déjà mais vous devez fournir l'alimentation. Obtenez un JTAG-tiny ou trois d'amontec, excellent outil à avoir.
Le Game boy advance est un bon endroit pour apprendre à programmer le bras et le pouce, visualboy advance est un bon émulateur. Je peux vous montrer comment faire un câble série et le matériel pour faire d'autres choses. Il y a un linux. Le NDS (Nintendo DS) est aussi un bon système mais je commencerais par le GBA en premier. Évitez le NDSi.
Disclaimer: Je n'ai aucune affiliation d'arm mais j'ai au moins un de tout ce qui est décrit ci-dessus, plus quelques cartes stellaris (thumb2 apprendre le cortex-m3 dernier après bras et le pouce).
Apprendre avec des exemples exécutables
Je travaille sur: https://github.com/cirosantilli/arm-assembly-cheat
Caractéristiques:
- peut être exécuté soit à partir D'un hôte Linux avec le mode utilisateur QEMU sans avoir besoin D'une carte ARM, mais aussi nativement si vous avez une carte comme un Raspberry Pi
- couvre à la fois ARMv7 et ARMv8
- bonne configuration GDB hors de la boîte, à la fois sur l'hôte et natif
- A affirme que montrer le numéro de ligne d'assemblage où les choses ont échoué
- utilise la bibliothèque standard C pour IO, ce qui le rend portable en théorie, et permet de réutiliser facilement des goodies comme
printf
etmemcpy