mikrocontroller.net

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


Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht 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:
Jan  1 01:01:17 icnova user.debug kernel: kobject: 'holders' (93d7b3a0): kobject_add_internal: parent: 'i2c_core', set: '<NULL>'
Jan  1 01:01:17 icnova user.debug kernel: kobject: 'devices' (93d7b368): kobject_add_internal: parent: 'i2c', set: '<NULL>'
Jan  1 01:01:17 icnova user.debug kernel: kobject: 'drivers' (93d7b328): kobject_add_internal: parent: 'i2c', set: '<NULL>'
Jan  1 01:01:17 icnova user.debug kernel: kobject: 'drivers' (93d7b2e0): kobject_add_internal: parent: 'i2c_core', set: '<NULL>'
Jan  1 01:02:07 icnova user.debug kernel: kobject: 'holders' (93d39460): kobject_add_internal: parent: 'i2c_dev', set: '<NULL>'
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

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab's mal bei mir ausprobiert (mit Original Image im 
Auslieferungszustand):
$ modprobe i2c-core                   
$ modprobe i2c-dev                  
i2c /dev entries driver      loop1            
$ lsmod       
Module                  Size  Used by    Not tainted_kobj_path: path = '/class/vc/vcs20x: devices0:03 ic
i2c_dev                 6884  0                               
i2c_core               21328  1 i2c_dev2         hdb1        mem         ptyp1
$ ls -al /sys/devices/platform/                               
drwxr-xr-x    2 root     root            0 Dec 31 17:01 at32_pm.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 at32_wdt.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 at32ap700x_rtc.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 atmel_pwm.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 atmel_twi.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 atmel_usart.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 atmel_usart.1
drwxr-xr-x    3 root     root            0 Dec 31 17:01 atmel_usba_udc.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 buttons-gpio
drwxr-xr-x    2 root     root            0 Dec 31 17:01 dmaca.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 intc.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 leds-gpio.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 macb.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pdc.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 physmap-flash.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pio.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pio.1
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pio.2
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pio.3
drwxr-xr-x    2 root     root            0 Dec 31 17:01 pio.4
drwxr-xr-x    2 root     root            0 Dec 31 17:01 smc.0
drwxr-xr-x    2 root     root            0 Dec 31 17:01 systc.0
-rw-r--r--    1 root     root         4096 Dec 31 17:01 uevent
$
/sys/class/i2c-dev und /sys/class/i2c-adapter sind leer...

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht 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 :
Usually, i2c devices are controlled by a kernel driver. But it is also
possible to access all devices on an adapter from userspace, through
the /dev interface. You need to load module i2c-dev for this.

