DavBlOG (DOG)

des nouvelles sur la Mini2440 (FriendlyARM et Hiteg), entre autres

ce n’est pas un sponsor, ce n’est pas un ami, ce n’est pas sous la pression que je publie cette publicité, qui du coup est gratuite.

Pourquoi? parceque c’est bien !

C’est quoi ? un analyseur logique sur port USB pour moins de 50 €.

C’est où ?, par là : Scanalogic 2 et sinon:

Lextronic le vend en France

pourquoi faire ? ça fait des choses comme ça, et en plus ça visualise les signaux pendant que ça enregistre

Le seul petit reproche, oui il en faut, c’est le regret de ne pouvoir l’utiliser sous Linux.

Alors à ce prix là, je fais de la pub.

C’est encore trop cher ? on peux l’avoir à 22€ si l’on se sent de le monter soi-même !

D’autres questions ?

Hi,

These informations are coming from a FriendlyArm thread that a writer did for me.

I’ve just put it here to make it usefull for others.
Debian_Howto

Thanks to :

  • Coburn (the original post)
  • srikanth who answered me with what is bellow

Billet éclair.

Je m’aperçois que pas mal de personnes s’interrogent sur Qt, ce que c’est à quoi ça sert jusqu’où on peux aller avec.

N’ayant que peu de retour sur mon précèdent tutoriel je ne suis pas certain qu’il  ait pu servir.

Je me dit donc qu’il sera plus utile de vous indiquer ce que d’autres ont fait pour expliquer ce qu’est Qt plutôt que de refaire un tutoriel

Je pense notamment au site du zéro qui reste ce qui se fait de mieux. En précisant quand même que c’est du vrai C++ Objet, et comme ils font bien les choses la première partie de ce cours aborde cette notion (ou paradigme) de façon très compréhensible.

Par ailleurs vous avez aussi developpez.com qui est aussi une très bonne référence.

Pour ma part je continue avec la Mini2440 et Qt en attendant vos retours d’expérience.

La mini2440 est pilotée par un micro-contrôleur de Samsung, ça on le sait déjà par la doc. fournie: le S3c2440.

Pour des raisons de simplicité et de clarté, FriendlyArm ou Hiteg ne donnent pas de détails sur sa « mécanique interne », ils renvoient à la documentation de ARM.

A mon avis on à beau être sous Linux (ou WinCE pour certains), HAL c’est bien mais il faut savoir à qui l’on parle, particulièrement quand on veut modifier un registre I2C ou SPI pour un capteur.

J’ai fait un schéma volontairement simpliste pour éclairer ce que je dit ici, pourvu que ce soit clair.

ARM est une compagnie que l’on n’ignore plus tellement les téléphones en sont inondés, je passe l’historique mais il est intéressant de préciser qu’elle ne fabrique pas :  fabless comme on dit dans les milieux autorisés. En effet,si vous avez assez d’argent vous pouvez acheter ce que l’on appelle une IP (pour Intellectual Property) et faire votre propre SOC (System on Chip). Ce Business-model (l’Anglais est inévitable ici) permet à ARM de vendre une licence du cœur du contrôleur au fabricant qui va ajouter autour de ce cœur ARM ce qu’il veut : de l’USB, du Multimédia (I2S par exemple), Smart Card, etc… et ensuite le donner à un « fondeur » qui va fabriquer le circuit ou le faire lui-même, cas de ST, Atmel entre autres.

Ceci laisse le cœur ARM « indépendant » du reste du circuit qui l’abrite , enfin d’un point de vue extérieur.

Dans le cas du mini2440, le S3C2440 est basé sur un cœur ARM920T comme on le voit ici :

image

le S3C2440 avec ARM simplifié

Autour du 920T, gravitent les périphériques que Samsung à choisi d’ajouter et il y en à plein, ici j’en ait mis 2 de chaque pour illustrer.

Pour se parler les périphérique s’adressent à un bus  comme le bus ISA, PCI à la différence que ARM à mis en place des bus dédiés aux SOC, ces bus sont basé sur l’AMBA Advanced Microcontroller Bus Architecture.

Je passerai les spécifications du protocole maitre-esclave mais il faut savoir qu’il est dédié à faire abstraction des périphériques auxquels le cœur s’adresse, ce qui permet aux architectes qui conçoivent le circuit de changer de périphériques si nécessaire sans refaire une nouvelle étude complète, un peu comme une librairie logicielle mais avec des périphériques.

