Forum général.cherche-logiciel Coder en ARM avec Linux, c'est possible ?

Posté par (page perso) .
Tags : aucun
7
14
déc.
2010
Bonsoir,

pour des raisons que je n'évoquerais pas ici, car vous n'en avez rien à faire, je dois faire des petits programmes inutiles en assembleur ARM version machintruc.

Il m'a été passé un IDE de merde nommé EMBEST. C'est à fuir comme la peste ce truc, à moins de vouloir avoir des cheveux blanc, à cause du stress généré par l'ide, et windows.

Il y a des choses que je ne comprends pas bien avec l'ARM. C'est censé être l'architecture trop super à la mode, et quand je cherche sur google, ya que des choses nulles. Je dois certainement ne pas taper les bons mots clefs, néanmoins «+"ARM" +"IDE" +"LINUX"», ça donne rien de compréhensible.

En toute bonne foi, je suis allé voir du cotés des outils officiels. Après m'être enregistré, je dois donner mon numéro de téléphone, et le host id de mon disque dur pour télécharger un IDE qui semble déjà nul… Je ne sais même pas si c'est compatible linux, bien que basé sur une très vielle version d'eclipse.

Bref, comment on fait pour avoir deux trois outils pour coder en ARM, un émulateur, et c'est tout ?

Quels logiciels utilisez vous ?

