Les cartes compactes, puissantes, écoénergétiques et rentables basées sur ARM offrent des options de production matérielle exceptionnelles.

Avec la contribution de Rédacteurs nord-américains de DigiKey

Quelles sont vos principales compétences ? Cette question que l'on pose rarement peut paraître élémentaire à première vue, mais votre réponse permet de déterminer ce qui fait le succès ou l'échec de votre conception sur le marché. Étant donné que les puces sont de plus en plus intégrées et banalisées, et que les architectures sur lesquelles elles sont basées sont de plus en plus standardisées, il n'est peut-être plus nécessaire (pour autant que cela l'était) de choisir entre consacrer des fonds de développement, des heures et du personnel précieux pour concevoir votre propre carte et d'autres matériels connexes, et concentrer vos ressources sur le logiciel le plus facilement différencié qui s'exécute sur ce matériel.

Si vous optez pour la standardisation sur une implémentation de système basé sur ARM®, les nombreuses options de carte de Raspberry PI Foundation offrent une sérieuse alternative pour le développement de votre propre matériel, particulièrement pour les volumes de production modestes. Leur adoption enthousiaste à travers le monde, associée à leurs options d'approvisionnement multiples, a permis de générer une forte disponibilité et des prix compétitifs. Des variantes de cartes basées sur plusieurs générations de cœurs de processeurs sont disponibles. Elles offrent également différents poids et dimensions, spécifications en matière de consommation énergétique, vitesses d'horloge, ainsi que d'autres affectations de périphériques, connectivité et mémoire. Les connecteurs standardisés HAT (Hardware Attached on Top) des cartes et les protocoles logiciels offrent d'autres prises en charge de périphériques d'extension, ainsi qu'un débogage et d'autres supports de développement. De plus, lorsqu'une augmentation des volumes d'expédition de systèmes vous donne un avantage fiscal quant à la production de matériel, la spécification open-source de la carte constitue une transition simple.

Le tableau résume les quatre options de carte Raspberry Pi qui sont présentées plus en détail dans le reste de cet article. Étant donné que les performances du processeur et d'autres capacités constituent le principal critère (mais pas uniquement) de sélection, l'article se conclura par des exemples de code de référence et d'autres indications pour l'évaluation.

Raspberry Pi, modèle A+ Raspberry Pi, modèle B+* Raspberry Pi 2, modèle B Raspberry Pi 3, modèle B
Système sur puce (SoC) Broadcom BCM2835 Broadcom BCM2836 Broadcom BCM2837
Processeur ARM1176JZF-S à un cœur 700 MHz (32 bits) ARM Cortex-A7 à quatre cœurs 900 MHz (32 bits) ARM Cortex-A53 à quatre cœurs 1,2 GHz (64 bits)
Mémoire système
(partagée avec la mémoire vidéo du processeur graphique)
256 Mo 512 Mo 1 Go
USB à 2 ports 1 (depuis BMC2835) 4 (depuis un circuit intégré de concentrateur multiport distinct)
Réseaux intégrés Aucun Ethernet 10/100 Mbps via un adaptateur USB intégré Ethernet 10/100 Mbps, Wi-Fi 802.11n, Bluetooth 4.1
Puissance nominale 200 mA (1 W) 600 mA (3 W) 800 mA (4 W)
Format 65 mm × 56,5 mm (2,56 po × 2,22 po) 85,6 mm × 56,5 mm (3,37 po × 2,224 po)
Poids 22,7 g (0,8 oz) 45,4 g (1,6 oz)

*Article obsolète

Tableau 1 : Comparaison des quatre options Raspberry Pi montrant la diversité des options

Toutes les cartes ci-dessus ont en commun les fonctionnalités suivantes :

  • Entrée vidéo via un connecteur d'interface de caméra MIPI CSI à 15 broches
  • Deux options de sortie vidéo : HDMI numérique (1.3 et 1.4) et vidéo composite analogique (jack TRRS 3,5 mm)
  • Entrée vidéo numérique I2S
  • Trois options de sortie audio : HDMI et I2S numériques, et sortie analogique (jack TRS 3,5 mm)
  • Stockage non volatil via un logement MicroSDHC
  • 17 broches GPIO, plus bus ID HAT
  • Interface de console via un câble micro-USB ou un câble série avec un connecteur d'alimentation GPIO en option

