Linux embarqué sur FPGA

10

J'ai une expérience très limitée avec les FPGA (Altera - utilisé uniquement les outils de conception visuelle).

Je prévois un nouveau projet dans lequel j'ai besoin de FPGA et je pourrais bénéficier beaucoup d'un véritable Linux fonctionnant sur la même carte (principalement pour la communication TCP ainsi que certains DSP).

Ma question est, y a-t-il un FPGA recommandé qui a un Linux embarqué pris en charge préparé pour cela? aucun pilote sophistiqué (juste Ethernet, le wifi pourrait être un plus, ...). J'imagine qu'il y aurait un micro contrôleur intégré dans le FPGA (cela signifie qu'il consommerait beaucoup de FPGA et j'aurais besoin d'un FPGA plus grand).

Ali
la source

Réponses:

15

Un cœur de processeur RISC 32 bits manuel capable d'exécuter la version sans mmu de linux n'a pas besoin d'être aussi gros - la vraie ressource dont vous avez besoin est beaucoup plus de RAM (10 s de mégaoctets) que celle disponible dans n'importe quel FPGA, donc vous 'll voudra probablement SDRAM sur la carte et un contrôleur pour cela dans le FPGA.

Cela dit, si vous voulez autre chose qu'un niveau de performances insignifiant, vous voulez probablement un noyau avec quelques optimisations (pipelining, etc.), et cela commence à augmenter quelque peu la taille. L'ajout d'un mmu complet rendra la (ré) allocation de mémoire plus efficace et activera le comportement fork () de copie sur écriture habituel.

Les deux principaux fournisseurs de FPGA ont des cœurs de processeur souples avec des ports Linux disponibles - Microblaze pour Xilinx, Nios II pour Altera. Vous devriez probablement lire leurs documents pour des recommandations de plate-forme spécifiques car c'est bien sûr une cible qui évolue avec le temps. Une conception de base tierce peut être un peu plus grande pour des performances similaires, si elle est écrite de manière plus portable et pas aussi spécifiquement optimisée pour une famille FPGA donnée.

Historiquement, il existait des puces combinant à la fois un cœur de processeur dur (souvent powerpc) avec une région de matrice FPGA configurable. Une autre option à envisager serait un processeur séparé (probablement ARM) sur la même carte qu'un FPGA.

Une grande partie de la décision dépendra du degré de couplage nécessaire entre le processeur et le FPGA. Si vous pouvez réduire le problème aux registres de configuration et à un flux de données, cela pourrait être aussi modulaire que d'accrocher une carte FPGA avec une puce USB rapide au port hôte USB d'une carte Linux intégrée comme un BeagleBoard ou RasberryPi. Pour une intégration plus étroite, vous pouvez souhaiter que le FPGA soit sur la même carte et assis sur le bus externe du processeur. Ou pour les faibles débits de données, il est trivial de mettre une interface de registre SPI dans un FPGA, et les interfaces UART sont entièrement réalisables mais un peu plus délicates.

Enfin, il y a la question de savoir si vous avez réellement besoin d'un système d'exploitation complet tel que Linux, ou si une pile TCP intégrée plus «de taille micro-contrôleur» résoudrait votre problème tout en nécessitant moins de mémoire.

Chris Stratton
la source
6

Microblaze de Xilinx fonctionne très bien sous Linux, en supposant qu'il est assez rapide pour vos besoins - il ne fera que quelques 10s de MIPS élevés dans des appareils moins chers, 100-200 MIPS dans les familles chères.

Xilinx a un dépôt git , ou il existe quelques distributions spécifiques à Xilinx. La flexibilité du FPGA peut être un peu pénible ainsi qu'une aubaine, car votre carte mémoire et vos mappages IRQ, ou même les périphériques disponibles peuvent changer pendant le développement du projet.

Petalinux a des scripts pour gérer ce genre de choses et mettre à jour les bits de la configuration du noyau qui comptent en fonction de votre conception de système la plus récente.

Martin Thompson
la source
4

La gamme Virtex de Xilinx a des versions FPGA avec PowerPC cœur dur. Il est assez facile de faire fonctionner Linux sur le PowerPC, mes étudiants l'ont fait pour de nombreux projets de conception supérieurs. Ils ont encore beaucoup de tissu configurable à remplir pour la conception de votre matériel.

Le tableau d'évaluation Virtex2 Pro était très courant dans les projets de recherche pédagogique et universitaire. Comme Xilinx a abandonné la prise en charge de cette puce de version dans ses outils récents, vous pouvez en acheter une à peu de frais. Je crois qu'il a été pris en charge jusqu'à la version 9.x environ. Hmm. Il y a plusieurs années, je suis peut-être un peu nostalgique. Quoi qu'il en soit, je continue de distribuer ces conseils aux étudiants intéressés pour leur permettre de faire à peu près tout ce qu'ils veulent avec eux.

Bill Nace
la source
1
Si je ne me trompe pas, ils s'appellent Virtex xilinx.com/onlinestore/v2pro_boards.htm
Ali
1
@Ali - Je ne pense pas que vous vous trompiez, et vous avez une référence assez fiable pour votre affirmation. N'hésitez pas à proposer une modification dans des situations comme celle-ci!
Kevin Vermeer
3

SmartFusion d'Actel intègre un FPGA avec un noyau ARM Cortex-M3 à IP dure et un moteur analogique avancé dans un dispositif à puce unique.

uClinux fonctionne plutôt bien sur le cœur Cortex-M3 de SmartFusion. Consultez ce site pour plus de détails.

vladimir khusainov
la source
2

Selon votre calendrier, vous pouvez également vous pencher sur la nouvelle gamme Xilinx Zynq-7000, qui combine un processeur ARM avec un Artix-7 ou Kintex-7. Xilinx affirme qu'elle expédiera des quantités de production au deuxième semestre 2012.

D'autres fournisseurs peuvent proposer des produits similaires. Je ne sais pas si ou quand Xilinx apportera le support Zynq au ISP WebPack gratuit; en ce moment, ils affirment que vous avez besoin de l'édition intégrée ISE.

Nicolas
la source
Pourquoi avez-vous créé ce wiki communautaire de réponse? C'était probablement inutile.
Kevin Vermeer