RTC Modul/Treiber fehlt in Kernel, Möglichkeiten ?

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Kollisionskurs
Beiträge: 6
Registriert: 15.12.2021 08:23:36

RTC Modul/Treiber fehlt in Kernel, Möglichkeiten ?

Beitrag von Kollisionskurs » 08.03.2022 13:33:08

Hallo zusammen,

ich hab gerade eine Aufgabe zu lösen und komme nicht weiter bzw. ergibt sich daraus ein Sammelsurium an Anfängerfragen. Bin relativ neu im Thema.
Wir haben "ein Gerät" gebaut auf Basis des Raspberry Compute Modul 3 und Raspberry Pi OS Lite (Buster) als Betriebssystem. An der SPI Schnittstelle (über GPIO 8-10) ist eine Real-Time Clock angeschlossen von Microchip (MCP7951)

https://ww1.microchip.com/downloads/en/ ... 02300C.pdf

Für diesen Chip gibt es auch ein Treibermodul, siehe https://www.kernelconfig.io/config_rtc_ ... arch=arm64.
Allerdings ist dieser Treiber nicht in Kernel 5.10.63-v7 enthalten (welcher unser Buster-Image nutzt)

Was habe ich jetzt für Möglichkeiten ?
-- das angesprochene Treiber-Modul nachträglich in Kernel integrieren ? Nach längerer Suche finde ich für dieses Modul allerdings keine Möglichkeiten bzw. liegt mir lediglich der Treiber als C-Datei vor.
-- gesamten Kernel aktualisieren bzw. auf eine Version wechseln in welcher das Modul enthalten ist ?

Sobald die RTC (über diesen Treiber) angesprochen werden kann, sollte es ja möglich sein diese über ein Python Script anzusprechen bzw. die Zeit zu setzen (manuell oder sofern NTP Server erreichbar) und eben zu lesen.

Über jeden Tipp dankbar

JTH
Moderator
Beiträge: 3077
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: RTC Modul/Treiber fehlt in Kernel, Möglichkeiten ?

Beitrag von JTH » 08.03.2022 13:53:21

Kollisionskurs hat geschrieben: ↑ zum Beitrag ↑
08.03.2022 13:33:08
Was habe ich jetzt für Möglichkeiten?¹
-- das angesprochene Treiber-Modul nachträglich in Kernel integrieren? Nach längerer Suche finde ich für dieses Modul allerdings keine Möglichkeiten bzw. liegt mir lediglich der Treiber als C-Datei vor.
Die schnellste Lösung zum Ausprobieren, aber bei Updates mit der meisten Handarbeit: Einfach das Modul bauen:
  • Kernelquellen installieren: Debianlinux-source oder ein versionsspezifisches Paket (wenn das Paket bei Raspberry OS auch so verfügbar ist)
  • Kernelquellen aus /usr/src/linux-source-*.tar.* irgendwohin entpacken
  • In den entpackten Quellen nach drivers/rtc/ wechseln
  • Modul bauen:

    Code: Alles auswählen

    make -C /lib/modules/$(uname -r)/build M=$PWD CONFIG_RTC_DRV_MCP795=m
  • Gebautes Modul rtc-mcp795.ko aus drivers/rtc/ nach /lib/modules/$(uname -r)/kernel/drivers/rtc kopieren
  • Abschließend:

    Code: Alles auswählen

    depmod -a
Das sollte so funktionieren.

Kollisionskurs hat geschrieben: ↑ zum Beitrag ↑
08.03.2022 13:33:08
-- gesamten Kernel aktualisieren bzw. auf eine Version wechseln in welcher das Modul enthalten ist?
Die Alternative zu obigem wäre, den gesamten Kernel mit gesetzter CONFIG_RTC_DRV_MCP795 neu zu bauen. Das ist von der Wartung her wohl eleganter. Einen fertig gebauten Kernel mit zufällig zusätzlich genau diesem Modul wirst du wahrscheinlich nirgendwo finden.

