2017-03-28 4 views
1

On m'a demandé d'appeler un oscillateur en anneau sous Linux. Pour commencer, j'ai essayé de lire directement les registres de contrôle et d'état (bits intéressants) et je peux accéder à ceux avec devmem (en utilisant les adresses physiques des registres). Il existe deux modules oscillateurs en anneau 0 et 1. Chaque consiste de 4 oscillateurs en anneau. La sortie du module 0 alimente un générateur de nombres aléatoires. Le module 1 est utilisé pour la surveillance des processus - il n'y a pas encore beaucoup d'informations à ce sujet. Chaque module possède un registre séparé de contrôle, d'état, etc. Un compteur de fréquence est fixé à chaque oscillateur en anneau et je peux lire le compte de fréquence du registre de comptage du compteur de fréquence lorsque les registres de contrôle des oscillateurs en anneau sont correctement réglés.Pilote d'oscillateur en anneau

Maintenant, je dois écrire un pilote de périphérique pour l'oscillateur en anneau à des fins d'élévation. Ce que je ne suis pas tout à fait clair est de savoir si dans le fichier dts je devrais essayer de représenter l'oscillateur en anneau comme une source d'horloge ou de le traiter comme un dispositif de plate-forme. Impossible de trouver beaucoup d'informations sur la façon dont Linux gère un oscillateur en anneau. Devrais-je rechercher l'adresse de l'oscillateur en anneau et essayer de l'ajouter comme toute autre entrée de périphérique de plate-forme dans le fichier dts. En cela je peux l'enregistrer en tant que périphérique de plate-forme dans le fichier de pilote et contrôler ses registres à partir de la fonction de sonde. Ou devrais-je le traiter comme une source d'horloge? Cependant, à partir de la documentation disponible, je ne peux pas voir qu'il est utilisé comme source d'horloge pour tous les autres périphériques. Quelqu'un peut-il jeter un peu de lumière sur ce s'il vous plaît? Toute aide sera grandement appréciée.

Merci.

Cordialement

Vivek

Répondre

0

J'implmented l'anneau oscillateur comme pilote de plate-forme. Les dts/changements de DTSI sont les suivantes:

DTSI:

ring_osc: [email protected] { 
    compatible = "abc,abc-ring"; 
    reg = <0xF00xxxxx 0x14>; 
    status = "disabled"; 
}; 

dts:

&ring_osc { 
    status = "okay"; 
}; 

Le pilote que j'ai écrit simplement configure l'oscillateur en utilisant son registres de configuration. En outre, fournit une interface sysfs pour définir les valeurs de période pour le compteur de fréquence qui lui est attaché et relire le compte de fréquence à partir du compteur de fréquence.