Puis si vous avez de la doc aussi, ça m'intéresserait. Je n'ai toujours pas trouvé de la bonne documentation… J'ai vraiment du mal à le croire d'ailleurs. Mais c'est comment ils font les pro ? Dans l'état actuel des choses, j'ai une opinion très négative d'ARM. C'est con, ils ont payé mon école pour que j'en fasse…
  • # Asm ARM ?!?!?

    Posté par (page perso) . Évalué à 4.

    Tu veux VRAIMENT un IDE pour coder en ASM ?

    Pour ce qui est de la doc, le site arm est bien fait, ils ont aussi de vrais bouquins (mon école non sponsorisée en a, donc la tienne toi bien en avoir ...).
    Mais euh sérieusement, quel besoin as-tu de faire de l'asm arm ?
    Je n'irais pas jusqu'à dire que ça doit servir à genre 1000 personnes dans le monde à tout casser, et si t'as besoin d'un IDE tu dois pas en faire partie, mais en fait si je suis allé jusqu'à le dire.
  • # Quelques éléments de réponse

    Posté par . Évalué à 9.

    C'est censé être l'architecture trop super à la mode, et quand je cherche sur google, ya que des choses nulles.

    C'est normal, dès qu'un truc devient à la mode, plein de nuls s'y intéressent et rendent la chose nulle (c'est une constatation générale, pas une attaque contre toi, hein)

    Bref, comment on fait pour avoir deux trois outils pour coder en ARM, un émulateur, et c'est tout ?

    Bah, ça dépend. Étant donné que c'est un truc à la mode, pleins de gens sont prêts à te refourguer des trucs tout prêts où il ne faut surtout pas que tu comprennes les détails, comme tu t'en es rendu compte. Et donc les « autres » vont fouiller à droite et à gauche pour savoir comment faire. C'est vrai que c'est dommage qu'il n'y ait pas d'intermédiaire, genre des explications un peu standard sur comment faire, mais c'est parce que le milieu est encore un peu « jeune » je pense. Et plein de gens qui veulent que ce soit à la mode. Bon, normalement, ce serait à ton école de faire ça, mais ça n'a pas l'air d'être le cas.

    Puis si vous avez de la doc aussi, ça m'intéresserait.

    Là je te demanderais : quelle doc tu veux exactement ? Car à mon avis, il te manque la base, je veux dire, le point de départ qui fera que tu sais ce que tu veux. Déjà pour ça il faut te demander ce que tu veux : vouloir un « IDE pour ARM » c'est déjà pour moi une mauvaise question. Enfin, je sais qu'aujourd'hui on est habitué aux trucs tout prêt avec Android et iOS, mais quand tu pars dans des considérations aussi génériques, il faut être plus précis.

    Quand tu y réfléchis, tu veux compiler du code, peut-être ; il te faut donc un compilateur. Ou alors assembler et lier du code si tu fais de l'assembleur, à l'aide d'un … assembleur et d'un linker. Cas spécial ici, tu veux sûrement développer depuis ton ordi, un x86 ; tu attaques alors ce qu'on appelle la compilation croisée, ou cross-compilation. Rajoute « cross » devant le nom des outils précédents et tu as ce que tu recherches. Après, pour écrire du code, tu as sûrement déjà un éditeur préféré.

    Bon, tout ça c'est plus complexe qu'un truc où tu cliques sur un bouton et ça marche, mais c'est plus intéressant, je trouve. Encore une fois, le « monde » ARM (ou même embarqué en général) n'est pas encore assez standardisé pour avoir des procédures toutes prêtes bien définies, en dehors d'outils bien chers et fermés (encore une fois, c'est mon avis, et je ne connais pas tout ce qui existe, loin de là).

    Mais c'est comment ils font les pro ?

    Bah déjà, ils ne font pas d'assembleur, ils font du C et ils s'en foutent que ce soit de l'ARM… Ils ont le compilo qui fait le boulot pour eux. C'est « triste » mais c'est comme ça.

    Dans l'état actuel des choses, j'ai une opinion très négative d'ARM. C'est con, ils ont payé mon école pour que j'en fasse…

    Bah je trouve qu'en général, les boites privées sont pas très douées pour la pédagogie. Après, ton école a l'air d'avoir du mal aussi…
  • # heuu

    Posté par . Évalué à 7.

    soit tu codes direct en assembleur,
    alors un simple éditeur de texte + un assembleur + débugger suffit. ( qu'apporterait l'IDE ???)

    soit tu codes en langage de plus haut niveau comme 99% des gens normaux ( avec un peu d'assembleur inline pour optimiser a mort un truc non portable ! )
    alors, n'importe quel IDE pour ton langage haut niveau doit te convenir avec CROSS COMPILATION pour générer tes binaires pour ARM

    a+
  • # Eclipse avec le plugin qui va bien...

    Posté par . Évalué à 2.

    http://sourceforge.net/projects/gnuarmeclipse

    Ça devrait convenir (si le plugin supporte la cross-compilation avec gcc, alors faire de l'assembleur ne devrait pas être trop problématique)
  • # google

    Posté par . Évalué à 2.

    je dois pas fréquenter le même google ?!? en tout cas dès la première page il pointe pas mal de sites utiles. Et même du drole comme ce fichier :
    http://www.microcross.com/GNU-ARM-Assy-Quick-Ref.pdf l'avais tu vu celui là ? Et ça vaut quoi ??
  • # Tu codes en quoi ?

    Posté par (page perso) . Évalué à 7.

    Coder en ARM, ça ne veut rien dire. L'interprétation la plus vraisemblable de cette phrase, ce serait coder en assembleur pour ARM. C'est vraiment ce que tu veux ?

    Parce que sinon, tu peux coder en C, en C++, en Pascal ou en n'importe quoi d'autre pris en charge par GCC, sous Emacs, Vim, KDevelop ou n'importe quel IDE. Je ne vois pas le problème.

    Oui, c'est une architecture à la mode, mais pourquoi faudrait-il des outils spéciaux ? Le noyau Linux tourne dessus, avec la glibc, et GCC peut produire du code machine pour cette architecture. Partant de là, il ne faut rien de spécial, tu codes comme d'habitude, c'est juste ta chaîne de compilation qui change.

    Moi j'ai une opinion très positive d'ARM. Grâce à leur efforts et à ceux de contributeurs, on installe Debian dessus comme si de rien n'était, et on travaille normalement. Pourquoi chercher midi à quatorze heures, une machine ARM c'est un ordinateur comme un autre, on peut y lancer X.Org et tout…
  • # Précisions

    Posté par (page perso) . Évalué à 3.

    J'avais écrit un commentaire super long, mais j'ai certainement oublié de le poster après l'avoir prévisualisé…
    Donc je recommence mes explications… Tout d'abord, merci beaucoup pour vos réponses.
    J'ai écrit hier soir cet ensemble de questions, alors que j'étais un peu stressé. Effectivement, cela manque un peu de clarté.
    J'apprends dans le cadre de mes études, l'assembleur ARM. J'avais déjà appris dans une autre école l'assembleur MIPS, et ça s'était plutôt bien passé. Mais là, c'est très différent.
    L'école est apparemment passé il y a quelques années de l'assembleur X86 à ARM. Le siège français d'ARM n'étant pas loin géographiquement, je suppose que la taxe professionnelle a influencée le choix.
    Toujours est-t'il que le cours est plutôt spécial. J'ai par exemple eu le chemin de données d'un processeur ARM classique, un diaporama d'explications plus ou moins claires, et c'est tout.
    C'est comme si vous appreniez à conduire avec pour seules informations une explication de comment fonctionne une voiture, des notions de sécurité, et une vue éclatée de la boite de vitesses…
    Bon, je suppose que je suis censé me débrouiller, et que ça fait parti de ce type de formation. Mais je demande votre aide car j'ai du mal avec ce domaine.
    Au niveau des outils, il me faudrait en gros les fonctionnalités de l'ide embest, sans les problèmes. Pas forcément sous forme d'un IDE finalement, surtout qu'il semblerait que cela n'existe pas vraiment.
    Déjà, il faudrait que je trouve un guide pour compiler et lier sur PC de l'ARM, ça s'appelle compilation croisée il me semble. Ça, je peux me débrouiller sur internet je pense. Mais si vous connaissez une page magique pour bien comprendre ça, je serais très reconnaissant que vous m'en informez.
    Il me faudrait ensuite un émulateur de base, pour pouvoir exécuter mes petits programmes sur mon PC. Juste pour voir si cela fonctionne.
    En fonctionnalité légèrement liée, il y a le débogueur. J'ai besoin d'exécuter pas à pas le programme, de contrôler le contenu de la mémoire, et de voir l'état des registres.
    Je sais que tout ce dont j'ai besoin existe, mais c'est difficile à tomber dessus avec quelques mots clefs. Certainement parce que c'est encore jeune par rapport à du MIPS.
    Merci encore pour vos précédentes réponses, et j'attends avec impatience les prochaines :-)

    Envoyé depuis mon lapin.

    • [^] # Re: Précisions

      Posté par . Évalué à 6.

      Il me faudrait ensuite un émulateur de base
      ça date un peu, mais pour ma part j'utilisai qemu et les outils gnu.

      une page magique
      http://www.bravegnu.org/gnu-eprog/
    • [^] # Re: Précisions

      Posté par . Évalué à 5.

      J'apprends dans le cadre de mes études, l'assembleur ARM. J'avais déjà appris dans une autre école l'assembleur MIPS, et ça s'était plutôt bien passé. Mais là, c'est très différent.
      [...]
      Toujours est-t'il que le cours est plutôt spécial. J'ai par exemple eu le chemin de données d'un processeur ARM classique, un diaporama d'explications plus ou moins claires, et c'est tout.


      peut-etre simplement parce que ce sont les premiers cours, et que dans les suivants tu vas justement voir comment faire en pratique...

      ou alors tu as manqué des cours ?
      parce que c'est etonnant qu'ils balancent juste un polycopié en disant "voila ARM"
      • [^] # Re: Précisions

        Posté par (page perso) . Évalué à 3.

        On est d'accord sur le cotés étonnant. Et pour info, j'ai eu aujourd'hui mon dernier cours :-)

        Heureusement que c'est pas une école d'électronique.

        Envoyé depuis mon lapin.

    • [^] # Re: Précisions

      Posté par (page perso) . Évalué à 4.

      Pas forcément sous forme d'un IDE finalement, surtout qu'il semblerait que cela n'existe pas vraiment.

      Ben, pour faire de l'assembleur, un IDE…

      Déjà, il faudrait que je trouve un guide pour compiler et lier sur PC de l'ARM, ça s'appelle compilation croisée il me semble.

      Et ça ne te concerne pas puisque c'est visiblement du langage d'assemblage que tu veux faire. Ça ne se compile pas, ça s'assemble.
    • [^] # Re: Précisions

      Posté par . Évalué à 3.

      Et le lilen posté plus haut ? L'ai trouvé drôle car un peu trans-genre.
      Mais particulièrement pertinent d'avoir ainsi en résumé clair les bonnes pratiques, et les diffs, de la syntaxe GNU pour ce langage asmarm.
      Par contre je ne peut juger de la qualité du document.

      Question ide ils fonctionnent avec slickedit. Pas libre. Livré dans l'ensemble GNU X-TOOLS, pas libres non plus, mais respectant (? donc) les bonnes pratiques. As tu jeter un oeil ? Pourrions nous avoir l'avis d'un expert sur ce sujet ?
    • [^] # Re: Précisions

      Posté par (page perso) . Évalué à 1.

      Je tiens à préciser qu'on étudie un assembleur ARM assez étonnant. Il a toutes les instructions possibles et imaginables, sauf les plus haut niveau (le document GNU Arm parle d'une instruction .if qu'on n'a pas le droit d'utiliser), par contre on a une multiplication qui fait aussi des additions au passage et même une galipette en buvant du café, je pense même qu'on a l'instruction assembleur .emacs pour démarrer sur GNU/Hurd, et on utilise LA syntaxe qu'on ne peut retrouver nulle part sur le net. En fait le document plus haut permet de comprendre l'idée de l'assembleur ARM, mais pas l'assembleur ARM version à-l'origine-de-cette-entrée-sur-le-forum-de-linuxfr.

      Je suis heureux de voir dans ce topic que l'assembleur ne sert à rien dans le métier des ingénieurs daïcideurs pressés.


      Au passage, il y a besoin de se débarrasser d'une dépendance, que dis-je il y a une dépendance à jeter à travers la fenêtre. L'éducation ne doit pas se faire à travers des logiciels proprios, et Embest est un proprio sur OS proprio qui pour l'instant ne semble pas remplaçable, aie.

      Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/

      • [^] # Re: Précisions

        Posté par (page perso) . Évalué à 1.

        Qu'entends-tu par "instructions de haut niveau" ?

        L'ARM est un processeur à jeu d'instructions réduit (RISC) : il n'est censé fournir qu'un ensemble minimal d'instructions (arithmétiques et logiques, accès mémoire et branchements). On ne trouvera pas d'instruction "if" : il faut utiliser le champ condition des instructions, et éventuellement des branchements.

        Habituellement, les mots-clés commençant par "." ne sont pas des instructions du processeur mais des directives d'assemblage.
        Dans l'assembleur GNU, la directive ".if" est équivalente au "#if" du langage C.
        Elle est "exécutée" au moment de l'assemblage du programme, pas pendant son exécution.
    • [^] # Re: Précisions

      Posté par . Évalué à 1.

      Je ne sais pas si ça peut t'aider, mais le smartphone Nokia N900 utilise un processeur ARM, et apparemment, les (des?) développeurs utilisent scratchbox [http://www.scratchbox.org/].
      Tu peux avoir plus de renseignements sur le site [http://maemo.org/].
  • # Bon un arm a la base

    Posté par . Évalué à 3.

    c'est pas grand chose, juste une définition de processeur,registre, instruction set et bus d'interconnexion des block IP ( exemple http://www.arm.com/products/system-ip/amba/amba-open-specifi(...) .

    Ma question est quel fondeur/quel proc tu compte utiliser ?

    C'est pas innoccent comme question car Atmel par exemple (pour des ARM7TDMI) offre une ide win32 IAR limité à 16K ( http://www.iar.com/website1/1.0.1.0/396/1/ ), tu peut faire du debbug et coder en C ou ASM comme tu veut mais il faut utiliser J-Link comme sonde de debug ( http://www.iar.com/website1/1.0.1.0/369/1/ ) ,tu peut mettre des breakpoint, faire du pas a pas et voir les registre du proc en temps reel.

    J-link fonctionne aussi sous linux http://www.segger2.com/index.php?page=Thread&threadID=23 mais avec gdb ce qui impliquerait que ton code tourne en RAM ce qui est souvent bloquant en embarqué.

    Sinon, GCC et le ARM c'est pas la joie, le code C est souvent 30% plus long apres compilaton qu'un compilo pro comme IAR ce qui explique que l'on ne l'utilise pas. Sinon l'ASM ARM est tres bien supporte (mnémonique identique) avec d'autres directive d'assembleur que IAR.

    La doc mise a disposition pour ARM est enorme je ne comprend pas comment tu ne trouve pas ce que tu veut
    http://infocenter.arm.com/help/index.jsp

    La liste des mnémonique assembleur est ici
    http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.(...)


    Si tu as des question plus précises...
    • [^] # Re: Bon un arm a la base

      Posté par (page perso) . Évalué à 2.

      La réponse arrivera dans deux mois, au mieux. Or, l'examen est à la rentrée et les cours d'Assembleur sont terminés.
      Si on tombe sur du fait maison, on est mal, or nous avons fait des cours d'architecture en étudiant PROCSI qui est propre au laboratoire I3S, et donc à l'école (résultat, aucune doc accessible), alors tout est possible.

      Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/

      • [^] # Re: Bon un arm a la base

        Posté par . Évalué à 1.

        Non justement c'est ca l'avantage d'un micro ARM.
        L'assembleur que tu fais sur un micro est strictement identique avec un autre ARM d'un autre fabriquant.
        Ce qui change c'est tout ce qu'il y as autour (Timer, gestionnaire d'irq, uart...).

        Bref si tu fais entierement un code assembleur sur un micro il tournera à l'identique sur un autre ARM. (reste à définir la version machintruc de l'arm)

        L'environnement IAR pour ATMEL dont le lien est au dessus integre un simulateur ARM qui te permettra de valider l'execution de ton code assembleur (mais attention il est sous windows) bien en amont de savoir ta cible final a savoir sans doute un SoC d'I3S.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.