Raspberry Pi ("1")

Le modèle A+ présenté dans cet article (Figure 1) est un modèle économique de taille réduite qui succède au modèle A. Ce dernier a été lui-même une variante économique du modèle B original. Les dimensions du modèle A+, de 65 mm × 56,5 mm (2,56 po × 2,22 po), correspondent à celles des cartes d'extension HAT (Hardware Attached on Top) que les quatre cartes dans cet article prennent en charge. Cette variante de carte particulière comporte la plus petite quantité de SDRAM (256 Mo) des quatre cartes, en plus d'offrir uniquement un seul connecteur USB et aucun support réseau intégré (même si ces deux options peuvent être étendues via des périphériques basés sur USB ou HAT).

L'autre option Raspberry Pi 1 traitée ici est le modèle B+. Ce modèle est désormais obsolète, mais sera abordé dans l'article à des fins de comparaison avec les autres modèles disponibles. Son empreinte carte de 85,6 mm × 56,5 mm (3,37 po × 2,224 po) est plus grande que celle du modèle A+ et identique à celle des modèles Raspberry Pi 2 et Raspberry Pi 3 qui seront présentés ultérieurement. L'espace étendu est utilisé à bon escient, avec deux fois la capacité de mémoire système de 512 Mo, quatre fois nombre de ports et un support Ethernet câblé intégré de 10/100 Mbps.

En effet, bien qu'un processeur ARM11 monocœur de 700 MHz puisse sembler désuet à l'époque moderne des smartphones basés sur des processeurs à dix cœurs, n'oubliez pas que ce même processeur a alimenté le premier iPhone® et son successeur, l'iPhone 3G d'Apple. Si vos besoins en matière de performance sont modestes, le BCM2835 de Broadcom peut très bien vous suffire, ce qui rend la faible consommation énergétique de l'option de carte du modèle A+ particulièrement convaincante.

Le modèle Raspberry Pi d'origine est basé sur le système sur puce BCM2835 de Broadcom qui intègre un processeur ARM11 à un cœur de 700 MHz.

Le modèle Raspberry Pi d'origine est basé sur le système sur puce BCM2835 de Broadcom qui intègre un processeur ARM11 à un cœur de 700 MHz.

Figure 1 : Le modèle Raspberry Pi d'origine est basé sur le système sur puce BCM2835 de Broadcom qui intègre un processeur ARM11 à un cœur de 700 MHz. Il est offert en deux options de facteur de forme et d'ensemble de fonctionnalités : le modèle A+ plus petit (en haut) et le modèle B+ plus grand (en bas) (Images reproduites avec l'autorisation de Seeed Technology).

Raspberry Pi 2

Le Raspberry Pi 2 modèle B, lancé l'année suivant le déploiement des modèles Raspberry Pi A+ et B+, conserve les dimensions de son prédécesseur et est remarquable à deux égards du point de vue de l'ensemble de fonctionnalités évolutives. Tout d'abord, il double la capacité de la mémoire système par rapport au modèle B+ à 1 Go, et quadruple l'affectation SDRAM du modèle A+. Ensuite, et même surtout, le modèle migre du BCM2835 vers le BCM2836 de Broadcom, ce qui se traduit par une accélération de l'horloge du processeur de 200 MHz et une évolution d'un ARM11 à un cœur vers un ARM Cortex®-A7 à quatre cœurs.

Le processeur graphique demeure le même, ce qui signifie que le Raspberry Pi 2 ne fournira pas nécessairement de meilleurs graphiques et fréquences d'images vidéo (à moins que le manque de puissance de traitement suffisante du processeur n'ait été le goulot d'étranglement dans le passé). Cependant, en matière de puissance de traitement, la mise à niveau du processeur cette fois-ci peut souvent indiquer des améliorations significatives au niveau de la durée d'exécution de l'application, pour des raisons abordées plus loin plus en détail. De plus, pour répéter ce qui a été mentionné précédemment, ne rejetez pas automatiquement un processeur à quatre cœurs de 32 bits, bien que ses successeurs à 64 bits soient de plus en plus utilisés dans les smartphones d'entrée de gamme. Après tout, une implémentation double cœur de 800 MHz du processeur ARM Cortex-A7 a été utilisée pour l'iPhone 4S.

Le Raspberry Pi 2 modèle B utilise un processeur Broadcom BCM2836 comportant un processeur ARM Cortex-A7 à quatre cœurs de 900 MHz.

Figure 2 : Le Raspberry Pi 2 modèle B conserve les dimensions de son prédécesseur, le Raspberry Pi modèle B+, mais met à niveau le processeur d'application vers un Broadcom BCM2836 comportant un processeur ARM Cortex-A7 à quatre cœurs de 900 MHz. (Image reproduite avec l'autorisation de Seeed Technology)

