warum hat die i2cdetect gibt immer UU auf meine RTC in embedded Linux
Möchte ich kommunizieren Lesen von meinem RTC in C-code anstatt der "hwclock"
shell-Befehl.
Jedoch, wenn ich i2cdetect
es zeigt 0x68
(das ist mein RTC-slave-Adresse) mit dem status "UU"
, was bedeutet, "Probing wurde übersprungen, da diese Adresse ist derzeit von einem Fahrer". Und nachdem ich dann versuchte den i2cget
seine givng "konnte, bot eingestellt-Adresse 0x68
: Device or resource busy".
Also ich denke, wenn es gibt einige problem in meiner Linux-kernel, der zwingen wird, zu Lesen von meiner RTC die ganze Zeit, oder aus anderen Gründen.
Dank
- was ist die Ausgabe von
lsmod
?
InformationsquelleAutor henryyao | 2013-07-23
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gehe davon aus, dass Sie mit DS 1307 RTC, oder einer seiner Varianten (weil der slave-Adresse 0x68). Überprüfen, ob die Treiber geladen werden von:
Wenn Sie sehen einen Eintrag, der rtc_ds1307, (wie dieser ->
rtc_ds1307 17394 0
) in der Ausgabe des oben genannten Befehls dann dieser Treiber sein könnte, halten Sie von dieser Adresse.Wenn der Treiber geladen wird im system dann entfernen Sie es mit
EDIT:
(Im Licht des OP ' s feedback,) tun Sie Bitte Folgendes
1)
cat /sys/bus/i2c/devices/3-0068/modalias
. Diesem geben Sie den Namen des kernel-Treibers ist, dass das Gerät beschäftigt. Kopieren Sie die Treiber-name nach dem Doppelpunkt(:)OP ' s Ausgabe des Befehls sagt uns, dass seine ds1337
2) Überprüfen Sie, ob ds1337 ist ein alias für einen Treiber, mit
Hoffentlich erhalten Sie die folgende Ausgabe
Dies bestätigt unsere Vermutung, dass rtc_ds1307 ist infact die Treiber in die I2C Adresse 0x68.
3)
rmmod rtc_ds1307
zum entladen der Treiber.Hinweis: Dies funktioniert nur, wenn der Fahrer ist ein Ladbares Kernel-Modul, ansonsten wird Ihnen die folgende Fehlermeldung angezeigt:
In diesem Fall müssen Sie den kernel Neukompilieren, wieder mit diesen Treiber deaktiviert/modularisiert.
ls /sys/bus/i2c/devices
grep ds1337 /lib/modules/`uname -r`/modules.alias
0x68 verwendet wird durch einige Fahrer,
Deaktivieren Sie den Treiber, der im kernel-source-code und kompilieren Sie den Quellcode.