Parmi les 5 bus spécifiés par ARM, on voit dans le petit schéma qu’il y a l’APB et l’AHB (j’ai enlevé le pont entre les 2), distinguant USB et GPIO des cameras et interface LCD pourquoi ?

« encore une fracture sociale » diront certains populistes ; ce n’est pas faux car on différencie dans l’architecture les périphériques lents des autres.En effet, l’APB (Advanced Peripheral Bus) s’occupe des périphériques lents et l’AHB des rapides. Dans ce cas l’AHB permet d’avoir rapidement ( max 2 cycles d’horloge) un accès garanti et ce sans perdre de temps à attendre le périphérique (Wait state).

Cette architecture datant un peu, à quelque peu évolué avec l’arrivée de coeurs améliorés type « Cortex ».Le S3C244 se situe au niveau de la ARMv5-M tandis que les cortex M0-M1  sont en v6 et surtout le CortexM3 en v7 et V7R qui ont des déclinaisons dédiées pour le Temps-réel et la gestion des données mémoires non alignées, en gros des données  8 bits peuvent être contiguës avec des 16 bits, et ça c’est bien.

J’espère que cette très courte introduction donnera l’envie d’aller plus loin et surtout que vous irez jeter un œil à la doc du S3C2440 où en p34 vous verrez un schéma bien plus joli et plus complet que celui que j’ai mis ici.

A bientôt, même chaine même heure.

Doc ARM sur AMBA et  920T

Les IP de ARM : http://www.arm.com/products/physical-ip/

Honte à moi, j’ai oublié de  parler de Pobot !

Mettant mon énergie sur le tutoriel, j’ai omis la référence au club de robotique de Sophia-Antipolis.

Je vous engage à aller sur le site puisqu’il est question de robots et il y à même

une section (grandissante) pour la Mini2440, ainsi qu’un forum dédié.

Si vous cliquez 2 fois sur http://www.pobot.org/Cartes-a-base-d-ARM.html j’ai droit à un Cacolac.

Finalement je me suis aperçu que parler d’OpenEmbedded et Bitbake c’est souvent parler de cuisine, de gâteaux.  Le mien sort juste du four, on ne parle pas encore de version définitive mais c’est proche.

J’ai donc terminé une bonne partie de ce tutoriel que je ne trouve pas encore satisfaisant, malgré pas mal de relectures et corrections et quelques informations importantes sont manquantes mais le gros du document est là. Et puis j’avoue qu’un break après 2 jours complets dessus me va bien.

En tout cas les critiques sont déjà les bienvenues.

Le fichier : mini2440

Sous ce titre fallacieux et Ô combien discutable se glisse le sentiment de joie de celui qui à vaincu.

Oui, sans remord et sans élan je suis en mesure de dire que je puis dorénavant arriver à reproduire

correctement une installation d’un OpenEmbedded « from Scratch » ou depuis le néant en Français.

Oui car le néant sur un PC, Confucius et Lao-Tseu m’en préservent (on voit bien qu’ils n’ont pas compilé avec bitbake eux) n’as pas forcément d’utilité en soi. Donc pour tout décrire, j’ai repris une Ubuntu 9.10 (Karmic Koala) en « vraie » sans machine virtuelle pour trouver à la fin des images exploitables pour flasher / télécharger sur la mini2440.

La suite de cet épisode parsemé d’un suspense insupportable qui ferait passer « Sherlock Holmes » pour un épisode de Derrick à venir dans la description qui est en cours de publication(1).

A bientôt donc.

* « Hello world » pour les autres

(1) : Les fans peuvent se manifester ici aussi.

Ok le gcc fonctionne et l’on peut flasher la NAND avec U-Boot à la place de super-vivi.

Maintenant je vais passer à OpenEmbedded car BuildRoot me semble limité pour le futur. Et puis il faut faire un choix.

Donc, dans les liens il y à maintenant le User-manual, le How-To et un how to by example sur ce sujet.
Avant de commencer il faut avoir :

  • Git
  • bitbake
  • et tout une liste que la commande suivante permet d’installer

sur Ubuntu 9.10 ce n’est pas présent ça donne : (Sur Gentoo et Sabayon vous le savez déjà , pensez à emerge portage et –sync avant)
[code language="bash" light="true"]
sudo git bitbake apt-get install bison flex e2fsprogs m4 curl cvs subversion unzip python-psyco texinfo texi2html diffstat openjade docbook-utils quilt groff linuxdoc-tools patch linuxdoc-tools help2man
[/code]