Raspberry Pi 3

Suivant les traces de son prédécesseur Raspberry Pi 2, le Raspberry Pi 3 modèle B lancé un an plus tard fait évoluer le processeur d'application de Broadcom du BCM2836 au BCM2837, ce qui se traduit par une évolution de l'ARM Cortex-A7 à quatre cœurs de 900 MHz, un processeur de 32 bits, vers un processeur ARM Cortex-A53 à quatre cœurs de 1,2 GHz et 64 bits. Sur le plan fonctionnel, le cœur du processeur graphique à l'intérieur du BCM2837, le VideoCore IV de Broadcom, demeure inchangé, mais les vitesses d'horloge ont été augmentées pour atteindre 300 MHz pour le traitement des graphiques 3D et 400 MHz pour le traitement des vidéos. L'amélioration des performances permet un encodage 1080p 60 Hz et un décodage de contenu haut profil H.264 (MPEG-4 AVC). L'importance accrue du processeur graphique et, par conséquent, l'augmentation de la vitesse de son horloge dans le système sur puce et la génération de carte seront abordées sous peu.

Le Raspberry Pi 3 étend la compatibilité de facteur de forme de son prédécesseur, mais avec une nouvelle mise à niveau du système sur puce.

Figure 3 : Le Raspberry Pi 3 étend la compatibilité de facteur de forme de son prédécesseur, mais avec une nouvelle mise à niveau du système sur puce vers le processeur BCM2837 basé sur ARM Cortex-A53 à quatre cœurs 1,2 GHz de Broadcom. (Image reproduite avec l'autorisation de Seeed Technology)

Le Raspberry Pi 3 modèle B apporte également des améliorations notables aux options de technologies de connectivité fournies. L'Ethernet câblé 10/100 Mbps est encore une fois fourni, et complété par des capacités Bluetooth 4.x et Wi-Fi 802.11n de 2,4 GHz. Ces deux capacités nécessitaient des périphériques supplémentaires pour leur prise en charge dans les cartes de générations précédentes.

Alors, quel est le meilleur processeur ?

Les vitesses d'horloge du processeur, le nombre de cœurs et les capacités de l'ensemble de fonctionnalités, tel qu'indiqué dans les sections précédentes de cet article, constituent des facteurs de différenciation clé entre le modèle Raspberry Pi d'origine et les générations 2 et 3. Le cœur ARM11 dans les Raspberry Pi modèles A+ et B+ est une conception pipeline à 8 niveaux dans l'ordre (in-order) relativement simple, avec un support limité de fin d'instructions dans le désordre (out-of-order), et il exécute le jeu d'instructions ARMv6. Bien que le modèle soit spécifié pour fonctionner à 700 MHz maximum, les utilisateurs n'ont pas de mal à le surcadencer à 800 MHz. L'implémentation de ce cœur particulier inclut également l'unité en virgule flottante (FPU) en option de l'architecture.

Le successeur de l'ARM11, l'ARM Cortex-A9 que l'on trouve dans le Raspberry Pi 2 modèle B, est également fondamentalement une architecture de 32 bits. Comme le BMC8285, le BMC3286 est souvent stable lorsqu'il est surcadencé, cette fois de 900 MHz à 1,1 GHz. L'architecture du processeur ARM Cortex-A9 est remarquablement avancée depuis l'ARM11, et offre une conception pipeline superscalaire à 8 niveaux, à exécution spéculative dans le désordre. Le processeur ARM Cortex-A9 exécute le jeu d'instructions ARMv7-A. L'implémentation cœur trouvée sur le BMC3286 inclut également l'unité en virgule flottante en option (améliorée par rapport à la version dans l'ARM11) et des coprocesseurs "NEON" SIMD. Le BMC3286 intègre quatre cœurs de processeur, contre seulement un pour son prédécesseur BMC3285.

