Treiber fehlt für RTC Baustein; Kernel aktualisieren ?

  • 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 (Bullseye) 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.

    Im Standard Kernel ist dieses Treibermodul allerdings nicht enthalten. Somit wäre mein Plan jetzt einen angepassten Kernel zu bauen - eben mit diesem Treiber inkludiert.

    So wie unter https://www.raspberrypi.com/documentation/…hoosing_sources ansatzweise beschrieben.

    Was habe ich gemacht ...

    Code
    # Kernelversion abfragen 
    uname -r => 5.10.92-v7+
    
    # (zum Kernel passende) Sources herunterladen => branch 5.10.y
    git clone --depth=1 --branch rpi-5.10.y https://github.com/raspberrypi/linux
    
    # prüfen ob das Modul für den RTC Baustein in den Sourcen enthalten ist (im Verzeichnis linux/drivers/rtc )
    find . -name rtc-mcp795.c
    ./rtc-mcp795.c => passt!

    Jetzt quält mich schon die erste Frage:
    - Warum ist das Modul in den 5.10er Sourcen enthalten, aber nicht Bestandteil meines 5.10er Kernels auf meinem Raspberry ?

    Unabhängig davon renne ich mir jetzt die Nase an bzw. wie kann ich jetzt steuern das der rtc-mcp795 Treiber berücksichtigt wird, um dann den Kernel neu zu bauen ?

    Oder macht es in meinem Fall mehr sein ein Kernel-Modul zu bauen und dieses dann via

    Code
    insmod 

    in den Kernel zu laden ? Allerdings fehlen mir dazu die header Dateien.

    ... bitte um etwas Klarheit :helpnew:

  • Treiber fehlt für RTC Baustein; Kernel aktualisieren ?? Schau mal ob du hier fündig wirst!

  • - Warum ist das Modul in den 5.10er Sourcen enthalten, aber nicht Bestandteil meines 5.10er Kernels auf meinem Raspberry ?

    Wie sind die Ausgaben von:

    Code
    zcat /proc/config.gz | grep -i mcp795
    apt-cache policy raspberrypi-kernel-headers

    BTW: Es gibt schon 5.10.103-v7l+. Welche OS/Version benutzt Du?

  • Wie sind die Ausgaben von:

    Code
    zcat /proc/config.gz | grep -i mcp795
    # CONFIG_RTC_DRV_MCP795 is not set
    
    apt-cache policy raspberrypi-kernel-headers
    raspberrypi-kernel-headers:
      Installed: (none)
      Candidate: 1:1.20220120-1
      Version table:
         1:1.20220120-1 500
            500 http://archive.raspberrypi.org/debian bullseye/main armhf Packages

    BTW: Es gibt schon 5.10.103-v7l+. Welche OS/Version benutzt Du?


    Raspbian 11 Bullseye
    Linux raspberrypi 5.10.92-v7+ #1514 SMP Mon Jan 17 17:36:39 GMT 2022 armv7l GNU/Linux

    danke

  • ...

    Dann kannst Du updaten und danach die kernel-headers installieren.

  • ich bleibe auf der Version 5.10.92-v7+ hängen ...

    ...

    OK, ist auch nicht relevant. Wichtig sind die kernel-headers.

  • So, kernel-headers sind installiert.

    Code
    raspberrypi-kernel-headers:
      Installed: 1:1.20220308-2
      Candidate: 1:1.20220308-2
      Version table:
     *** 1:1.20220308-2 500
            500 http://archive.raspberrypi.org/debian bullseye/main armhf Packages
            100 /var/lib/dpkg/status
  • edit: jetzt ist meine Kernel-Version die

    5.10.103-v7+

    ... es hat schlicht ein Neustart gefehlt.

    Code
    # Was fehlt jetzt noch um das Modul zu bauen ? sorry, ich wurschtel mich da gerade müssig durch ...
    
    sudo make -C /lib/modules/$(uname -r)/build M=$PWD CONFIG_RTC_DRV_MCP795=m 
    
    
    make: Entering directory '/usr/src/linux-headers-5.10.103-v7+'
    scripts/Makefile.build:44: /home/pi/Makefile: No such file or directory
    make[1]: *** No rule to make target '/home/pi/Makefile'.  Stop.
    make: *** [Makefile:1825: /home/pi] Error 2
    make: Leaving directory '/usr/src/linux-headers-5.10.103-v7+'
  • ... es hat schlicht ein Neustart gefehlt.

    Code
    scripts/Makefile.build:44: /home/pi/Makefile: No such file or directory
    make[1]: *** No rule to make target '/home/pi/Makefile'.  Stop.

    Du musst den source code downloaden und beim ausführen von make, im richtigen Verzeichnis sein.

  • Modul wurde gebaut und geladen, soweit schon mal ein Stück weiter ...

    Code
    pi@raspberrypi:~ $ lsmod
    Module                  Size  Used by
    rtc_mcp795             16384  0

    Jetzt geht es weiter und ich muss schauen wie ich über das Modul bzw. den Treiber letztendlich die Hardware-Uhr ansprechen kann.

    Wenn ich jetzt das System aktualisiere bzw. sich die Kernel-Version erhöht, ist es ja so das mein Modul ursprünglich mit einem älteren Stand gebaut wurde. Muss ich das Prozedere dann erneut durchführen ? Also bei jeder Aktualisierung auch das Kernel-Modul "händisch" aktuell halten ?

    Danke für den Support

  • ... mit einem älteren Stand gebaut wurde. Muss ich das Prozedere dann erneut durchführen ?

    Ja.

    Also bei jeder Aktualisierung auch das Kernel-Modul "händisch" aktuell halten ?

    Ja.

  • So, ich hab mal wieder Zeit mich um mein RTC Problem zu kümmern. Stand ist dass das Kernelmodul geladen wird - siehe #10
    Somit (sofern ich es richtig verstehe) hat das System jetzt einen passenden Treiber - allerdings zeigt:

    Code
    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 !

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!