Forum: Mikrocontroller und Digitale Elektronik Mini2440 Hardware-Treiber


von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

habe es inzwischen geschafft U-Boot auf dem Mini2440 zum laufen zu 
bekommen, und Kernel + Root FS über NFS zu booten.

Das ganze habe ich mit dem aktuellen buildroot gebaut. Kernel ist der

linux-2.6.32.2-mini2440_20100113

Ich habe LED-Treiber und auch sysfs im Kernel freigeschaltet, allerdings 
ist der Ordner /sys/class/leds leer, und auch in /dev gibt es keine 
Datei zum ansteuern der LEDs, so wie es hier im Artikel beschrieben ist.

Weiss jemand welche Treiber man da aktivieren muss bzw. was man dazu 
noch braucht - noch gehen weder LEDs noch Displayhintergrund.

Gruss Mixer

von Nickname (Gast)


Lesenswert?

Ich würde mal sagen, in der Kernel-config sollte folgende Zeile 
enthalten sein. Unter Character devices, aber nur in Arm-Friendly-Kernel

CONFIG_LEDS_MINI2440=y

Der Treiber selber liegt unter 
/linux-2.6.32.2/drivers/char/mini2440_leds.c

alternativ könnte es eventuell auch Treiber des Plain-Kernel tun :

/linux-2.6.32.2/drivers/char/leds-s3c24xx.c

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,
1
$ cat linux-2.6.32.2.config | grep CONFIG_LEDS_*
2
CONFIG_LEDS_MINI2440=y

der /linux-2.6.32.2/drivers/char/mini2440_leds.c ist auch drin, 
allerdings find ich nirgends was wo ich die LEDs ansprechen kann!

Gruss Mixer

von Nickname (Gast)


Lesenswert?

Hi,

ich habe hier char-Device (FriendlyArm-Kernel)

#> ls -Al /dev/leds
crw-rw----    1 root     root       10,  62 Apr 13  2011 /dev/leds

sowie in Sample-Verzeichnis der DVD des mini2440 liegt ein Beispiel dazu 
:
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <unistd.h>
4
#include <sys/ioctl.h>
5
6
int main(int argc, char **argv)
7
{
8
  int on;
9
  int led_no;
10
  int fd;
11
  if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 || sscanf(argv[2],"%d", &on) != 1 ||
12
      on < 0 || on > 1 || led_no < 0 || led_no > 3) {
13
    fprintf(stderr, "Usage: leds led_no 0|1\n");
14
    exit(1);
15
  }
16
  fd = open("/dev/leds0", 0);
17
  if (fd < 0) {
18
    fd = open("/dev/leds", 0);
19
  }
20
  if (fd < 0) {
21
    perror("open device leds");
22
    exit(1);
23
  }
24
  ioctl(fd, on, led_no);
25
  close(fd);
26
  return 0;
27
}

ansonsten im vanilla-Kernel müsste über folgenden Weg gehen :
1
    cd /sys/devices/platform/s3c24xx_led.5/leds/backlight
2
    echo 0 > brightness #turns the backlight off
3
    echo 255 > brightness #turns the backlight on
Quelle : 
http://www.electronics.diycinema.co.uk/embedded/mini2440/controlling-the-mini2440-system-leds/

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

habe jetzt nochmal die Standard-Config, die in buildroot dabei ist 
eingespielt und lediglich Root-FS über NFS und das Terminal dazu 
aktiviert.

Beim booten kommen auch folgende Meldungen:
1
[...]
2
leds  initialized
3
Hello, Mini2440 module is installed !
4
buttons  initialized
5
pwm  initialized
6
adc  initialized
7
[...]

Wenn ich allerdings in /dev nachschaue:
1
# cd dev/
2
# ls -lsa
3
total 20
4
   4 drwxr-xr-x    6 root     root          4096 Apr 13  2011 .
5
   4 drwxr-xr-x   16 root     root          4096 Apr 13  2011 ..
6
   [...]
7
   0 crw-rw-rw-    1 root     root       89,   0 Apr 13  2011 i2c-0
8
   0 crw-rw-rw-    1 root     root       89,   1 Apr 13  2011 i2c-1
9
   0 crw-rw-rw-    1 root     root       89,   2 Apr 13  2011 i2c-2
10
   0 crw-rw-rw-    1 root     root       89,   3 Apr 13  2011 i2c-3
11
   4 drwxr-xr-x    2 root     root          4096 Apr 13  2011 input
12
   0 crw-r-----    1 root     root        1,   2 Apr 13  2011 kmem
13
   0 lrwxrwxrwx    1 root     root            10 Apr 13  2011 log -> ../tmp/log
14
   0 brw-r-----    1 root     root        7,   0 Apr 13  2011 loop0
15
   0 brw-r-----    1 root     root        7,   1 Apr 13  2011 loop1
16
   0 crw-r-----    1 root     root        1,   1 Apr 13  2011 mem
17
   0 crw-r-----    1 root     root       90,   0 Apr 13  2011 mtd0
18
   0 crw-r-----    1 root     root       90,   2 Apr 13  2011 mtd1
19
   0 crw-r-----    1 root     root       90,   4 Apr 13  2011 mtd2
20
   0 crw-r-----    1 root     root       90,   6 Apr 13  2011 mtd3
21
   0 brw-r-----    1 root     root       31,   0 Apr 13  2011 mtdblock0
22
   0 brw-r-----    1 root     root       31,   1 Apr 13  2011 mtdblock1
23
   0 brw-r-----    1 root     root       31,   2 Apr 13  2011 mtdblock2
24
   0 brw-r-----    1 root     root       31,   3 Apr 13  2011 mtdblock3
25
[...]

und in /sys/class:
1
# cd /sys/class/
2
# ls -lsa
3
total 0
4
   0 drwxr-xr-x   23 root     root             0 Dec 31 17:00 .
5
   0 drwxr-xr-x   11 root     root             0 Dec 31 17:00 ..
6
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 bdi
7
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 block
8
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 bsg
9
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 firmware
10
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 gpio
11
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 graphics
12
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 i2c-dev
13
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 input
14
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 mem
15
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 misc
16
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 mmc_host
17
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 net
18
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 rtc
19
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 scsi_device
20
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 scsi_disk
21
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 scsi_generic
22
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 scsi_host
23
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 sound
24
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 tty
25
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 vc
26
   0 drwxr-xr-x    2 root     root             0 Dec 31 17:00 vtconsole

Also nirgends eine LED zu finden, obwohl im Kernel-Config steht:
1
$ cat board/friendlyarm/mini2440/linux-2.6.32.2.config | grep CONFIG_LEDS*
2
CONFIG_LEDS_MINI2440=y

Habe jetzt in /sys/devices/virtual/misc/ einen Ordner mit LEDs gefunden, 
da ist allerdings nur folgendes drin:
1
# ls
2
dev        subsystem  uevent

was anfangen kann ich damit aber auch nicht!?
Muss ich da irgendwas noch zuerst initialisieren???

Gruss Mixer

von Nickname (Gast)


Lesenswert?

Hi,

meine letzte Idee wäre noch das händische Anlegen des Device-Node

mknod -m 0660 /dev/leds c 10 62

und testen ob der Zugriff per obigen led Programm funktioniert.

von Nickname (Gast)


Angehängte Dateien:

Lesenswert?

Anbei mal die LED-Testprogamme vom mini2440-qtopia_qt4-image

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

den Device-Node kann ich anlegen, das Programm funktioniert auch - 
allerdings die LEDs werden nicht verändert!

Ich habe sysfs im Kernel aktiviert, in den Bootmeldungen kommt - wie 
oben beschrieben - dass die LEDs initialisiert werden, es gibt einen 
Ordner
/sys/class/leds aber der ist hald leer.

Jemand noch nen Tipp woran es liegen kann??

Gruss

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

denke es liegt irgendwo an der Kernel-Konfiguration.

Den sysfs-Treiber habe ich aktiviert, und auch der Ordner 
/sys/class/leds wird erstellt.

Liegt es evtl. daran, dass ich das Filesystem über NFS hole?
Muss ich da noch extra was einschalten ausser, dass er das Root FS über 
NFS holen soll?

Busybox & Co haben damit ja nix zu tun oder?

Gruss

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

Jetzt funktioniert das mit dem manuellen Anlegen des Device-Nodes.
Wenn ich jetzt aber genau so die Nodes für adc, pwm, backlight und 
buttons anlege dann gehen die nicht.

Muss ich die anderst anlegen??

Grüsse

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

hat keiner grad n funktionierendes MINI2440 rumliegen und kann mir die 
Ausgabe von
1
# ls -lsa /dev
posten??

Würde mir eventuell schon weiterhelfen!

Grüsse

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.