Forum: Mikrocontroller und Digitale Elektronik Grasshopper: Probleme beim laden der Module


von Sebastian M. (izaseba)


Lesenswert?

Hallo,

Ich im Moment damit beschäftigt den Grasshopper richtig kennenzulernen.

Eigentlich bin ich ziemlich begeistert, habe aber das Problem, daß ich 
keine Kernelmodule nachladen kann.

Unter Beitrag "Re: Grasshopper Inbetriebnahme" hab ich schon 
von meinen Problemen beim laden der gpio-keys und evdev berichtet und 
hab mit erstmal so geholfen, daß ich die entsprechenden Treiber fest in 
den Kernel einkompiliert habe.

Allerdings besteht das Problem weiterhin, jetzt wollte ich mit der i2c 
Schnittstelle arbeiten und versuche i2c-core und i2c-dev mit modprobe zu 
laden.
Es scheint auch zu funktionieren, es wird kein Fehler angezeigt ein 
lsmod zeigt, daß sie auch geladen werden, im Ordner /sys/class werden 
Verzeichnisse
i2c-adapter und i2c-dev erzeugt, sie sind leider leer :-(
Im Ordner /sys/devices/platform wird leider nichts erstellt...

wenn man sich die Kernelmeldungen im /var/log/messages anschaut fallen 
folgende Zeilen auf:
1
Jan  1 01:01:17 icnova user.debug kernel: kobject: 'holders' (93d7b3a0): kobject_add_internal: parent: 'i2c_core', set: '<NULL>'
2
Jan  1 01:01:17 icnova user.debug kernel: kobject: 'devices' (93d7b368): kobject_add_internal: parent: 'i2c', set: '<NULL>'
3
Jan  1 01:01:17 icnova user.debug kernel: kobject: 'drivers' (93d7b328): kobject_add_internal: parent: 'i2c', set: '<NULL>'
4
Jan  1 01:01:17 icnova user.debug kernel: kobject: 'drivers' (93d7b2e0): kobject_add_internal: parent: 'i2c_core', set: '<NULL>'
5
Jan  1 01:02:07 icnova user.debug kernel: kobject: 'holders' (93d39460): kobject_add_internal: parent: 'i2c_dev', set: '<NULL>'
6
Jan  1 01:02:07 icnova user.debug kernel: kobject: 'drivers' (93d392e0): kobject_add_internal: parent: 'i2c_dev', set: '<NULL>'

Jetzt bin ich ratlos, hab ich nur das Problem oder ist das allgemein so 
?
Ich habe meine Imagedatei mit der Umgebung von der icnova_base_cd 
erstellt.
Ist da vielleicht irgendwas nicht richtig ?

Könnte jemand bitte versuchen die Module zu laden und nachschauen, was 
sich in /sys/devices/platform tut ?

Gruß Sebastian

von gast (Gast)


Lesenswert?

Hallo,
ich hab's mal bei mir ausprobiert (mit Original Image im 
Auslieferungszustand):
1
$ modprobe i2c-core                   
2
$ modprobe i2c-dev                  
3
i2c /dev entries driver      loop1            
4
$ lsmod       
5
Module                  Size  Used by    Not tainted_kobj_path: path = '/class/vc/vcs20x: devices0:03 ic
6
i2c_dev                 6884  0                               
7
i2c_core               21328  1 i2c_dev2         hdb1        mem         ptyp1
8
$ ls -al /sys/devices/platform/                               
9
drwxr-xr-x    2 root     root            0 Dec 31 17:01 at32_pm.0
10
drwxr-xr-x    2 root     root            0 Dec 31 17:01 at32_wdt.0
11
drwxr-xr-x    2 root     root            0 Dec 31 17:01 at32ap700x_rtc.0
12
drwxr-xr-x    2 root     root            0 Dec 31 17:01 atmel_pwm.0
13
drwxr-xr-x    2 root     root            0 Dec 31 17:01 atmel_twi.0
14
drwxr-xr-x    2 root     root            0 Dec 31 17:01 atmel_usart.0
15
drwxr-xr-x    2 root     root            0 Dec 31 17:01 atmel_usart.1
16
drwxr-xr-x    3 root     root            0 Dec 31 17:01 atmel_usba_udc.0
17
drwxr-xr-x    2 root     root            0 Dec 31 17:01 buttons-gpio
18
drwxr-xr-x    2 root     root            0 Dec 31 17:01 dmaca.0
19
drwxr-xr-x    2 root     root            0 Dec 31 17:01 intc.0
20
drwxr-xr-x    2 root     root            0 Dec 31 17:01 leds-gpio.0
21
drwxr-xr-x    2 root     root            0 Dec 31 17:01 macb.0
22
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pdc.0
23
drwxr-xr-x    2 root     root            0 Dec 31 17:01 physmap-flash.0
24
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pio.0
25
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pio.1
26
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pio.2
27
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pio.3
28
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pio.4
29
drwxr-xr-x    2 root     root            0 Dec 31 17:01 smc.0
30
drwxr-xr-x    2 root     root            0 Dec 31 17:01 systc.0
31
-rw-r--r--    1 root     root         4096 Dec 31 17:01 uevent
32
$
/sys/class/i2c-dev und /sys/class/i2c-adapter sind leer...