Enfin, le Raspberry Pi 3 modèle B contient un processeur ARM Cortex-A53 à quatre cœurs. Il s'agit également d'un processeur en pipeline à 8 niveaux avec pipeline d'exécution superscalaire à 2 voies, mais il constitue cette fois une implémentation de 64 bits prenant en charge le jeu d'instructions ARMv8-A de dernière génération. Les coprocesseurs NEON SIMD et en virgule flottante sont une nouvelle fois disponibles. Les deux coprocesseurs sont améliorés par rapport aux implémentations dans l'ARM Cortex-A9. De plus, alors que le BMC3286 est cadencé à 1,1 GHz et uniquement dans une configuration hors spécifications, le BMC3287 peut fonctionner jusqu'à 1,2 GHz avec un recadencement stable jusqu'à 1,4 GHz.

Quelle option de processeur choisir ? Le choix doit se faire en fonction de l'application et il est donc spécifique à l'utilisateur. D'une part, vous ne voulez pas choisir un processeur qui est trop lent, particulièrement si vous souhaitez conserver une certaine marge de performances pour une future évolution logicielle inévitable. D'autre part, il serait absurde d'acheter plus de processeurs que ce dont vous avez besoin. N'oubliez pas que votre choix se répercute non seulement sur les prix, mais également sur la consommation en énergie. Les processeurs ne constituent pas la seule raison pour laquelle vous souhaitez choisir une carte Raspberry Pi plutôt qu'une autre. Vous devez considérer les besoins en mémoire, les options de connectivité réseau, ainsi que d'autres attributs.

De plus, des vitesses d'horloge supérieures peuvent avoir peu de sens si votre logiciel reste inactif pendant un long moment pour attendre les résultats. Notez également que les fonctionnalités d'architecture avancées telles que le support superscalaire et dans le désordre permettent de meilleures instructions par horloge (IPC), seulement en cas de dépendance instruction-à-instruction sur votre logiciel. De la même manière, un manque d'indépendance thread conduit à un avantage de débit au mieux limité pour un processeur multicœur par rapport à une alternative monocœur plus simple, et les avantages théoriques du jeu d'instructions 64 bits peuvent ne pas s'appliquer pour votre application (sans parler des demandes d'empreinte mémoire supérieures). Inversement, n'oubliez pas que les améliorations AArch32 apportées au jeu d'instructions ARMv8 sont susceptibles d'accroître les performances même si l'ARM Cortex-A53 n'exécute que du code 32 bits.

Amélioration des graphiques

Une autre possibilité de traitement sur puce disponible complique davantage, ou selon votre perspective, libère votre processus de sélection SoC. Du point de vue conceptuel, vous pouvez considérer un processeur graphique, ou dans ce cas un cœur graphique, comme un moteur de traitement intensivement parallèle, idéal pour les tâches de traitement des pixels, mais également pour divers traitements de signaux numériques et d'autres opérations. La technique, connue sous le nom de GPGPU (unité de traitement graphique à usage général), est populaire, mais nécessite un support logiciel afin de libérer le potentiel matériel.

