IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres architectures Assembleur Discussion :

[Orange PI] Initiation à l'assermbleur : programme sans OS


Sujet :

Autres architectures Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Par défaut [Orange PI] Initiation à l'assermbleur : programme sans OS
    bonjour, j'aimerais débuté l'écriture d'un programme en assembleur sur orange PI mais je ne sais pas par ou commencer.

    comme première objectif j'aimerais faire clignoté une led sur une Orange PI zero qui a l'avantage d’être open-hardware

    mon souci c'est que je ne sais pas comment commencé et qu'elle sont les outils dont j'aurais besoin.

    brièvement je pense au étape suivante (n'hésitez pas a rectifier)

    (1) écriture des ligne en assembleur
    (2) compilation en langage machine
    (3) copie du code sur la carte SD
    (4) test

    idéalement il faudrait codé un compilateur sur la carte SD pour que je puisse avoir simplement a modifier un fichier texte mais la aussie je ne sais pas par ou commencé

    en ce qui concerne mes compétences elle sont principalement électronique mais j'ai déja suivi des cours et TP sur les noyau et les processeur logique.

    PS je ne souhaite pas utilisé d'OS pour des raisons apprentissage et de temps réel (sa évolua sans doute vers la réalisation d'un OS RT dédié dans un premier temps)
    PS 2 je ne sais absolument pas commencé et je vous remercie d’être indulgent pour mon novisme passagé

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    edit : fil d'actualité pour suivre l'avancement sans tout lire (lorsque je met a venir c'est que je n'ai pas encore l'information donc si il y en as qui savens ou trouvé ca fera toujour ca en moin a chercher)

    -vu la complexité du projet j'ai commencé l’écriture d'un document de travail
    - les schéma récupéré et datasheet sont récupéré
    - le schéma utilise un H3 comme empreinte au lieu d'un H2+, un comparatif pin a pin est en cour et un descriptif sera ajouté devant chacune des pin (en cours)
    - recherche des fichier source dans la NAND h2+ (a venir)
    - recherche de document complémentaire autre que schéma et datasheet (a venir)
    - recherche des outils pour programmer la NAND (a venir)



    Cordialement

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 264
    Par défaut
    Ben bon courage.

    Il te faut déjà te documenter sur l'assembleur du CPU du Orange Pi. Il te faut ensuite connaitre le fonctionnement des communications IO de la carte.

    Je te recommandes d'essayer déjà de faire un code que tu pourras lancer depuis un OS opérationnel sur le Orange Pi.

    Pour ton type de besoin, on utiliserai plutôt un microcontrôleur, comme l'Arduino par exemple, et même là, on utilise le C.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Par défaut
    en faite j'ai déja la doc du composant (l'avantage de l'orange PI étant d'etre open hardware j'ai a ma disposition toutes les datasheet du composant )
    le procceseur est un arm H2+ et est facilement récuperable
    les micro contrôleur je connais déja mon but n'ai pas de faire clignoté une led mais de me familiarisé avec l'environnement (une sorte d hello world)

    c'est vrai qu'une étape intermédiaire faisant clignoté la led en assembleur pourrais être intéressante (je l'ai deja fait avec la Raspberry y a 2 ans mais pas avec l'orange)

    en ce qui concerne la programmation assembleur sur microcontrôleur, j'ai deja l'habitude, mon souci c'est ici je dois mettre le code sur la carte SD et c'est la que je bloc et que j'aimerais bien avoir un exemple

    les objectif suivant seront :
    -la création de librairie de fonction (implémentation d'un langage de niveau intermédiaire shell C C2 ou autre)
    -affichage graphique sur E-ink (pas besoin de rafraichissement, donc ideal pour travaillé sur du temps réel
    -utilisation du clavier sourie
    -utilisation des support de stokage
    -utilisation du réseau
    ....

    PS je ne dit pas que je ferais tous tous seul, le but etant surtout de mettre en pratique les compétences,

  4. #4
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Salut,
    Comme dit par Christophe la doc du micro ARM n'est pas suffisante, il te faut le schéma électronique de tout le reste.

    Il faut que tu saches comment tout est connecté et où est ce que c'est connecté (sur quels port(s) de ton micro) ensuite tu vas devoir éplucher la datasheet du micro pour trouver les modes de boot que ton micro supporte. Bien souvent ils peuvent booter sur de la mémoire eMMC, SD, Flash, NAND etc... et parfois le micro possède un peu de mémoire pour y mettre le bootloader et qui ira faire pointer le compteur programme du micro dans la SD card par exemple. Enfin il faudra regarder tous les registres a configurer pour initialiser toute l’électronique correctement avec le risque de cramer quelque chose pendant les essais. A moins que tout marche du premier coup

    Si vraiment tu veux démarrer de zéro tu es partie pour un long temps d'étude avant de pouvoir coder la première ligne d'assembleur.

  5. #5
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Par défaut
    Merci ,
    si j'ai choisi l'orange PI c'est parce que tout est disponible schéma datasheet.... d'ou le terme Openhardeware que j'ai utilisé.

    Aprés j'avoue que je souhaite un coup de pousse pour démarrer. car il y as bien quelqu'un ici qui a plus de compétence que moi sur le sujet


    Les objectif étant multiple. :
    -mettre en pratique les compétences
    -crée une communauté francophone sur le sujet
    -réalisé ses propre cartes de développement .... (la je pourrais un peu plus aidée puisque c'est mon cœur de compétences)

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Alors le problème c'est qu'en souhaitant partir de zéro on ne peut pas parler de coup de pouce ou alors il faut que celui qui t'aide ait un très gros pouce.

    Comme tu as visiblement déjà bosser avec des microcontrôleurs tu sais que lors du démarrage tous les registres sont dans un certain état, qui est toujours l'état de sécurité. Les broches d'entrées/sorties sont par défaut en entrée, l'horloge par défaut est celle interne au micro même si tu as un quartz dehors, les DMA sont désactivés ainsi que tous les périphériques alternatifs. Ça veut dire que tu as tous les registres internes a configurer en fonction du hard externe. Mettre les broches du micro en entrée lorsqu'elles sont reliées à des sorites du hard externe et vis versa, régler l'horloge sur le quartz externe de 24MHz (sur la Orange Pi) puis configurer la PLL pour augmenter fortement la fréquence interne etc... et quand je dis etc... ça peut aller jusque 100 registres et dans chacun d'eux il faut comprendre ce que fait chaque bit et comment il fait réagir le micro

    Pour ça, y a pas d'autre choix que de lire la doc et pour info la doc d'un SITARA comme sur la Beagleboneblack fait 5000 pages

    C'est possible mais celui qui va t'aider est partie pour un coup de pouce qui va durer 1 an ou plus suivant ces compétences.

    Regarde le schéma de la carte, il y a déjà plein de question a se poser sur la mémoire flash qui est reliée au micro. Il faut éplucher la datasheet du micro pour savoir si par défaut il est configuré pour aller chercher son programme dans la mémoire flash (fort probable) ensuite, qui y a t-il dans cette flash ? Moi je ne serai pas surpris d'y trouver U-Boot, le bootloader Linux, qui démarre le micro, le configure et lui dit d'aller chercher son programme principale dans une carte SD et à une certaine adresse. En démarrant de zéro peut être qu'il faut commencer ton premier programme dans cette mémoire Flash ? Tout ça il faut aussi y regarder en plus du hard et de la configuration de chaque périphérique du micro (sachant qu'on parle d'un ARM Cortex A7 et pas du tout des petits ARM Cortex Mx comme les STM32, SAMD ou MSP432)

    Nom : Capture82.PNG
Affichages : 565
Taille : 133,4 Ko

  7. #7
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Citation Envoyé par robotzeus Voir le message
    en ce qui concerne la programmation assembleur sur microcontrôleur, j'ai deja l'habitude,
    Enfin le ARM Cortex-A7 est plus complexe qu'un simple Arduino par exemple
    Si je conseillerai le C sur ce genre de bécane , c'est parce que le ARM Cortex-A7 est un processeur dit in order Superscalaire, ça veut dire que si tu code en assembleur dessus (et que tu veux pas avoir les performances réduites par 16 !) , il faudra alors te soucier de la pipeline CPU et des instructions compatible entre elles , et un petit changement de ton code peut t'obliger à re-écrire une bonne partie parce que la pipeline à était chamboulé pour atteindre la sacro sainte 2 instructions/cycles , par contre tu peux bien sur ne pas t'en soucier et donc fort probable que ton code fera du 1 instruction/8 cycles :p
    Ou alors tu prend un bon compilo qui te fait ça , et au pire écrire les parties critiques en assembleur (mais par expérience , c'est long et fastidieux sur un proc in order , 100-200 lignes peut te faire des jours / une semaine de boulot).
    Bien sur il y'a aussi une mémoire cache à optimisé , et les processeurs ARM ont tendance d'avoir une ligne de cache sur 64 octets (contre 32 sur x86)

    Je précises que sur un AVR atmel tu n'as ni mémoire cache , ni pipeline donc forcément assez facile (surtout que tout fais 1 cycle par défauts sauf le mul et le jmp ) et sur du x86 , c'est le CPU qui optimisera la pipeline de façon automatique donc là aussi tu ne dois pas t'en soucier.

    Je rejoins bien sur mes collègues , je rajouterai que bon il faudra juste apprendre à lire toutes les I/O , à bien connaître ta memory map et ensuite exploité tout ça , bref ça demande du temps j'imagine vu qu'on a pas affaire à une petite machine qui est avec seulement 20-30 I/O pour contrôler le tout

  8. #8
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    Enfin le ARM Cortex-A7 est plus complexe qu'un simple Arduino par exemple
    Si je conseillerai le C sur ce genre de bécane , c'est parce que le ARM Cortex-A7 est un processeur dit in order Superscalaire, ça veut dire que si tu code en assembleur dessus (et que tu veux pas avoir les performances réduites par 16 !) , il faudra alors te soucier de la pipeline CPU et des instructions compatible entre elles , et un petit changement de ton code peut t'obliger à re-écrire une bonne partie parce que la pipeline à était chamboulé pour atteindre la sacro sainte 2 instructions/cycles , par contre tu peux bien sur ne pas t'en soucier et donc fort probable que ton code fera du 1 instruction/8 cycles :p
    Ou alors tu prend un bon compilo qui te fait ça , et au pire écrire les parties critiques en assembleurs (mais par expérience , c'est long et fastidieux sur un proc in oder , 100-200 lignes peut te faire des jours / une semaine de boulot).
    Bien sur il y'a aussi une mémoire cache à optimisé , et les processeurs ARM ont tendance d'avoir une ligne de cache sur 64 octets (contre 32 sur x86)

    Je précises que sur un AVR atmel tu n'as ni mémoire cache , ni pipeline donc forcément assez facile (surtout que tout fais 1 cycle par défauts sauf le mul et le jmp ) et sur du x86 , c'est le CPU qui optimisera la pipeline de façon automatique donc là aussi tu ne dois pas t'en soucier.

    Je rejoins bien sur mes collègues , je rajouterai que bon il faudra juste apprendre à lire toutes les I/O , à bien connaître ta memory map et ensuite exploité tout ça , bref ça demande du temps j'imagine vu qu'on a pas affaire à une petite machine qui est avec seulement 20-30 I/O pour contrôler le tout
    je suis totalement conscient de l'exercice déja a 16ans je m'amusais a réalisé des fonction édition et autre fonction avec des porte logique.
    ensuite c'est le démarrage qui sera le plus long car je compte bien utilisé des macro et faire un générateur de code a coté. automatisé certaine partie.
    En terme de planning j'aimerais bien pouvoir faire mon premier clignotement d'ici Juillet.

    j'ai pour le moment une formation en électronique et en mécatronique. je suis en train d'ajouté un double cursus ingénieur informatique a mon bagage. a terme j'aimerais bien développé des appareil de réalité augmenté avec une niveau de programmation bas niveau

  9. #9
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 264
    Par défaut
    Pour brancher un clavier/une souris, sans OS,il te faut maitriser les communications USB (à moins que tu utilise un autre type de connectique plus simple, je ne connais pas le orange Pi.. Pour communiquer avec un écran, si c'est un afficheur de type 7 segments ça reste envisageable, pour une communication avec un écran, un énorme travail.

    Sans OS, tu pars sur un truc sans fin.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. executer un programme sans os
    Par 123quatre dans le forum Ordinateurs
    Réponses: 7
    Dernier message: 28/11/2005, 00h09
  2. [Executable]Comment lancer son programme sans fenêtre DOS
    Par the_ugly dans le forum Général Java
    Réponses: 11
    Dernier message: 09/11/2005, 07h16
  3. [Kylix] Programme sans interface graphique
    Par pewpew2001 dans le forum EDI
    Réponses: 1
    Dernier message: 06/10/2005, 19h46
  4. Tutorial d'initiation a la programmation avec l'API Windows
    Par mcdonald dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 16/09/2005, 17h20
  5. Gestion d'un programme sans Souris ! ???
    Par altahir007 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 03/04/2003, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo