• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

APU2 - LED Ansteuerung

Errorsmith

Kompiliertier
Themenstarter #1
Hi

Ich spiele gerade mit einer APu2C4 herum. Wenn ich das richtig verstanden habe, hat das Ding zwei "Controller" für GPIO. Zum einen gibt es einen dedizierten Chip mit dem man die Pins auf dem GPIO Header ansteuern kann. Dazu gibt es noch 3 LED sowie einen Modeswitch. Beide sind direkt mit CPU bzw Southbridge verbunden und mössen anders angesteuert werden. Es gibt auch einige Treiber für Linux - für FreeBSD habe ich bisher nicht wirklich was gefunden.
Oder ich suche falsch. Hat einer von euch so ein Teil und die LED zum laufen bekommen? Die LED sind zwar kein "Showstopper" für mich, aber es wäre ja nett wenn das funktionieren würde.

Das einzige was ich gefunden habe war ein Projekt "apuled" - allerdings fehlt mir hier irgendwas: das Ding setzt auf dem Treiber auf den ich bräuchte. Den Treiber selber finde ich jedoch nicht. Falls garnix geht: Wie hoch ist der Aufwand den vorhandenen Linuxtreiber auf FreeBSD umzuschreiben?

Grüße,
errorsmtih
 

hessijens

Well-Known Member
#2
GPIO sollte mit Freebsd 11.1 funktionieren. Du musst die Kernelmodule Modul "nctgpio" und "gpiobus" laden. Entweder per Hand oder beim starten über /boot/loader.conf. Damit kann ich dann LEDs die ich am GPIO Bus anstecke an bzw. ausschalten (Pinbelegung hier auf Seite 16 https://www.pcengines.ch/schema/apu2c.pdf z.B:

gpioctl -c 16 out
gpioctl 16 1
gpioctl 16 0

Onewire Module (Z.B.: DS18B20 Temperaturmodule) funktionieren über den GPIO Bus nicht wie unter arm z.B. mit dem RPI. Ich weiß nicht wie ich das w1-gpio Modul owc an den GPIO Pin binden kann. Unter arm geht das über die FDT, die es aber bei amd64 nicht gibt. Ideen/Input sind willkommen.

Die LED in der Front haben andere GPIO Pinnummern (68,69,70 bei der APU2). Theoretisch kannst Du diese auch wie oben steuern. Es gibt hierzu ein Review https://reviews.freebsd.org/D9876 für ein Kernelmodul (heißt ".ko" ist noch ein Bug!), damit bekommst die unter /dev/led die Einträge und kannst darüber steuern.
 

Errorsmith

Kompiliertier
Themenstarter #3
Hi

Danke für die Antwort. Ich hab das auch gleich mal ausprobiert - allerdings nicht wirklich erfolgreich. Auf der Box ist FreeBSD 11.1 installiert, so gesehen hätt das also klappen müssen.
Code:
root@apu:~ # uname -a
FreeBSD apu 11.1-RELEASE FreeBSD 11.1-RELEASE #0 r321309: Fri Jul 21 02:08:28 UTC 2017     root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64
root@apu:~ # kldload gpiobus
root@apu:~ # kldload nctgpio
ppc0: cannot reserve I/O port range
root@apu:~ # kldstat
Id Refs Address            Size     Name
 1    6 0xffffffff80200000 1f67a88  kernel
 2    2 0xffffffff82221000 3a23     gpiobus.ko
 3    1 0xffffffff82225000 20f2     nctgpio.ko
root@apu:~ # gpioctl -l
gpio_open: No such file or directory
Scheinbar findet er irgendetwas nicht was er eigentlich braucht. Den review hatte ich gestern schon gefunden, allerdings nicht wirklich verstanden wie ich das einbinden muß.

Grüße,
errorsmith
 

hessijens

Well-Known Member
#4
Und ich werde Lügen gestraft. Scheinbar ist was kaputt, denn bei meiner APU2C4 sieht das so aus:

Code:
FreeBSD lagomera.mylink-net.de 11.0-STABLE FreeBSD 11.0-STABLE #12 r316704M: Sun May  7 13:34:35 CEST 2017  root@yogi.mylink-net.de:/usr/obj/usr/src/sys/GENERIC  amd64
root@lagomera:~ # kldstat | grep gpio
13  1 0xffffffff8256b000 45b0  nctgpio.ko
14  2 0xffffffff82570000 9f28  gpiobus.ko
root@lagomera:~ # gpioctl -l
pin 00: 1  GPIO00<IN,OD>
pin 01: 1  GPIO01<IN,OD>
pin 02: 1  GPIO02<IN,OD>
pin 03: 1  GPIO03<IN,OD>
pin 04: 1  GPIO04<IN,OD>
pin 05: 1  GPIO05<IN,OD>
pin 06: 1  GPIO06<IN,OD>
pin 07: 1  GPIO07<IN,OD>
pin 08: 1  GPIO08<IN,OD>
pin 09: 1  GPIO09<IN,OD>
pin 10: 1  GPIO10<IN,OD>
pin 11: 1  GPIO11<IN,OD>
pin 12: 1  GPIO12<IN,OD>
pin 13: 1  GPIO13<IN,OD>
pin 14: 1  GPIO14<IN,OD>
pin 15: 1  GPIO15<IN,OD>
Wie Du siehst habe ich noch 11.0 stable vom Mai mit der Firmware vom 11.03.2016. Es ging zumindest mal.
 

hessijens

Well-Known Member
#5
Alternativ kannst Du nochmal den LED-Patch probieren. Du hast die passenden Kernelquellen installiert? Dann lade mal den RAW Patch des Reviews herunter. Patche die Quellen. unter /usr/src/sys/modules/apuled kannst Du dann mit einem "make" das Modul erzeugen. Achtung es heist nur ".ko", benenne es daher z.B. apuled.ko um! Was passiert wenn Du das zum Kernel lädst?

Code:
root@lagomera:~ #kldload /usr/src/sys/modules/apuled/apuled.ko
apuled0: <APU2> at iomem 0xfed81610-0xfed8161b,0xfed81664-0xfed81667 on isa0
root@lagomera:~ # ls /dev/led
igb0  igb1  igb2  led1  led2  led3
Wie Du sieht führt das zu drei weiteren LED Pfaden, die man mit echo bzw. morse bearbeiten kann.
 

Errorsmith

Kompiliertier
Themenstarter #6
Hi

Ich habe die passenden Quellen installiert: Das System ist frisch augesetzt und ich habe beim Installieren angegeben das er das Paket "src" mit installieren soll. Ein probehalber angestossenes "make buildkernel" läuft auch durch. Scheinbar hat mein Quellbaum allerdings den Treiber noch garnicht drin gehabt: Das Verzeichnis apuled musst ich neu erstellen, dann hat der Patch eine Reihe neuer Dateien erzeugt - diese konnte ich dann mit make auch tatsächlich bauen, das erzeugte modul laden und dann hab ich auch meine LED in /dev/led angezeigt bekommen. Mit echo kann ich die Dinger ein & auschalten, mehr will ich garnicht.

Vielen Dank für Deine Hilfe :-)


Grüße,
errorsmith
 
#7
Hey, falls du noch Interesse daran hast wie man die LED's der APU 2,3,4 ansteuert, dann schreib mir. [Zensiert by Rakor]
 
Zuletzt bearbeitet von einem Moderator:

Errorsmith

Kompiliertier
Themenstarter #9
Das dürfte Spam sein:
"samernst
New Member · 18
Last seen Today at 2:26 PM
JoinedToday at 2:17 PM"


Würd ich ma behaupten...

Grüße,
Errorsmith