L'écriture de code assembleur à l'aide de avr-gcc
J'ai récemment acheté une carte Arduino Uno, qui est essentiellement un atMega328 avr processeur avec tous les détails tels que les I/O et la connexion à l'ordinateur en prenant soin de vous.
J'ai réussi à avoir un code écrit à l'aide de l'IDE Arduino et de l'avr-gcc collection.Cependant, je tiens à écrire pure assemblée le code, et j'ai frappé une impasse, puisqu'il semble être proche d'aucune documentation sur le sujet.C'est, je tiens à écrire "pure" de l'assemblée, aucune inline c montage et la comme.Je voudrais savoir si et, si possible, un exemple de programme(l'assemblée de la sortie de gcc-avr était pas utile, étant incompréhensible et tout et tout ).
En particulier:
- Comment peut-on instruire avr-de mettre ce code dans par exemple les vecteurs d'interruption ?
- Quelles directives sont disponibles?
- Où le faire .les données et les .sev sections aller?
M'indiquer des exemples appropriés est apprécié.
- Pas vraiment une réponse, mais avr-asm.tripod.com peut aider
- Merci, mais ce site ne semble pas parler de gaz de la syntaxe spécifique ,conventions, etc, qui est ce que je demande, depuis le avr fonctionnalités sont bien documentés par Atmel.
- github.com/dwelch67/avr_samples, malheureusement, il semble que mon avr échantillons ne sont pas en assembleur gnu mais avra. Si vous vous promenez autour le reste de mon repos si vous verrez que beaucoup de beaucoup de gaz/gcc exemples avec simple un linker script que vous pouvez trouver. le même thème s'applique à n'importe quelle cible, le linker script avec les bonnes adresses pour la mémoire ram ou rom et ram, le _start: symbole que votre point d'entrée, de mettre le boot asm code objet en premier sur la -ld ligne de commande pour le mettre en premier dans le binaire, etc. Si cela ne vous aide pas je peux faire un gnu comme avr échantillon
- vraiment regarder les github.com/dwelch67/avriss il y a un gcc-avr basé exemple. mon instruction set simulator peut ou peut ne pas être débogué, ne pas compter sur elle, mais l'exemple doit montrer que vous voulez que vous demandez, si vous ne voulez pas le code C juste ne pas compiler et lier cela il suffit de laisser le fichier de démarrage comme seule source. ou ajouter d'autres sources assembleur. à l'exception de choses forcé par l'éditeur de liens de script le code d'entrée est le premier objet sur le ld de ligne de commande (ld met des choses dans le binaire dans la ligne de commande la commande)
Vous devez vous connecter pour publier un commentaire.
Le meilleur de la documentation que j'ai pu trouver est l'avr-gcc assembleur tutoriel.C'est ce qui explique que:
On peut utiliser les vecteurs d'interruption à l'aide de l'avr-libc.Afin de le faire sans les bibliothèques externes, on peut faire référence à la source, comme Brett Hale suggéré.
Il mentionne l'avr-directives particulières.
Il est également livré avec un exemple simple.
Je vous suggère de regarder la l'avr-libc de la bibliothèque. Ne laissez pas le nom vous tromper. La plupart des il est hautement optimisé AVR assembleur, avec linker scripts, le faible niveau HW accès, etc.
L'Arduino Wiki à
http://www.cs.nmsu.edu/~jcook/arduino/index.php
donne une manière de le faire. Il exige la modification et la reconstruction de l'IDE Arduino pour permettre à l'assemblée de code (.s fichiers) à être utilisé.