Dans de précédents articles ([1] et [2]), nous avons découvert le framework LiteX permettant de créer simplement des SoC softcores en utilisant le langage Python et d'instancier ces designs sur différents devkits FPGA, ceci au point de faire démarrer un système GNU/Linux à partir d'un disque SATA. Mais tout ceci n'était, somme toute, que de la prise en main, reposant massivement sur des exemples du projet. Aujourd'hui, nous allons creuser un peu davantage le sujet en voyant comment, via quelques fichiers Python, nous pouvons créer notre SoC (ou MCU) bien à nous, en rassemblant toutes les briques nécessaires dans un projet « maison »...
Le principal intérêt de LiteX est évident, il s'agit de permettre la confection sur mesure d'un SoC, généralement sur base RISC-V, incluant tous les périphériques dont on a besoin. Vous voulez trois UART ou plus ? Une myriade de bus i2c ? Un contrôleur PWM ou quelque chose pour piloter des LED adressables type WS2812b ? Ou même quelque chose de totalement original pour implémenter un protocole non standard, ou encore vous interfacer avec un matériel spécifique ? Le tout en vous donnant l'opportunité de prendre tout ceci en charge avec un code bare metal ou un OS temps réel comme FreeRTOS, ChibiOS, RIOT ou Zephyr ? LiteX est précisément fait pour cela, sans avoir à vous mettre drastiquement à niveau en HDL et vous heurter aux subtils problèmes de ce type de langages, assez éloignés de la façon de penser d'un développeur bas niveau sur MCU ou SBC.
Du point de vue du matériel à utiliser, et en particulier du fabricant et du FPGA, le choix est…
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première