¹ Stellvertretend für niemand entplenkt.
Manchmal bekannt als Just (another) Terminal Hacker.

Kollisionskurs
Beiträge: 6
Registriert: 15.12.2021 08:23:36

Re: RTC Modul/Treiber fehlt in Kernel, Möglichkeiten ?

Beitrag von Kollisionskurs » 09.03.2022 11:52:40

JTH hat geschrieben: ↑ zum Beitrag ↑
08.03.2022 13:53:21
[*] Modul bauen:

Code: Alles auswählen

make -C /lib/modules/$(uname -r)/build M=$PWD CONFIG_RTC_DRV_MCP795=m
danke für Deine schnelle Antwort. Ich versuche gerade das Modul zu bauen (zum testen auf einem Pi mit Raspbian Bullseye) - renne mir beim bauen allerdings gerade die Nase an:

Code: Alles auswählen

pi@raspberrypi:~/linux_src/linux-5.16.11/drivers/rtc $ find . -name rtc-mcp795.c
./rtc-mcp795.c
pi@raspberrypi:~/linux_src/linux-5.16.11/drivers/rtc $ make -C /lib/modules/$(uname -r)/build M=$PWD CONFIG_RTC_DRV_MCP795=m
make: *** /lib/modules/5.10.92-v7+/build: No such file or directory.  Stop.
Ich habe davor allerdings nichts installiert (weil Du geschrieben hast "Kernelquellen installieren"), sondern die Datei (Quelle: http://deb.debian.org/debian/pool/main/ ... rig.tar.xz) heruntergeladen und entpackt. Denkfehler ?

thx..

JTH
Moderator
Beiträge: 3077
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: RTC Modul/Treiber fehlt in Kernel, Möglichkeiten ?

Beitrag von JTH » 09.03.2022 12:12:54

Kollisionskurs hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 11:52:40

Code: Alles auswählen

make: *** /lib/modules/5.10.92-v7+/build: No such file or directory.  Stop.
Mein Fehler. Der build-Ordner liegt in den linux-headers-ARCH-Paketen. Das müsstest du zusätzlich installieren.

Kollisionskurs hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 11:52:40
Ich habe davor allerdings nichts installiert (weil Du geschrieben hast "Kernelquellen installieren"), sondern die Datei (Quelle: http://deb.debian.org/debian/pool/main/ ... rig.tar.xz) heruntergeladen und entpackt. Denkfehler?
Nein, kein Denkfehler. Aber um Probleme beim Bauen und späteren Benutzen durch veränderte Symbole im Kernel auszuschließen, solltest – oder je nach dem sogar: musst – du die Quellen der Kernelversion benutzen, die bei dir läuft. Ist das die 5.16.11? Edit: Ach nein, steht ja durch uname dort: Du benutzt die 5.10.92.
Manchmal bekannt als Just (another) Terminal Hacker.

Kollisionskurs
Beiträge: 6
Registriert: 15.12.2021 08:23:36

Re: RTC Modul/Treiber fehlt in Kernel, Möglichkeiten ?

Beitrag von Kollisionskurs » 18.03.2022 08:38:53

So, ich hab mal wieder Zeit mich um mein RTC Problem zu kümmern. Kernelmodul wurde erfolgreich gebaut und geladen:

Code: Alles auswählen

pi@raspberrypi:~ $ lsmod
Module                  Size  Used by
rtc_mcp795             16384  0
Somit (sofern ich es richtig verstehe) hat das System jetzt einen passenden Treiber - allerdings zeigt:

Code: Alles auswählen

sudo hwclock --verbose -r
hwclock from util-linux 2.36.1
System Time: 1647526508.149500
Trying to open: /dev/rtc0
Trying to open: /dev/rtc
Trying to open: /dev/misc/rtc
No usable clock interface found.
hwclock: Cannot access the Hardware Clock via any known method.
immer noch das selbe und via

ls -l /dev/rtc* wird auch nix aufgelistet.

Wie kann ich dem System die RTC jetzt bekannt machen ?
thx!

Antworten