Malheureusement, le processeur graphique VideoCore® IV inclus dans les trois générations de systèmes sur puce de Broadcom dont nous avons parlés dans cet article ne prend pas OpenCL en charge (du moins pour le moment). OpenCL consiste en un ensemble de normes ouvertes de langages de programmation et d'API pour une programmation parallèle hétérogène, soutenu par le Khronos Group (le support OpenCL existant dans Raspberry Pi 2 et Pi 3 est actuellement limité à l'exploitation des diverses ressources du processeur). Cependant, lorsque Broadcom a publié l'ensemble complet des spécifications de VideoCore IV (PDF) dans un formulaire open-source en octobre 2014, la société a fourni un autre moyen pour accéder au processeur graphique et l'exploiter pour un usage général.

Pete Warden, un fervent de Raspberry Pi (également un ingénieur de recherche de Google et un ancien fondateur et chef du développement technologique de Jetpac, acquis par la suite par Google) a trouvé le moyen d'utiliser le processeur graphique pour considérablement accélérer les opérations de reconnaissance d'objets à l'aide de la stratégie Deep Belief deep learning SDK de son ancienne entreprise avec un assembleur/désassembleur pour les QPU (unités de traitement SIMD quadruples) de VideoCore IV (en savoir plus sur cette solution sur https://petewarden.com/2014/08/07/how-to-optimize-raspberry-pi-code-using-its-gpu/). La communauté open-source a également trouvé le moyen d'utiliser ces mêmes QPU pour améliorer les performances du traitement FFT. Il existe également d'autres exemples de projets, incluant souvent des exemples de code open-source hébergés par Github. Je vous suggère d'utiliser des recherches par mot-clé, comme ci-dessous, pour les consulter :

  • "Raspberry Pi GPGPU"
  • "Broadcom VideoCore IV GPGPU"
  • "Raspberry Pi OpenCL"
  • "Broadcom VideoCore IV OpenCL"

Caméras et conclusions

Des capacités de reconnaissance des motifs, comme démontré dans un article récent que j'ai écrit (et illustré par le projet de Pete Warden), sont notamment applicables aux diverses applications d'analyses d'images. Mais comment charger ces images dans la carte ? Le module de caméra Raspberry Pi basé sur MIPI CSI (Figure 4) constitue une option populaire. Il est basé sur le capteur d'images CMOS 5 Mpixels OV05647 d'OmniVision Technologies. N'oubliez pas que même si l'apprentissage approfondi n'est pas votre fort, les cartes Raspberry Pi constituent d'excellentes options pour vos applications de vision artificielle, particulièrement grâce à l'adoption enthousiaste par la communauté de bibliothèques de vision artificielle open-source OpenCV.

Le module de caméra Raspberry Pi intègre l'interface MIPI SPI.

Figure 4 : Le module de caméra Raspberry Pi intègre l'interface MIPI SPI, native pour toutes les cartes systèmes Raspberry Pi abordées dans cet article. Sa résolution de 5 Mpixels est suffisante pour de nombreuses tâches de vision artificielle.

D'une manière plus générale, une multitude d'options logicielles est à votre disposition pour l'adoption et l'intégration open-source. La longue liste d'entrées de Wikipedia constitue un bon point de départ. De la même manière, bien que la simulation logicielle puisse offrir un aperçu initial sur la génération de systèmes sur puce Broadcom (et donc de la génération de cartes Raspberry Pi), les cartes sont suffisamment abordables pour que vous puissiez en acheter une de chaque modèle et effectuer des évaluations. Les Raspberry Pi modèle B+, Raspberry Pi 2 modèle B et Raspberry Pi 3 modèle B sont particulièrement conseillés pour les déploiements matériels et les test logiciels.

Et au final, le principal, c'est de s'amuser ! Bien que la taille, la diversité et l'énergie de la communauté Raspberry Pi puissent produire un volume d'informations parfois décourageant, une recherche même succincte peut rapidement révéler des informations de valeur qui vous permettront de commercialiser votre prochain modèle rapidement, sûrement et efficacement.

DigiKey logo

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'éditeur

Rédacteurs nord-américains de DigiKey