von Sebastian M. (izaseba)


Lesenswert?

Hallo  gast (Gast),

Danke, daß Du Dir die Mühe gemacht hast und vor allem mit der original 
Image, die hat bei mir leider keine 2 Stunden gehalten ;-)

Jetzt stellt sich die Frage: ist das OK so, oder nicht ?
Warum ist die /sys/class/i2c-dev leer ?

Ich zitiere mal aus der i2c-dev Doku :
1
Usually, i2c devices are controlled by a kernel driver. But it is also
2
possible to access all devices on an adapter from userspace, through
3
the /dev interface. You need to load module i2c-dev for this.
4
5
Each registered i2c adapter gets a number, counting from 0. You can
6
examine /sys/class/i2c-dev/ to see what number corresponds to which adapter.
7
I2C device files are character device files with major device number 89
8
and a minor device number corresponding to the number assigned as 
9
explained above. They should be called "i2c-%d" (i2c-0, i2c-1, ..., 
10
i2c-10, ...). All 256 minor device numbers are reserved for i2c.

So wie ich das verstehe, sollen unter /sys/class/i2c-dev alle i2c 
Adapter eingetragen werden, die gefunden wurden und die geben mir die 
Minor Nummer.

Das selbe Problem hatte ich mit gpio-keys es wurde auch nichts 
eingetragen.

Ich glaube hier ist ein Linux Guru gefragt...
Oder mach ich mir das Leben unnötig schwer und übersehe ich etwas ?
Muß dem Modul vielleicht ein Parameter mitgegeben werden ?


Gruß Sebastian

von Sebastian M. (izaseba)


Lesenswert?

Hallo,

Ich habe gerade i2c-dev fest in den Kernel eingebunden, Ergebnis:
1
# ls -all /sys/class/i2c-dev/
2
drwxr-xr-x    3 root     root            0 May 13 19:35 .
3
drwxr-xr-x   15 root     root            0 May 13 19:35 ..
4
drwxr-xr-x    2 root     root            0 May 13 19:36 i2c-0
5
#
6
#
7
# ls -all /sys/class/i2c-dev/i2c-0/
8
drwxr-xr-x    2 root     root            0 May 13 19:36 .
9
drwxr-xr-x    3 root     root            0 May 13 19:35 ..
10
-r--r--r--    1 root     root         4096 May 13 19:36 dev
11
lrwxrwxrwx    1 root     root            0 May 13 19:36 device -> ../../../devices/platform/atmel_twi.0
12
-r--r--r--    1 root     root         4096 May 13 19:36 name
13
lrwxrwxrwx    1 root     root            0 May 13 19:36 subsystem -> ../../i2c-dev
14
-rw-r--r--    1 root     root         4096 May 13 19:36 uevent
15
#
16
# cat /sys/class/i2c-dev/i2c-0/uevent
17
MAJOR=89
18
MINOR=0
19
PHYSDEVPATH=/devices/platform/atmel_twi.0
20
PHYSDEVBUS=platform
21
PHYSDEVDRIVER=atmel_twi
22
#

