Adresses memoire du Raspberry

On peut difficilement être plus proche du cœur du CPU qu'avec l'assembleur...

Modérateur : Francois

VincentLeboulou
Messages : 7
Enregistré le : jeu. 19 oct. 2017 10:11

Adresses memoire du Raspberry

Message par VincentLeboulou » jeu. 19 oct. 2017 10:21

Bonjour.
Je vois qu'il n'y a pas beaucoup de monde intéressé par l'assembleur sur ce forum mais je tente une question. Possesseur depuis peu d'un raspberry modéle 1B 512MO de ram, je me suis lancé dans la découverte de l'assembleur ARM. j'ai écrit un petit programme pour vider les 15 registres. Or je suis étonné par les résultats : l'adresse de la pile se situe en BE904358 ce qui est au délà de la taille mémoire de mon raspberry. D'autre part le compteur d'instructions est dans les 1000h ce qui fait dans les 64K décimal, et cela me parait faible compte tenu de la taille du noyau Linux. Quelqu'un aurait-il une explication ?

destroyedlolo
Raspinaute
Messages : 1160
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Adresses memoire du Raspberry

Message par destroyedlolo » jeu. 19 oct. 2017 11:35

Salut,

Bien que je ne suis pas super famillier avec la mémoire de la Framboise ... mais ca ne me parait pas illogique : en effet, il y a une translation d'adresse qui devrait être faite par la MMU du proc.
Donc les 0xBE904358 et 0x1000 vu par ton programme ne correspond pas forcément à l'implantation physique dans la mémoire.

Que ce soit pour l'assembleur ou le "barre metal", il n'y aura (malheureusement) pas beaucoup de personne pour te répondre.

A+
Modifié en dernier par destroyedlolo le jeu. 19 oct. 2017 14:24, modifié 1 fois.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

spourre
Raspinaute
Messages : 718
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Adresses memoire du Raspberry

Message par spourre » jeu. 19 oct. 2017 11:44

VincentLeboulou a écrit : ...
Or je suis étonné par les résultats : l'adresse de la pile se situe en BE904358 ce qui est au délà de la taille mémoire de mon raspberry.
Bonjour,

Je ne critiquerais pas votre choix de l'assembleur, c'est votre choix et il est donc respectable.
Je me demande si vous ne confondez pas l'espace physique (RAM) avec l'espace mémoire projeté (MMU).
Si vous voulez gratter la bête, il faut lire et assimiler une doc copieuse telle le manuel de référence du SOC et celui de ses périphériques:
https://www.google.fr/url?q=http://info ... d1O6toOskX

https://www.google.fr/url?q=https://www ... OG2yS5tid7

Bonne lecture

Sylvain

VincentLeboulou
Messages : 7
Enregistré le : jeu. 19 oct. 2017 10:11

Re: Adresses memoire du Raspberry

Message par VincentLeboulou » jeu. 19 oct. 2017 14:11

Merci de vos réponses rapides .
Très bien la doc sur le BCM2835 car il y a un très bon schéma qui explique ce phénomène.
Je vais regarder ça de plus près.
Cordialement.

spourre
Raspinaute
Messages : 718
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Adresses memoire du Raspberry

Message par spourre » jeu. 19 oct. 2017 17:12

Je vois que Destroyedlolo a répondu pendant que je rédigeais ma réponse.
Il semble que nous ayons la même analyse du problème ce qui, sans constituer une certitude, est tout de même une indication sérieuse.
Que l'on fasse de l'assembleur, du C ou du "bare metal", dès que l'on a des contraintes temporelles sévères, il faut éviter d'empiler les couches d'abstraction.
Il faut même parfois mettre les mains dans le cambouis et savoir se passer d'une bibliothèque qui masque, plus ou moins, le détail (BCM, Wiringpi....).
Bon courage car vous aller être un peu seul :twisted:
Sylvain

destroyedlolo
Raspinaute
Messages : 1160
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Adresses memoire du Raspberry

Message par destroyedlolo » jeu. 19 oct. 2017 20:56