Each registered i2c adapter gets a number, counting from 0. You can
examine /sys/class/i2c-dev/ to see what number corresponds to which adapter.
I2C device files are character device files with major device number 89
and a minor device number corresponding to the number assigned as 
explained above. They should be called "i2c-%d" (i2c-0, i2c-1, ..., 
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

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe gerade i2c-dev fest in den Kernel eingebunden, Ergebnis:
# ls -all /sys/class/i2c-dev/
drwxr-xr-x    3 root     root            0 May 13 19:35 .
drwxr-xr-x   15 root     root            0 May 13 19:35 ..
drwxr-xr-x    2 root     root            0 May 13 19:36 i2c-0
#
#
# ls -all /sys/class/i2c-dev/i2c-0/
drwxr-xr-x    2 root     root            0 May 13 19:36 .
drwxr-xr-x    3 root     root            0 May 13 19:35 ..
-r--r--r--    1 root     root         4096 May 13 19:36 dev
lrwxrwxrwx    1 root     root            0 May 13 19:36 device -> ../../../devices/platform/atmel_twi.0
-r--r--r--    1 root     root         4096 May 13 19:36 name
lrwxrwxrwx    1 root     root            0 May 13 19:36 subsystem -> ../../i2c-dev
-rw-r--r--    1 root     root         4096 May 13 19:36 uevent
#
# cat /sys/class/i2c-dev/i2c-0/uevent
MAJOR=89
MINOR=0
PHYSDEVPATH=/devices/platform/atmel_twi.0
PHYSDEVBUS=platform
PHYSDEVDRIVER=atmel_twi
#                  

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 :-(

Autor: SiO2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
.config:308:warning: trying to assign nonexistent symbol PCI_GOBIOS
.config:309:warning: trying to assign nonexistent symbol PCI_GOMMCONFIG
.config:310:warning: trying to assign nonexistent symbol PCI_GODIRECT
.config:311:warning: trying to assign nonexistent symbol PCI_GOANY
.config:312:warning: trying to assign nonexistent symbol PCI_BIOS
.config:313:warning: trying to assign nonexistent symbol PCI_DIRECT
.config:314:warning: trying to assign nonexistent symbol PCI_DOMAINS
.config:315:warning: trying to assign nonexistent symbol PCIEPORTBUS
.config:324:warning: trying to assign nonexistent symbol HOTPLUG_PCI
.config:1047:warning: trying to assign nonexistent symbol EDD
.config:1048:warning: trying to assign nonexistent symbol DELL_RBU
.config:1049:warning: trying to assign nonexistent symbol DCDBAS
.config:1050:warning: trying to assign nonexistent symbol DMIID
.config:1261:warning: trying to assign nonexistent symbol EARLY_PRINTK
.config:1262:warning: trying to assign nonexistent symbol DEBUG_STACKOVERFLOW
.config:1263:warning: trying to assign nonexistent symbol DEBUG_STACK_USAGE
.config:1264:warning: trying to assign nonexistent symbol DEBUG_PAGEALLOC
.config:1265:warning: trying to assign nonexistent symbol DEBUG_RODATA
.config:1266:warning: trying to assign nonexistent symbol DEBUG_RODATA_TEST
.config:1267:warning: trying to assign nonexistent symbol DEBUG_NX_TEST
.config:1268:warning: trying to assign nonexistent symbol 4KSTACKS
.config:1269:warning: trying to assign nonexistent symbol DOUBLEFAULT
.config:1270:warning: trying to assign nonexistent symbol IO_DELAY_TYPE_0X80
.config:1271:warning: trying to assign nonexistent symbol IO_DELAY_TYPE_0XED
.config:1272:warning: trying to assign nonexistent symbol IO_DELAY_TYPE_UDELAY
.config:1273:warning: trying to assign nonexistent symbol IO_DELAY_TYPE_NONE
.config:1274:warning: trying to assign nonexistent symbol IO_DELAY_0X80
.config:1275:warning: trying to assign nonexistent symbol IO_DELAY_0XED
.config:1276:warning: trying to assign nonexistent symbol IO_DELAY_UDELAY
.config:1277:warning: trying to assign nonexistent symbol IO_DELAY_NONE
.config:1278:warning: trying to assign nonexistent symbol DEFAULT_IO_DELAY_TYPE
.config:1279:warning: trying to assign nonexistent symbol DEBUG_BOOT_PARAMS
.config:1280:warning: trying to assign nonexistent symbol CPA_DEBUG
.config:1340:warning: trying to assign nonexistent symbol VIRTUALIZATION
.config:1341:warning: trying to assign nonexistent symbol LGUEST
.config:1342:warning: trying to assign nonexistent symbol VIRTIO_PCI
.config:1343:warning: trying to assign nonexistent symbol VIRTIO_BALLOON
*
* Restart config...
*
*
* System Type and features
*
AVR32 board type
> 1. ATSTK1000 evaluation board (BOARD_ATSTK1000) (NEW)
  2. ATNGW100 Network Gateway (BOARD_ATNGW100) (NEW)
  3. In-Circuit ICNova based board (BOARD_ICNOVA) (NEW)
choice[1-3]: 3
ICNova option
> 1. ICNova without LCD nor 2nd MAC (BOARD_ICNOVA_NONE) (NEW)
  2. ICNova with LCD-Controller (BOARD_ICNOVA_LCDC) (NEW)
  3. ICNova with 2nd Ethernet-MAC (BOARD_ICNOVA_MACB) (NEW)
  4. ICNova Base (BOARD_ICNOVA_BASE) (NEW)
choice[1-4]: 1
Boot loader type
> 1. U-Boot (or similar) bootloader (LOADER_U_BOOT) (NEW)
choice[1]: 1
*
* Atmel AVR32 AP options
*
AT32AP700x static memory bus width
  1. 32 bit (AP700X_32_BIT_SMC) (NEW)
> 2. 16 bit (AP700X_16_BIT_SMC) (NEW)
  3. 8 bit (AP700X_8_BIT_SMC) (NEW)
choice[1-3?]:
GPIO /dev interface (GPIO_DEV) [N/y/?] (NEW) Y
Preemption Model
> 1. No Forced Preemption (Server) (PREEMPT_NONE)
  2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
  3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT)
choice[1-3]: 1
Enable tracing for RCU - currently stats in debugfs (RCU_TRACE) [N/y/?] n
Memory model
> 1. Flat Memory (FLATMEM_MANUAL)
choice[1]: 1
64 bit Memory and IO resources (EXPERIMENTAL) (RESOURCES_64BIT) [N/y/?] n
Ownership trace support (OWNERSHIP_TRACE) [Y/n/?] (NEW)
NMI Debugging (NMI_DEBUGGING) [N/y/?] (NEW)
Synopsys DesignWare DMA Controller support (DW_DMAC) [Y/n/m] (NEW)
Timer frequency
  1. 100 HZ (HZ_100)
> 2. 250 HZ (HZ_250)
  3. 300 HZ (HZ_300)
  4. 1000 HZ (HZ_1000)
choice[1-4?]: 2
Default kernel command line (CMDLINE) [] (NEW)
*
* CPU Frequency scaling
*
CPU Frequency scaling (CPU_FREQ) [Y/n/?] y
  Enable CPUfreq debugging (CPU_FREQ_DEBUG) [Y/n/?] y
  CPU frequency translation statistics (CPU_FREQ_STAT) [N/m/y/?] n
  Default CPUFreq governor
    1. performance (CPU_FREQ_DEFAULT_GOV_PERFORMANCE)
    2. userspace (CPU_FREQ_DEFAULT_GOV_USERSPACE)
    3. ondemand (CPU_FREQ_DEFAULT_GOV_ONDEMAND)
  > 4. conservative (CPU_FREQ_DEFAULT_GOV_CONSERVATIVE)
  choice[1-4?]: 4
  'performance' governor (CPU_FREQ_GOV_PERFORMANCE) [Y/?] y
  'powersave' governor (CPU_FREQ_GOV_POWERSAVE) [N/m/y/?] n
  'userspace' governor for userspace frequency scaling (CPU_FREQ_GOV_USERSPACE) [N/m/y/?] n
Wie macht man das richtig? Vielen Dank schon mal...

Autor: Christian Z. (christianz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende im Kernel-Sourcetree immer "make ARCH=avr32 menuconfig".

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht 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
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

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.