Pearl X3 Firmware erweitern

  • 6 Antworten
  • Letztes Antwortdatum
J

jb1nbg

Neues Mitglied
0
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?
 
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!!!!
 
Ein fastboot boot ./work/boot-new.img geht aber in dieser Situation.
 
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
 
fastboot flash boot ./work/boot-new.img
fastboot boot ./work/boot-new.img
Sollte gehen!
 
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

  • bluetooth.ko.zip
    1,3 MB · Aufrufe: 276
  • usb_serial.ko.zip
    237,4 KB · Aufrufe: 313
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

  • ShellExec.apk
    27 KB · Aufrufe: 354

Ähnliche Themen

V
  • videre
Antworten
0
Aufrufe
1.079
videre
V
J
Antworten
5
Aufrufe
2.690
Jupp Zupp
J
EPA
Antworten
382
Aufrufe
116.843
hävksitol
hävksitol
Zurück
Oben Unten