Ben j'espère que Vincent restera parmi nous et partagera ses expériences / interrogations.
Même si je ne suis pas spécialement versé dans l'assembleur (le C me permettant d'être à la fois proche du hard et du systèmes sans devoir tout réapprendre à chaque nouvelle machine), ce genre de sujets est intéressant et sort des classiques Python/wiringPI et est du coup plus de mes domaines d’intérêts, point de vue évidement purement égoiste :lol:.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

VincentLeboulou
Messages : 7
Enregistré le : jeu. 19 oct. 2017 10:11

Re: Adresses memoire du Raspberry

Message par VincentLeboulou » jeu. 26 oct. 2017 19:54

Oui en effet beaucoup d’interrogations. Car apprendre l’assembleur c’est surtout découvrir les liens d’un programme avec le processeur et son environnement. Et il y a des surprises : où sont les instructions d’entrée sortie d’un processeur Risc par exemple ?
Mais c’est fou tout ce que l’on découvre sur le Raspberry Pi et puis l’assembleur c’est pas si compliqué que ce que l’on croit : après tout sur le processeur RISCdu Raspberry, il n’y a que 15 registres, 4 flags et une trentaine d’instructions à connaitre.
Pour raconter tout cela, j’ai créé un blog qui vaut ce qu’il vaut et avec certainement beaucoup de défauts et qui va n’intéresser que peu de monde. Mais il est en français et voici son adresse :
https://assembleurarmpi.blogspot.fr/
Merci de vos encouragements et aussi de vos critiques.
Cordialement.

destroyedlolo
Raspinaute
Messages : 1160
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Adresses memoire du Raspberry

Message par destroyedlolo » jeu. 26 oct. 2017 22:19

Salut,

Très bien tout ca.
Perso, j'aurai juste rajouté au debut :
  • la liste des registres et leurs fonctions pour ceux qu'en ont une
  • la liste des instructions, vu qu'elles ne sont pas très nombreuses,
  • les adressages
En tout cas, très interessant.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

spourre
Raspinaute
Messages : 718
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Adresses memoire du Raspberry

Message par spourre » ven. 27 oct. 2017 00:06

Bonsoir,

C'est une démarche très intéressante.
Une remarque si vous me le permettez. J'ai souligné d'emblée que le choix de l'assembleur était un choix respectable. Je n'ai pas voulu me lancer dans un Nième troll assembleur versus C.
Un de vos objectifs "pédagogiques" est la maîtrise fine du SOC (registres, instructions...). Je pense que l'on peut y arriver aussi avec le C, en s'affranchissant des bibliothèques qui ajoutent trop d'abstraction.
Par contre, je relève dans votre démarche ce qui me semble une contradiction: Pour moi, l'assembleur (ou le C avec ses fonctions binaires) est destiné à des applications avec de fortes contraintes temporelles (voire temps réel dur). Vous, vous pratiquez l'assembleur mais avec des appels de fonctions UNIX (Linux).
Autrement dit, vous livrez votre programme hyper rapide et optimisé, à un OS qui n'est, naturellement, pas déterministe.
Tant qu'à faire, pourquoi ne développez-vous pas en bare metal ?
Dernière remarque, GCC est particulièrement bien optimisé (peut-être pas pour du code ARM) et permet de générer le code assembleur. Avez-vous comparé le code généré par GCC et celui écrit à la main sous Notepad ? Y-a-t-il un vainqueur en termes de rapidité d’exécution ou d'optimisation RAM ?

Je tiens encore à souligner l'intérêt de votre démarche qui nous change agréablement des sempiternelles questions sur rétropi ou le dernier multimédia center :mrgreen:

Sylvain

VincentLeboulou
Messages : 7
Enregistré le : jeu. 19 oct. 2017 10:11

Re: Adresses memoire du Raspberry

Message par VincentLeboulou » sam. 28 oct. 2017 15:08

Merci de toutes ces remarques.
Je suis tout à fait d’accord avec vous sur les objectifs de la programmation en assembleur. Mais mon truc à moi, c’est un objectif de découverte sans avoir à court terme un objectif d’utilité. Ce qui m’enchante c’est la sensation de liberté hors de toute contrainte des langages de haut niveau.
Qu’entendez-vous par développement bare métal ? cette notion m’échappe totalement et je vais regarder ce qu’elle recouvre sur internet.
Cordialement.

Répondre

Retourner vers « Assembleur »