1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Kernel modifizieren /Module einbauen /USB

Dieses Thema im Forum "HTC Flyer Forum" wurde erstellt von Kaschina, 01.01.2012.

  1. Kaschina, 01.01.2012 #1
    Kaschina

    Kaschina Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    01.01.2012
    Hallo,

    ich hoffe, mir kann jemand weiterhelfen (Überraschung..):
    Ich habe versucht, einen Flyer-Kernel (Honeycomb) so umzubauen, dass er einen angehängte FTDI-Chip erkennt.
    Benutzt habe ich dafür die Anleitung von ftdi (ganz unten...).
    Soweit so gut, nachdem ich im Makefile die Version korrigiert habe, kam nicht mehr die Exec-format-error Fehlermeldung, sondern mittlerweile nur noch "no such file or directory"
    dmesg liefert dann, dass ftdi_sio.ko und usbserial.ko unbekannt wären.
    für ftdi_sio.ko:
    insmod ftdi_sio.ko
    =>
    <4>[15020.884185] ftdi_sio: Unknown symbol usb_serial_handle_sysrq_char (err 0)
    <4>[15020.887756] ftdi_sio: Unknown symbol usb_serial_disconnect (err 0)
    <4>[15020.891906] ftdi_sio: Unknown symbol usb_serial_generic_open (err 0)
    <4>[15020.894104] ftdi_sio: Unknown symbol usb_serial_generic_close (err 0)
    <4>[15020.901580] ftdi_sio: Unknown symbol usb_serial_generic_unthrottle (err 0)
    <4>[15020.901916] ftdi_sio: Unknown symbol usb_serial_handle_break (err 0)
    <4>[15020.902496] ftdi_sio: Unknown symbol usb_serial_generic_throttle (err 0)
    <4>[15020.903106] ftdi_sio: Unknown symbol usb_serial_probe (err 0)
    <4>[15020.903381] ftdi_sio: Unknown symbol usb_serial_register (err 0)
    <4>[15020.903747] ftdi_sio: Unknown symbol usb_serial_deregister (err 0)


    Beim Googlen habe ich bisher nichts brauchbares gefunden - bzw bis hierher habe ich mich durchgehangelt, aber momentan bin ich mit meinem Latein und Suchkünsten am Ende.

    Müssen noch zusätzliche "Sachen" eingebunden werden?
    Prinzipiell scheint es mit dem Gerät ja möglich zu sein...

    Es wäre sehr sehr lieb, wenn mir jemand weiterhelfen könnte! Mittlerweile bin ich auch nur gelinde genervt :)

    Kaschina.
     
  2. wembley, 02.01.2012 #2
    wembley

    wembley Junior Mitglied

    Beiträge:
    34
    Erhaltene Danke:
    1
    Registriert seit:
    28.03.2010
    Phone:
    Motorola Milestone
    Die sind nicht unbekannt, sondern beim Versuch die Module zu laden kommt ein Unknown symbol. Die Module passen nicht zum Kernel (falsche Version oder falscher Compiler). Gruß wembley
     
  3. Kaschina, 02.01.2012 #3
    Kaschina

    Kaschina Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    01.01.2012
    Hmm,
    ich habe den Kernel von der Htcpage benutzt, Honeycomb für das Flyer.
    Hast du konkrete Vorschläge oder eine Hilfestellung für mich um das endlich hinzubekommen?

    Und natürlich: vielen vielen vielen dank für deine Antwort!!

    Kaschina
     
  4. wembley, 02.01.2012 #4
    wembley

    wembley Junior Mitglied

    Beiträge:
    34
    Erhaltene Danke:
    1
    Registriert seit:
    28.03.2010
    Phone:
    Motorola Milestone
    Hi, mir ist nicht ganz klar, wie Du vorgegangen bist. Der Kernel ist ja sicherlich der im ROM enthaltene (nach HC update , uname -a , bei mir 2.6.35.10-g6ea054a vom 3.2'er prerelease)? Die Module erstellst Du wo und mit welchen Quellen? Gruß wembley
     
  5. Kaschina, 03.01.2012 #5
    Kaschina

    Kaschina Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    01.01.2012
    Genau.
    Von hier hab ich den Flyer Kernel geholt und nach Anleitung der FTDI-Homepage mit menuconfig modifiziert; in der Makefile habe ich die Extraversion Nummer abgeändert - vorher kam der "Exec format error" Fehler, wenn ich die Module in den Kernel einbinden wollte. (mit insmod und modprobe)
    Verwendet habe ich dafür Ubuntu 10.4
     
  6. wembley, 03.01.2012 #6
    wembley

    wembley Junior Mitglied

    Beiträge:
    34
    Erhaltene Danke:
    1
    Registriert seit:
    28.03.2010
    Phone:
    Motorola Milestone
    ok,

    hast Du eine neue config Datei erstellt (lag früher mal in der Wurzel der kernelquellen als .config scheint HTC nicht zu liefern!) oder hasst Du die vom Device gezogen und da als .config abgelegt? Auf meinem Flyer liegt die Datei unter /proc/config.gz. Mit adb pull /proc/config.gz ziel holen. Unter linux mit gzip -d config.gz auspacken. Sollte dann in etwa so aus sehen:
    #
    # Automatically generated make config: don't edit
    # Linux kernel version: 2.6.35.10
    # Thu Oct 27 23:31:20 2011
    #
    CONFIG_ARM=y
    CONFIG_SYS_SUPPORTS_APM_EMULATION=y
    CONFIG_GENERIC_GPIO=y
    CONFIG_GENERIC_TIME=y
    # CONFIG_ARCH_USES_GETTIMEOFFSET is not set
    CONFIG_GENERIC_CLOCKEVENTS=y
    CONFIG_HAVE_PROC_CPU=y
    CONFIG_GENERIC_HARDIRQS=y
    CONFIG_STACKTRACE_SUPPORT=y
    CONFIG_HAVE_LATENCYTOP_SUPPORT=y
    CONFIG_LOCKDEP_SUPPORT=y
    CONFIG_TRACE_IRQFLAGS_SUPPORT=y
    CONFIG_HARDIRQS_SW_RESEND=y
    CONFIG_GENERIC_IRQ_PROBE=y
    CONFIG_RWSEM_XCHGADD_ALGORITHM=y
    CONFIG_ARCH_HAS_CPUFREQ=y
    CONFIG_GENERIC_HWEIGHT=y
    CONFIG_GENERIC_CALIBRATE_DELAY=y
    CONFIG_NEED_DMA_MAP_STATE=y
    CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
    CONFIG_VECTORS_BASE=0xffff0000
    CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
    CONFIG_CONSTRUCTORS=y

    #
    # General setup
    .
    .
    .
    Die würde ich als Grundlage nehmen, bevor ich ein menuconfig mache!

    Wenn Du mal in der Datei suchst z.B.
    ~$ cat config | grep USB_SUPPORT
    CONFIG_USB_SUPPORT=y
    ~$
    also USB ist ein.
    ~$ cat config | grep FTDI
    # CONFIG_USB_FTDI_ELAN is not set
    ~$
    FTDI ist aus wird über menuconfig aktiviert.

    Dann noch prüfen ob der gcc die richtige Version hat:
    adb shell
    # cat /proc/version
    Linux version 2.6.35.10-g6ea054a (htc-kernel@and18-2) (gcc version 4.4.0 (GCC) ) #1 PREEMPT Thu Oct 27 23:34:44 CST 2011
    #
    Mit der Version in deiner Entwicklungsumgebung vergleichen. Hab leider keine hier
    Sonst bin ich auch erst mal ratlos.

    Gruß

    wembley
     
  7. Kaschina, 03.01.2012 #7
    Kaschina

    Kaschina Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    01.01.2012
    Nochmals danke fürs Zeit nehmen!

    Ja, die config.gz habe ich aus dem Flyer genommen.

    Der Rest (also die cat grep Befehle) sehen bei mir genauso aus.
    Und dann "zum Glück" doch noch der Stolperstein:
    Ich versteh es ehrlichgesagt überhaupt nicht:
    wenn ich in die Makefile geh, sieht der Kopf so aus:
    HTML:
    VERSION = 2
    PATCHLEVEL = 6
    SUBLEVEL = 35
    EXTRAVERSION = .10-g6ea054a
    NAME = Yokohama
    
    Extraversion habe ich von .10 abgeändert.

    Aber wenn ich in meinem "neuen Kernel" die Version überprüfe (also cat /proc/version)
    kommt:
    HTML:
    root@SirRodriguez:~/flyer-2.6.35-hc-mr-6ea054a# cat /proc/version
    Linux version 2.6.35-31-generic (buildd@crested) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #63-Ubuntu SMP Mon Nov 28 19:29:10 UTC 2011
    root@SirRodriguez:~/flyer-2.6.35-hc-mr-6ea054a# 
    
    Zur Kontrolle, mein momentaner Kernel:
    HTML:
    Linux version 2.6.35.10-g6ea054a (htc-kernel@and18-2) (gcc version 4.4.0 (GCC) ) #1 PREEMPT Wed Nov 16 07:23:05 CST 2011
    Damit habe ich dann zu früh gebrüllt, dass die Version stimmt.
    Verringert aber nicht die Fragezeichen:
    Ich habe doch die offizielle Kernel-Source verwendet, warum stimmt die dann denn nicht?
     
  8. wembley, 03.01.2012 #8
    wembley

    wembley Junior Mitglied

    Beiträge:
    34
    Erhaltene Danke:
    1
    Registriert seit:
    28.03.2010
    Phone:
    Motorola Milestone
    wo ist das:

    root@SirRodriguez:~/flyer-2.6.35-hc-mr-6ea054a# cat /proc/version



    in deinem linux oder auf dem Flyer? Das ist doch der Kernel, mit dem das Linux läuft! der hat ja nix mit dem Compilierten Modulen zu tun! oder?
     
  9. Kaschina, 03.01.2012 #9
    Kaschina

    Kaschina Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    01.01.2012
    Dann einmal ein großes Autsch. Ich hab gedacht, ich könnte das so auch sehen.
    (ja, war auf dem Linuxrechner)

    Ok, aber dann wieder einen Schritt zurück:
    Was in der Makefile steht, ist doch richtig?
    ?
     
  10. wembley, 03.01.2012 #10
    wembley

    wembley Junior Mitglied

    Beiträge:
    34
    Erhaltene Danke:
    1
    Registriert seit:
    28.03.2010
    Phone:
    Motorola Milestone
    denke ja!

    welchen gcc hast du in der Entwicklungsumgebung? Der ubuntu-kernel ist ja mit gcc version 4.4.5 kompiliert, also sollt unter ubuntu auch 4.4.5 installiert sein!

    In der Entwicklungsumgebung brauchst aber 4.4.0, da der HTC-kernel ja damit compiliert wurde!
     
  11. Kaschina, 03.01.2012 #11
    Kaschina

    Kaschina Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    01.01.2012
    Ich versteh nichts mehr---

    Ich habe den heruntergeladenen Kernel entpackt, hab meine config.gz reingepackt, habe mit menuconfig die Treiber für FTDI-Geräte "enabled" und abschließend "make modules" ausgeführt.
    Selbergeschrieben habe ich gar nichts und somit doch auch keine Entwicklungsumgebung gebraucht?
     
  12. wembley, 03.01.2012 #12
    wembley

    wembley Junior Mitglied

    Beiträge:
    34
    Erhaltene Danke:
    1
    Registriert seit:
    28.03.2010
    Phone:
    Motorola Milestone
    dann hast du den Compiler der mit dem Linux geliefert wird benutzt.

    Bei mir z. B.:
    jm@olymp:~$ gcc -v
    Es werden eingebaute Spezifikationen verwendet.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6.1/lto-wrapper
    Ziel: x86_64-linux-gnu
    Konfiguriert mit: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.1-9ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Thread-Modell: posix
    gcc-Version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)

    also 4.6.1. unter 10.4 ist das dann wahrscheinlich der 4.4.5.

    Also 4.4.0 installieren (source ziehen compilieren, installieren und in Pfad ein binden) wenn Du dir den 4.4.5 erhalten willst, kannste beim ./configure --prefix=/opt/gcc4.4.0 angeben. so kommt der dann nach /opt/4.4.0. Dann müssen noch vor dem compilieren die Pfade gesetzt (ergänzt) werden.
     
  13. Kaschina, 04.01.2012 #13
    Kaschina

    Kaschina Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    01.01.2012
    Auf die Gefahr hin, mich komplett zum Idioten zu machen...
    Ich habe es nicht geschafft, gcc auf 4.4.0 runterzubekommen (auch wenns leicht klang bei dir).
    Dafür ist mir aufgefallen - bisher dachte ich, es wäre halt so unter Linux - dass ich unter toolchains bei Android NDK nur arm-linux-androideabi- habe, nicht arm-androideabi...

    Ich hatte es dann eben entsprechend in den Pfad eingebunden, aber kanns auch daran liegen? (Und warum fehlt das bei mir?)
     
  14. wembley, 04.01.2012 #14
    wembley

    wembley Junior Mitglied

    Beiträge:
    34
    Erhaltene Danke:
    1
    Registriert seit:
    28.03.2010
    Phone:
    Motorola Milestone
    Sorry,

    Urlaub ist vorbei, deshalb die Späte Antwort.
    Mit dem NDK kenne ich mich nicht so aus. Eventuell einer der Mitlesenden.

    Dachte eigentlich Du arbeitest ohne Entwicklungsumgebung. Das NDK gehört ja nicht zum Linux. Sondern stellt meiner Meinung nach mit dem Android-SDk die Entwicklungsumgebung für Android dar? Kann mir da einer auf die Sprünge helfen? Ist da dann auch ein passender gcc drin für den Androidkernel?

    Habe leider im Moment keine Zeit das hier mal nachzustellen.

    Bisher galt für mich immer beim zu kompilieren:
    - passende Kernelquellen (gleiche Version wie Kernel) und
    - der gleiche Compiler (mit dem der original Kernel erstellt wurde).

    Da man mit dem gcc auch Cross-Compilen kann, sollte das doch reichen?

    Gruß

    wembley
     
    Zuletzt bearbeitet: 04.01.2012
  15. Kaschina, 05.01.2012 #15
    Kaschina

    Kaschina Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    01.01.2012
    Das Gleiche mit der Uni, deswegen wieder nur bedingt Zeit...

    Die Sache mit der Entwicklungsumgebung - ich dachte auch, ich wäre "ohne".
    Wie man schon seit ungefähr 20 Posts merkt, ich kenn mich mit Android einfach absolut nicht aus. "Normal" programmieren ist ok, aber ich habe noch nie an Kerneln herumgespielt.
    Eigentlich sollte ich "einfach nur" ein Java-Programm schreiben, dass Funkprotokolle aus einem FTDI-Chip weiterverarbeitet. Davon, dass das Gerät das noch gar nicht kann, war vorher nicht die Rede. Und nu sitz ich da. :)

    Das SDK gehört zur Entwicklungsumgebung, das NDK wäre meiner Meinung nach - zum Programmieren hatte ich das noch nicht installiert - erst für die Kernel-Kompiliererei.

    Daher jetzt der Schwenk: Ich werde mich mal tiefer einarbeiten in das, was ich da eigentlich anstellen soll, so macht das gerade keinen Sinn, egal woran es genau liegt.

    Wenn du - oder gern auch jemand anders ;) - Lesetipps hat, immer her damit.
    Bisher hab ich mich von Forum zu Forum gehangelt und überall irgendwas für mich zusammengewuselt.

    Ich werde also fleißig weiterfragen, aber vielleicht mit ein wenig mehr Hintergrundwissen in Zukunft (hoffe ich).


    Vielen vielen vielen Dank nochmal für deine Zeit!!
     

Diese Seite empfehlen