Wenn das so richtig ist...

Als Modul geht nicht, im Kernel geht ?

Ich wollte eigentlich schon alles modular belassen und keinen monolithen 
Kernel haben :-(

Naja, dann werde ich erstmal so weitermachen, ich habe mir schon alle 
Kernel Einstellungen angeguckt und finde nichts, wo man sagen könnte, 
das stimmt nicht, dafür habe ich leider zu wenig Erfahrung :-(

von SiO2 (Gast)


Lesenswert?

Nen Monilithischer Kernel ist es trotz Modulen. Module bringen 
eigentlich nur was, wenn die Treiber nicht ständig bnenutzt werden oder 
aus anderen Gründen zur Laufzeit auch mal raus sollen.

von Sebastian M. (izaseba)


Lesenswert?

Hallo  SiO2,

Danke für die Antwort, gut Ok, im Endeffekt ist es mir egal, ob die 
Treiber fest im Kernel sitzen, oder als Module nachladbar sind,
trotzdem ändert es nichts an der Tatsache, daß das laden der Treiber 
fehlschlägt :-(

Gruß Sebastian

von gast (Gast)


Lesenswert?

Hallo,
wie kompilierst du eigentlich nur den Kernel neu? Ich habe zuerst mit 
'make' in '/ICnova_base/' die komplette Toolchain, den Kernel, die 
Programme und das Rootfilesystem erstellt und anschließend in 
'/build_avr32/linux-2.6.24-icnova/' mit 'make menuconfig' die I2C 
Treiber mit Y (also in den Kernel, kein Modul) ausgewählt. Wenn ich dann 
aber mit 'make' in '/ICnova_base/' den Kernel kompilieren und in das 
Rootimage packen will, will er alle Kernel Optionen neu konfigurieren:
1
.config:308:warning: trying to assign nonexistent symbol PCI_GOBIOS
2
.config:309:warning: trying to assign nonexistent symbol PCI_GOMMCONFIG
3
.config:310:warning: trying to assign nonexistent symbol PCI_GODIRECT
4
.config:311:warning: trying to assign nonexistent symbol PCI_GOANY
5
.config:312:warning: trying to assign nonexistent symbol PCI_BIOS
6
.config:313:warning: trying to assign nonexistent symbol PCI_DIRECT
7
.config:314:warning: trying to assign nonexistent symbol PCI_DOMAINS
8
.config:315:warning: trying to assign nonexistent symbol PCIEPORTBUS
9
.config:324:warning: trying to assign nonexistent symbol HOTPLUG_PCI
10
.config:1047:warning: trying to assign nonexistent symbol EDD
11
.config:1048:warning: trying to assign nonexistent symbol DELL_RBU
12
.config:1049:warning: trying to assign nonexistent symbol DCDBAS
13
.config:1050:warning: trying to assign nonexistent symbol DMIID
14
.config:1261:warning: trying to assign nonexistent symbol EARLY_PRINTK
15
.config:1262:warning: trying to assign nonexistent symbol DEBUG_STACKOVERFLOW
16
.config:1263:warning: trying to assign nonexistent symbol DEBUG_STACK_USAGE
17
.config:1264:warning: trying to assign nonexistent symbol DEBUG_PAGEALLOC
18
.config:1265:warning: trying to assign nonexistent symbol DEBUG_RODATA
19
.config:1266:warning: trying to assign nonexistent symbol DEBUG_RODATA_TEST
20
.config:1267:warning: trying to assign nonexistent symbol DEBUG_NX_TEST
21
.config:1268:warning: trying to assign nonexistent symbol 4KSTACKS
22
.config:1269:warning: trying to assign nonexistent symbol DOUBLEFAULT
23
.config:1270:warning: trying to assign nonexistent symbol IO_DELAY_TYPE_0X80
24
.config:1271:warning: trying to assign nonexistent symbol IO_DELAY_TYPE_0XED
25
.config:1272:warning: trying to assign nonexistent symbol IO_DELAY_TYPE_UDELAY
26
.config:1273:warning: trying to assign nonexistent symbol IO_DELAY_TYPE_NONE
27
.config:1274:warning: trying to assign nonexistent symbol IO_DELAY_0X80
28
.config:1275:warning: trying to assign nonexistent symbol IO_DELAY_0XED
29
.config:1276:warning: trying to assign nonexistent symbol IO_DELAY_UDELAY
30
.config:1277:warning: trying to assign nonexistent symbol IO_DELAY_NONE
31
.config:1278:warning: trying to assign nonexistent symbol DEFAULT_IO_DELAY_TYPE
32
.config:1279:warning: trying to assign nonexistent symbol DEBUG_BOOT_PARAMS
33
.config:1280:warning: trying to assign nonexistent symbol CPA_DEBUG
34
.config:1340:warning: trying to assign nonexistent symbol VIRTUALIZATION
35
.config:1341:warning: trying to assign nonexistent symbol LGUEST
36
.config:1342:warning: trying to assign nonexistent symbol VIRTIO_PCI
37
.config:1343:warning: trying to assign nonexistent symbol VIRTIO_BALLOON
38
*
39
* Restart config...
40
*
41
*
42
* System Type and features
43
*
44
AVR32 board type
45
> 1. ATSTK1000 evaluation board (BOARD_ATSTK1000) (NEW)
46
  2. ATNGW100 Network Gateway (BOARD_ATNGW100) (NEW)
47
  3. In-Circuit ICNova based board (BOARD_ICNOVA) (NEW)
48
choice[1-3]: 3
49
ICNova option
50
> 1. ICNova without LCD nor 2nd MAC (BOARD_ICNOVA_NONE) (NEW)
51
  2. ICNova with LCD-Controller (BOARD_ICNOVA_LCDC) (NEW)
52
  3. ICNova with 2nd Ethernet-MAC (BOARD_ICNOVA_MACB) (NEW)
53
  4. ICNova Base (BOARD_ICNOVA_BASE) (NEW)
54
choice[1-4]: 1
55
Boot loader type
56
> 1. U-Boot (or similar) bootloader (LOADER_U_BOOT) (NEW)
57
choice[1]: 1
58
*
59
* Atmel AVR32 AP options
60
*
61
AT32AP700x static memory bus width
62
  1. 32 bit (AP700X_32_BIT_SMC) (NEW)
63
> 2. 16 bit (AP700X_16_BIT_SMC) (NEW)
64
  3. 8 bit (AP700X_8_BIT_SMC) (NEW)
65
choice[1-3?]:
66
GPIO /dev interface (GPIO_DEV) [N/y/?] (NEW) Y
67
Preemption Model
68
> 1. No Forced Preemption (Server) (PREEMPT_NONE)
69
  2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
70
  3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT)
71
choice[1-3]: 1
72
Enable tracing for RCU - currently stats in debugfs (RCU_TRACE) [N/y/?] n
73
Memory model
74
> 1. Flat Memory (FLATMEM_MANUAL)
75
choice[1]: 1
76
64 bit Memory and IO resources (EXPERIMENTAL) (RESOURCES_64BIT) [N/y/?] n
77
Ownership trace support (OWNERSHIP_TRACE) [Y/n/?] (NEW)
78
NMI Debugging (NMI_DEBUGGING) [N/y/?] (NEW)
79
Synopsys DesignWare DMA Controller support (DW_DMAC) [Y/n/m] (NEW)
80
Timer frequency
81
  1. 100 HZ (HZ_100)
82
> 2. 250 HZ (HZ_250)
83
  3. 300 HZ (HZ_300)
84
  4. 1000 HZ (HZ_1000)
85
choice[1-4?]: 2
86
Default kernel command line (CMDLINE) [] (NEW)
87
*
88
* CPU Frequency scaling
89
*
90
CPU Frequency scaling (CPU_FREQ) [Y/n/?] y
91
  Enable CPUfreq debugging (CPU_FREQ_DEBUG) [Y/n/?] y
92
  CPU frequency translation statistics (CPU_FREQ_STAT) [N/m/y/?] n
93
  Default CPUFreq governor
94
    1. performance (CPU_FREQ_DEFAULT_GOV_PERFORMANCE)
95
    2. userspace (CPU_FREQ_DEFAULT_GOV_USERSPACE)
96
    3. ondemand (CPU_FREQ_DEFAULT_GOV_ONDEMAND)
97
  > 4. conservative (CPU_FREQ_DEFAULT_GOV_CONSERVATIVE)
98
  choice[1-4?]: 4
99
  'performance' governor (CPU_FREQ_GOV_PERFORMANCE) [Y/?] y
100
  'powersave' governor (CPU_FREQ_GOV_POWERSAVE) [N/m/y/?] n
101
  'userspace' governor for userspace frequency scaling (CPU_FREQ_GOV_USERSPACE) [N/m/y/?] n
Wie macht man das richtig? Vielen Dank schon mal...

von Christian Z. (christianz)


Lesenswert?

Ich verwende im Kernel-Sourcetree immer "make ARCH=avr32 menuconfig".

von Sebastian M. (izaseba)


Lesenswert?

Hallo gast (Gast) ,

Die Ausgabe mit frage<-> Antwort Spielchen sieht mir eher nach make 
config aus...

Ich tipe im, sag ich mal "Hauptverzeichnis" also /ICnova_base
1
make linux26-menuconfig

Und schon kannst Du den Kernel einstellen :-)

Beim verlassen der Oberfläche sagst Du Yes, wenn er nachfragt, ob die 
Konfiguration gespeichert werden soll.
Anschließend noch ein make und der Kernel sollte neu übersetzt werden.

Tja, jetzt gibt es wohl noch die Möglichkeit rootfs.avr32.jffs2 komplett 
zu ersetzen, ich kopiere allerdings nur den Kernelimage .
Der befindet sich dann unter

build_avr32/linux-2.6.24-icnova/arch/avr32/boot/images/uImage

und muß in /boot Verzeichnis auf den Grasshopper.

Die Angaben sind ohne Gewähr, solltest Du Dir den Flash auf dem Hopper 
zerschiessen oder sonstige Kernelpanics erhalten, mach mich bitte nicht 
dafür verantwortlich.

Gruß Sebastian

von gast (Gast)


Lesenswert?

Vielen Dank für eure Antworten! Ich wusste nicht, dass man das im 
"rootdir" auch mit linux26-menuconfig direkt konfigurieren kann...

>Die Angaben sind ohne Gewähr, solltest Du Dir den Flash auf dem Hopper
>zerschiessen oder sonstige Kernelpanics erhalten, mach mich bitte nicht
>dafür verantwortlich.

Na ja, kernel panics sind nicht das Problem, solange es nicht das U-Boot 
erwischt ;-)

von Sebastian M. (izaseba)


Lesenswert?

gast wrote:
> Na ja, kernel panics sind nicht das Problem, solange es nicht das U-Boot
> erwischt ;-)

Sag das nicht zu laut, wenn es sich um die original U-Boot Version 
handelt kann es durchaus Probleme bedeuten ;-)

>Ich wusste nicht, dass man das im
>"rootdir" auch mit linux26-menuconfig direkt konfigurieren kann...

Tja, es gibt noch vieles unerforschtes...

Einen hab ich noch,

make busybox-menuconfig

Leider wurde Busybox mit einem einfachem make nicht neu gebaut.
Ich mußte make clean, make busybox-menuconfig, make machen, damit die 
Änderungen übernommen wurden.

Gruß Sebastian

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.