Durant mes pérégrinations dans le petit monde du développement FPGA avec LiteX s'est posée une problématique intéressante, consistant à devoir écrire un support pour une interface série (UART) en n’ayant à disposition rien d'autre qu'une poignée de registres où lire ou écrire. Cet exercice, pour moi, était une phase préalable à l'implémentation d'un pilote pour un système d'exploitation, mais serait transposable à n'importe quel type d'interface reposant sur des mécanismes similaires, et ce, sur n'importe quel MCU ou SoC, actuel ou ancien. Faisons donc connaissance avec l'UART LiteX, voulez-vous ?
Le contexte évoqué ici concerne initialement du développement C bare metal pour un SoC softcore RISC-V produit par le framework LiteX, couvert par ailleurs dans quelques articles précédents de la publication. Il ne s'agit pourtant pas d'un article sur LiteX et, même s'il est toujours intéressant de reproduire les manipulations avec du matériel physique, n'est pas réellement en lien avec un quelconque MCU ou SoC. L'objet est simplement de voir comment, à partir de quelques registres, nous pouvons créer un support simplifié pour un port série en programmation bare metal (sans OS). Ceci sera donc, dans une certaine mesure, facilement adaptable à tout type de situations similaires. Le mot « pilote » utilisé dans le titre est donc à prendre au sens large du terme, puisqu'il s'agit davantage d'un « morceau de code » plutôt que d'un pilote pour système comme Linux, FreeRTOS, Zephyr, etc.
Néanmoins, le scénario présent étant…
- 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