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 :

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/