Travailler avec GPIO sur bcm2836

J’écris un pilote GPIO pour mon système d’exploitation RPI2. Et je surfais très longtemps à ce sujet, mais je n’ai trouvé que des données linux. Comment devrais-je faire des fonctions telles que

void gpio_set(int pin); void gpio_clr(int pin); 

en C pour le conducteur. Ou peut-être que cela peut être fait grâce à un assemblage en ligne?

Comme expliqué ici

L’architecture sous-jacente du BCM2836 est identique à celle du BCM2835. La seule différence significative est la suppression du processeur ARM1176JZF-S et son remplacement par un cluster Cortex-A7 à quatre cœurs.

La documentation disponible pour le BCM2836 ne détaille pas le périphérique de stockage, mais uniquement le A7. Au lieu de cela, vous avez besoin de la documentation du BCM2835 . La section 6 de spécification de périphérique traite du GPIO. Les registres sont mappés en mémoire afin que vous puissiez leur écrire directement en C.

Il est très simple à implémenter en C. N’oubliez pas que l’adresse du périphérique RPi2 est 0x3F000000 au lieu de 0x20000000 (RPi). La documentation disponible concerne le RPi (BCM2835), mais elle s’applique également sur le RPi2 avec certaines modifications d’adresse de mémoire et de processeur (Cortex-A7). Pour un saut rapide, vous pouvez consulter le blog de valver consacré au développement en métal nu.