configurer la var de bitbake :
[code language="bash" light="true"]
sudo vim /home/david/.bashrc
et on ajoute BBPATH=/home/david/oe/
[/code]
pour le prendre en compte :[code language="bash" light="true"]source ~/.bashrc [/code]

Sur Ubuntu j’ai vu qu’i fallait faire ça,je ne sais pas pourquoi
[code language="bash" light="true"]
sudo dpkg-reconfigure dash [/code]

Pour la suite je vais rassembler les infos dans un pdf complet car c’est bien plus lisible.

En gros ce qui se passe à propos de la mini2440 c’est que son arrivée répond à un véritable besoin. Ce n’est pas ma première carte, j’ai déjà expérimenté sur la 7260 de TSTS-7260 ainsi que la lpc2148 de Mikroeletronica ou encore la carte à base de Cortex M3 de chez Olimex.
Pourtant, cela n’accrochait pas malgré l’age de ces cartes, pas trop de dev, de support, de communauté autour. Etant toujours à la recherche de la carte qui permet d’avoir un environnement embarqué tout en évitant le monde PC, n’est pas toujours simple coté domaine public.
La mini2440 répond donc à ce besoin de pouvoir développer avec la facilité que permet Linux grâce à l’abstraction matérielle: par exemple une carte à base de LPC 2148 est très bien pour des budgets réduits, cependant pour avoir une interface éditeur (GUI) qui ne soit pas « bancale » tout en étant accessible côté licence et prix, c’est rare.
Linux permet donc cela avec Qt côté interface, ou d’autres si l’on veut.

Passé cette longue introduction (pas sur que ça intéresse grand monde), je voudrais dire que la communauté de la Mini2440 est vraiment large, et pas seulement au sens du nombre de personnes en possédant, c’est surtout l’activité fébrile qu’il y à autour avec nombre de How-to tutoriels et docs.
Quel intérêt alors pour un tel blog après tout les autres ? pourriez-vous vous demander le regard vide et la bouche pleine de coca-cola, je vais vous le dire:

  • Tout d’abord je n’ai pas eut l’occasion de trouver un Français aborder le sujet
  • ensuite malgré le nombre d’infos on se perd très vite entre toutes les technos possibles

Alors je ne promet pas la meilleure solution, simplement celle que j’aurai pu faire fonctionner en l’exposant ici à partir de mes ‘expériences et celles des autres.

Premier article, en vrac. Il sera amélioré par la suite.

Tout d’abord des liens que je vais placer dans la section ad-hoc :

http://narnia.cs.ttu.edu/drupal/node/131

http://code.google.com/p/mini2440/wiki/OpenEmbedded
http://bill.station51.net/index.php?pos … enEmbedded
http://www.electronics.diycinema.co.uk/ … -embedded/ est ce qui à fonctionné pour moi. C’est un peu lourd et long mais fonctionne.
http://equallybad.blogspot.com/2010/02/ … mment-form
http://bill.station51.net/ est trés bien.
Plus précisément ==> http://bill.station51.net/index.php?pos … enEmbedded

http://code.google.com/p/mini2440/w/list par  buserror qui est assez connu , essentiellement pour le kernel mini2440 et Qemu.

Je recommande surtout les 2 premiers.

Pour l’implémentation d ‘un environnement de dev, il faut avouer que malgré l’article de P.Ficheux dans le H.S. de LinuxMag sur BuildRoot, plane une confusion entre tout l’existant: comment choisir entre OpenEmbedded, BuildRoot ScratchBox, GentooEmbedded, etc ??

Cet article  justifie – un peu-  le choix de BuildRoot par le fait qu’il est plus simple d’utilisation que OpenEmbedded, mais ne dis pas en quoi et n’explique pas non plus pourquoi OpenEmbedded est plus puissant.

Quand je dis cela je me place en tant que nouvel arrivant qui vient juste d’acheter sa carte et qui veut se mettre au développement.
La doc FriendllyArm est bien faite et pourtant incomplète et vieillotte : on parle de VM sous RH9 pour faire tout ça.
Je ne trouve pas cela très pertinent, mais cela n’engage que moi.

Etant donné que tout le monde est sous autre chose, il me semble qu’un choix  Debian ou Ubuntu serait plus approprié et ce sans VM, rajouter une couche supplémentaire n’est pas l’idéal.

voili, Voila.