Seriellen Output des bootloaders unterbinden

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich möchte meinen Raspberry Pi zum Monitoren und steuern meines Heizkessels verwenden. Der wird über eine RS232 Schnittstelle angesteuert. Leider hat der rpi wohl nur eine die von Raspbian als Console verwendet wird. den Output von Kernel und Init abzuschalten ist trivial und wird auch auf 1001 Webseite beschrieben.

    jetzt wird aber beim Boot immer noch "Uncompressing Linux" über ttyAMA0 rausgehauen. Wie wird man das los?

    Kenne mich leider mit ARM bootloadern nicht aus. Wie konfiguriert man den? Ich nutze das Raspbian Image vom 20.6.2014

  • Moin,

    zunächst die Datei /etc/inittab ändern. I.d.R. ganz unten findest Du eine Zeile, in der ttyAMA0 drin steht.
    Die muss auskommentiert werden:

    Code
    ...
    T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100


    ändern nach:

    Code
    #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

    Dann die Datei /boot/cmdline.txt editieren. Da steht einiges drin, das ebenfalls zu ttyAMA0 gehört. Das muss entfernt werden:

    Code
    dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait


    ändern nach:

    Code
    dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

    Die Änderungen müssen als root vorgenommen werden (sudo vor das Kommando oder gleich sudo bash für eine root-shell).

    Nach einem reboot (shutdown -r now) sollte über die rs232 nichts mehr ausgegeben werden.

    //EDIT: immer dieser meigrafd ;) ...

    cheers,
    -ds-


  • Und, wie wäre es mit einem USB --> Seriell Wandler?


    Die mag ich nicht besonders und außerdem hängt bereits einer dran über den die Solar Anlage ausgelesen wird. Ich möchte da kein durcheinander haben und ein freier usb Port wärv auch nicht schlecht.

    Inittab und cmdline.txt habe ich längst editiert, ich bekomme auch keine Meldungen von Kernel mehr und auch kein login prompt (schrieb ich ja auch bereits).

    ich möchte die Meldungen vom bootloader weg haben weiß denn keiner weiß das geht? Google hilft auch nicht weiter.


    Folge der Anleitung zum freischalten von UART


    Danke für den Tipp - aber da steht nix von dem drin was ich gefragt habe, nur was ich eh schon wusste und auch bereits erledigt habe.

    Wie heißt denn der bootloader von raspbian und wie konfiguriert man den?

    Einmal editiert, zuletzt von schmadde (28. August 2014 um 16:17)

  • Ich hab selbst mal ein bisschen geschaut. Bootloader gibt's wohl gleich mehrere hintereinander geschaltete. Aber die Message kommt aus dem Kernel - besser gesagt aus der Dekomprimierroutine, die für jede Plattform anders implementiert ist. Bei ARM besteht der printk ersatz im Wesentlichen aus zwei inline-asm Befehlen, die so wie es aussieht einfach was in ein Register schreiben. Was genau dafür tut kann ich mangels arm Kenntnissen nicht sagen. Ist aber keine abfrage dabei bzgl. Irgendwelcher cmdline Parameter oder serial Console options (im x86 code schon). Sieht also so aus als ob ich um einen selbst kompilierten Kernel nicht rumkomme. Oder kann man da in config.txt irgendwas einstellen, dass Zeichen nur auf dem hdmi port geschrieben werden sollen?


  • console=tty1 in der cmdline.txt löschen schon ausprobiert?


    Was soll das bringen? Das ist doch unter Linux die erste Text-Console auf dem primären Grafiadapter. Ist ausserdem sowieso der default wenn nix anderes angegeben ist soweit ich mich erinnere. Habs trotzdem mal rausgenommen, funktionier wie erwartet nicht


    Eventuell gibt es auch ein Flag, das Du dem Kernel mitgeben kannst - so was wie -q (quiet) :s


    Der relevante Code in arch/arm/boot/compressed/misc.c wertet keinerlei Flags aus, das kann also gar nicht gehen. Ich sehe jetzt nur den Weg, den Kernel zu rekompilieren nachdem ich den entsprechenden Code rausoperiert habe.

    Weiss jemand zufällig, was die folgende Assembler Instruktion beim RPi tut?

    mcr p14, 0, %0, c0, c5, 0

    wobei %0 durch einen ASCII Character ersetzt wird

  • Um das mal abzuschliessen: nach bauen eines neuen Kernels, in dessen source ich den entsprechenden Code rausoperiert habe war die Meldung endlich weg.

    Allerdings werde ich evtl doch zum USB Serial Adapter greifen, der zweite ist grade weggefallen, da Solar statt USB einen LAN-Anschluss hat und ich noch mehrere PL2303 Klone rumliegen habe.

  • naja, was gibts da groß zu beschreiben. Ich habe den Kernel-Source installiert und die notwendigen tools (howtos gibts dazu ja zuhauf im Netz, z.B. http://www.raspberrypi.org/documentation/…nel/building.md), habe aus /proc/config.gz die Konfiguration gezogen und das config-file unter .config im Kernel-Source tree abgelegt. Dann "make oldconfig" (oder wars "make cloneconfig?") aufgerufen. Dann den Kernel und die Module kompiliert.

    Achja, vorher habe ich die Funktionen "icedcc_putc" durch dummys ersetzt. Ich bin nicht 100% sicher, ob das den Erfolg gebracht hat oder ob arch/arm/boot/Image ein unkomprimiertes Image ist, welches das Problem gar nicht hat.

    ist aber auch nicht relevant, denn ich habe festgestellt, dass der Banana Pi, den ich auch noch rumliegen habe mehrere UARTs nutzbar machen kann und den Boot-Output gar nicht auf der 26Pin-GPIO Leiste hat sondern auf nem extra Jumperfeld. Das ist für mich wesentlich besser geeignet, dann muss ich nämlich nicht bei jedem Kernel Update dran denken, dass ich das rausoperieren muss.

    Ich werde also für das Projekt den Banana Pi nehmen

    Andere Vorschlag, den ich Euch nicht vorenthalten will: Mit einem Binäreditor das Kernel-Image bearbeiten, nach "Uncompressing Linux" suchen und das "U" durch eine "0" (Zahl, nicht String!) ersetzen. Dann sollte auch nix auf die serielle Konsole kommen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!