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

Pearl X3 Firmware erweitern

Dieses Thema im Forum "Pearl Touchlet X3 / X4 Forum" wurde erstellt von jb1nbg, 28.12.2011.

  1. jb1nbg, 28.12.2011 #1
    jb1nbg

    jb1nbg Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    28.12.2011
    Hallo,

    ich hab mir vor einiger Zeit das X3 von Pearl zugelegt und etwas mit der SDK und NDK herum experimentiert, was auch soweit funktioniert.
    Dazu habe ich eine RS232 für die Kommunikation mit einem Mikrocontroller benötigt, also
    habe ich mir die Kernel-Sourcen von Telechips heruntergeladen, die entsprechenden Treiber als Module ausgewählt und die Kernel-Module compiliert.
    Nach dem manuellen Laden der Treiber z.B. "ftdi_sio.ko" kann ich auch mit der Serial Port API mit dem PC oder uC über RS232 kommunizieren.

    Damit ich die Treiber nicht immer manuell laden muss, wollte ich diese jetzt in das boot.img einbauen. Dazu habe ich ein Update mit ClockWork-Recovery gemacht und die "boot.img" mit dem Script "slpit_bootimg.pl" zerlegt. Anschließend "gunzip" auf die extrahiert RamDisk, die entsprechenden Treiber in "/lib/modules" hineinkopiert und das "init.m57te.rc" Script um die entsprechenden "insmod" Einträge erweitert. Danach das ganze zusammengebaut mit "mkbootfs" und mkbootimg" und auf die SD-Card geschoben. Anschließend das ganze auf dem Gerät in "/dev/mtd/mtd0" geflashed.

    Nach einem Reboot erscheint in der linken oberen Ecke das Touchlet Symbol und wo normal das X3 Logo erscheint bleibt der Bildschirm schwarz.
    Okay, kein Problem, das ganze über Recovery rückgängig gemacht und das Gerät startet wieder normal. Anschließend habe ich das original "boot.img" nochmal wie ober beschrieben zerlegt und OHNE Änderung wieder zusammengebaut und geflasht. Gleiche Auswirkung, der Screen bleibt schwarz. Danach habe ich das Einspielen auch über das ClockWork-Recovery gemacht, gleiches Ergebnis.
    (Die Kernel-Bootparameter habe ich bei "mkbootimg" mit --cmdline mit angegeben.)

    Hat jemand eine Idee wieso das Gerät nicht mehr startet oder gibt es eine Möglichkeit des Startvorgang irgendwie zu debuggen, auf einer Net-Console mitzulesen?
     
  2. jb1nbg, 29.12.2011 #2
    jb1nbg

    jb1nbg Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    28.12.2011
    Okay das Problem ist gelöst.

    Grund war, dass beim erstellen der "boot.img" die "baseaddr" und die "pagesize" auf default gesetzt waren und nicht zum X3 gepasst haben.

    Wer selbst ein "boot.img" erstellen möchte muss mkbootimg wie folgt aufrufen:
    ./bin/mkbootimg --base 0x40000000 --pagesize 8192 --cmdline 'console=ttyTCC,115200n8' --kernel ./work/boot.img-kernel --ramdisk ./work/ramdisk-new.gz -o ./work/boot-new.img

    "work" ist hier das Arbeitsverzeichnis in dem alles zusammengestellt wird.
    "boot.img-kernel" ist der Telechips Kernel (oder der extrahierte aus dem X3)
    "ramdisk-new.img" ist das RamDisk Abbild welches zuvor mit "mkbootfs" erstellt wurde.
    Das Ergebnis ist "boot-new.img".

    (Zum erstellen braucht ihr eine "mkbootimg" Version die 8192 PageSize unterstützt,
    ich hab das kurzerhand im Sourcefile "/system/core/mkbootimg/mkbootimg.c" erweitert)

    Diese kann dann mit folgenden Befehlen ins X3 geflashed werden:
    adb reboot bootloader
    fastboot flash boot ./work/boot-new.img

    Danach am On/Off Schalter einmal aus und wieder einschalten, ein "fastboot reboot" geht nicht !!!!

    Achtung vor dem ganzen bitte das Backup von euerm System nicht vergessen!!!!
     
  3. N2k1, 30.12.2011 #3
    N2k1

    N2k1 Moderator Team-Mitglied

    Beiträge:
    7,896
    Erhaltene Danke:
    1,693
    Registriert seit:
    17.02.2011
    Ein fastboot boot ./work/boot-new.img geht aber in dieser Situation.
     
  4. jb1nbg, 31.12.2011 #4
    jb1nbg

    jb1nbg Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    28.12.2011
    Hallo N2k1,

    ja um es nur aus zu probieren geht "fastboot boot ./work/boot-new.img" natürlich, nach dem flashen gehts aber irgendwie ohne On/Off bei mir nicht.

    Leider musste ich feststellen, dass die Kernel-Sourcen von TeleChips nur die halbe Miete sind, reicht zwar aus um Kernel-Module nachträglich zu erzeugen, aber leider nicht um den Kernel komplett zu verändern und zu compilieren. :mad2:
    Müsste man die Platform-Sourcen von den CBS china guys bekommen, hab ich aber noch nicht gefunden.

    PS: allem im Forum einen guten Rutsch ins Jahr 2012
     
  5. N2k1, 31.12.2011 #5
    N2k1

    N2k1 Moderator Team-Mitglied

    Beiträge:
    7,896
    Erhaltene Danke:
    1,693
    Registriert seit:
    17.02.2011
    fastboot flash boot ./work/boot-new.img
    fastboot boot ./work/boot-new.img
    Sollte gehen!
     
  6. jb1nbg, 01.01.2012 #6
    jb1nbg

    jb1nbg Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    28.12.2011
    Erstmal ein gesundes neues Jahr allen hier im Forum!

    Für alle die es gebrauchen können im Anhang die "usb_serial" Treiber und die "Bluetooth" Treiber fürs X3.
    Mit den USB-Serial können USB-RS232 Adapter verwendet werden und alle Geräte die einen FTDI-Chip oder diesen PL2303 drin haben und alle Geräte die USB-CDC-ACM konform sind (z.B. alte Modems aber auch USB-GPS Empfänger)
    Benutzen lässt sich die RS232 mit der Serial Port API (http://code.google.com/p/android-serialport-api/).
    (Derzeit arbeite ich am Umbau des OpenSource Bluetooth-GPS Providers auf USB-Serial GPS-Provider, dann könnte man das X3 als Navi benutzen :cool2: )

    Die Bluetooth Treiber dienen dazu einen USB-Bluetooth´s Dongle am X3 zu betreiben, allerdings muss die Verbindung mit der Shell aufgebaut werden.

    Zum Laden der Treiber muss man als Root auf der Kommandozeile
    "busybox insmod /<path zu *.ko Dateien>/<datei>.ko" eingeben.

    Die entsprechenden Einträge in "/dev" wie z.B. "/dev/ttyUSB0" oder "/dev/ttyACM0" werden automatisch angelegt.

    Viel Spaß damit!
     

    Anhänge:

  7. jb1nbg, 01.01.2012 #7
    jb1nbg

    jb1nbg Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    28.12.2011
    Ergänzend zu den USB-Serial und Bluetooth Treibern ein kleines Tool "ShellExec" in dem man Scriptabläufe die unter Linux in der Shell ausgeführt werden hinterlegen und starten kann.
    Wenn ihr die APK installiert werden schon ein paar Script als Beispiel mit angelegt. Durch langes drücken auf den Scripteintrag in der Liste könnt ihr es editieren.
    Die Option "Execute as Root" geht nur mit einem gerooteten X3 und benötigt "/system/bin/su".

    Bitte das Tool nicht als Perfekt ansehen, ich mache auch erst seit 2 Monaten meine ersten Programmierversuche mit & unter Android.
     

    Anhänge:

Diese Seite empfehlen