Langage assembleur sous Arduino

Bonjour à tous,

Je vous contacte car l'année prochaine, le programme de ma licence aborde le langage assembleur.

Malheureusement, je n'ai pas trouvé sur internet d'ouvrage parlant de la programmation d'une carte Arduino (de type Uno) sous langage assembleur. (je cherche à m’entraîner pour prendre un peu d'avance, ça évitera d'être largué en cours).

Sinon j'ai consulté le descriptif du microcontrôleur ATMega qui précise que la carte est programmable à la fois en C / C++ et Assembleur, il en est de même pour le logiciel Arduino.

L'un d'entre vous connait-il les spécificité du langage assembleur sous Arduino ? Existe-t-t-il des livres, articles, sites traitant de ce sujet ?

Merci d'avance pour toutes vos réponses.

Antoine

Lol en effet c'est possible mais disons que personne le fait car c'est cazi inutile sinon il te faut avr studio pour faire du basic, et moi je suis curieux de savoir dans quel licence enseigne encore l'assembleur? xD c'est un peu dépassé dirais je :stuck_out_tongue:

Skizo !

L'assembleur c'est pas friendly c'est sûr, mais il n'y a pas plus rapide et beaucoup d'école l'enseignent pour plusieurs raisons : la première que je viens d'évoquer, la deuxième c'est que qui peut le plus peu le moins. Autrement dit si tu maîtrises l'assembleur, tu sais ce qu'il se cache derrière le langage qui se cache derrière wiring :wink: Et dernière raison (que je vois) : t'auras beau dire ce que tu voudras l'assembleur sera toujours la (en tout cas actuellement). On est pas forcement obligé de coder avec, mais pour tout les personnes qui "bossent dans l'ombre", c'est leur quotitidien donc pour des gens qui vont potentiellement travailler dans ces milieux il est bien normal de l'enseigner

L'essentiel de la philosophie de la plateforme Arduino consiste à simplifier autant que possible l'utilisation des microcontrôleurs, du point du vue à la fois software et hardware. Et l'assembleur ne cadre pas vraiment avec cette optique, ce qui explique que ce ne soit pas la partie la plus développée, mais c'est tout à fait possible.

Ceci dit, si il n'y a aucun problème à programmer une Uno avec un programme écrit à la base en assembleur, il te faudra en revanche sortir de l'environnement Arduino pour la partie soft, l'IDE Arduino n'est pas vraiment adapté pour ça[1]. Dans tes recherches, utilise donc plutôt les termes avr assembler ou atmega assembler pour obtenir quelque chose de pertinent.

Ce document notamment www.avr-asm-download.de/beginner_en.pdf est assez intéressant pour commencer à mettre les pieds dans le plat.

[1] sauf si tu veux programmer en C avec quelques lignes d'assembleur imbriquées, mais d'après ce que j'ai compris ce n'est pas la cas.

Bonjour,

Tout d'abord j'ai quelques questions :

Tu veut ?

  • faire du code mixte C/C++ & assembleur "inline"
  • faire du code assembleur avec un "starter script" (en gros tu écrit juste tes fonctions haut niveau en assembleur, pour l'initialisation bas niveau c'est le compilo qui s'en charge)
  • faire du code assembleur pure sans aide du compilo ou autre

Sur quelle plateforme ?

  • windows
  • linux
  • mac

Avec quel type d'outils ?

  • makefile en ligne de commande + éditeur texte quelconque
  • makefile + IDE graphique
  • IDE tout intégré avec possibilité de simulation
  • IDE Arduino de base

Souhaites tu pouvoir debugger ton code sur la carte physique ?

Et pour finir : et tu conscient que le langage assembleur est différent pour chaque type de CPU ?
(histoire d'éviter le classique, "hé mais sur x86 (processeur PC) l'assembleur c'est pas du tout pareil !?")

skizoh : le jour où tu arriveras à me donner au cycle CPU prés le temps d'exécution d'une fonction juste avec du code C/C++ alors oui l'assembleur sera devenu un langage obsolète. En attendant c'est un formidable outil pour tout développeurs bas niveau qui se respecte :wink:

Lol ^^ je n'ais pas craché dessus calmez vous :stuck_out_tongue:

Je sais bien que c'est bien plus rapide pour du bas niveau seulement je pense qu'il y à des choses plus sympa pour le bas niveau, et plus frais, comme le VHDL avec un bon FPGA la y a de la vitesse :stuck_out_tongue:

Bah !! A l'heure actuelle, l'heure de développement d'un programmeur en assembleur coute plus cher que le Mcu qui va recevoir le code... alors si c'est juste pour une question de vitesse, on va pas prendre un Atmega.... :grin:

ça c'est sur et certain xD