Lowlevel

OffZone => Offtopic => Thema gestartet von: LittleFox am 08. December 2011, 23:37

Titel: Auf Android entwickeln
Beitrag von: LittleFox am 08. December 2011, 23:37
Hi,

da ich so gerne den OT Bereich vollspamme, wieder mal ein neues Thema :P

Ich überlege momentan meinen Laptop zu verkaufen (NIE wieder Thinkpad Edge!) und mir etwas neues zu holen.
Da mir vorallem eine lange Akkulaufzeit wichtig ist, bin ich ziemlich schnell auf Tablet PCs gekommen.
Habe jetzt einen Favoriten (http://www.notebooksbilliger.de/tablets/asus+tablets/asus+eee+pad+transformer+prime+tf201+1b072a+amethyst+grey) gefunden der allerdings Android als Betriebssystem verwendet. Bei den Tablet PCs ist es ja leider so das sich andere Betriebssysteme nur schwer installieren lassen.

Meine Frage ist nun, ob man auf Android gut programmieren kann. Gibt es Entwicklungsumgebungen, gcc, etc.? Mir wäre auch noch wichtig x86 Code erzeugen zu können. Qemu wäre auch nicht schlecht ;)
Oder könnt ihr mir ein Tablet PC mit ähnlicher Ausstattung und langer Akkulaufzeit auf x86 Basis empfehlen? Tastatur wie bei deisem wäre schon nicht schlecht.

Danke für eure Hilfe :)

Grüße,
LittleFox
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 09. December 2011, 05:08
Vergiss es. Android ist meiner Meinung nach zum produktiven Arbeiten total ungeeignet. Der Kram ist zum Konsumieren gebaut, mit dem Überallinternet, wenig selbst machen (und wenn, dann nur kurze Twittermeldungen) und viel Überwachung inklusive.

Aktiv drauf entwickeln ist damit nahezu unmöglich. Android selbst besteht dann in der Regel aus einem zugepatchten Linux-Kernel und einer total zugenagelten Umgebung (d.h. Linux ohne Rootrechte und eine komplett unlinuxartige GUI). Vielleicht geht ein bisschen Java plus Dalvik, aber das ist Anwendungsprogrammierung, ins Linux kommst du damit nicht.

Was du willst, ist ein Betriebssystem, keine Konsumentenverarsche. (Tut mir Leid für die harten Worte.) Also entweder ein x86-PC/Netbook oder ein Netbook mit ARM-CPU und zugänglichem Bootloader. Ob der allerdings ohne Löten (serielle Schnittstelle) ebenfalls zugänglich ist, ist dann noch die zweite Frage. Wenn du ohnehin für x86 entwickeln möchtest, rate ich von ARM ab, ansonsten ist das eine echt nette Architektur mit in der Regel guter Dokumentation.

Von Android (oder auch iOS) rate ich definitiv ab, wenn man damit was Produktives tun möchte.

Gruß,
Svenska
Titel: Re: Auf Android entwickeln
Beitrag von: LittleFox am 09. December 2011, 06:09
Hi,

danke füt deine Antwort.
Ich hatte gehofft das Android noch genug Linux ist damit e sollche Programme gibt.

Leider habe ich kein ARM-Tablet ohne OS gefunden, und auf x86 hab ich keine Lust mehr ;) Akkulaufzeit ist nunmal viel zu kurz ...

Dann werde ich also weiter suchen müssen, oder kannst du eins empfehlen?

Grüße,
LittleFox
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 09. December 2011, 15:20
Hallo,

ich habe ein Archos 70. Das besitzt eine SDE (Software Developer Edition, ein Ångström Linux), weswegen ich mir das hab schenken lassen, bin aber ziemlich enttäuscht. Das Android 2.2 auf dem Gerät ist komplett zugenagelt (squashfs mit signierter MD5-Prüfsumme, sonst bootet der Bootloader das nicht) und die SDE unterstützt kein WLAN, kein 3D und ist mehr oder weniger nutzlos. Theoretisch kann man einen eigenen Kernel bauen und es gibt ein halbtotes Projekt für Android 2.3, aber groß Hoffnung habe ich da nicht mehr. Und Archos ist der einzige mir bekannte größere Hersteller, der sowas anbietet.

Was du suchst, suche ich auch schon länger. Sowas gibt es aber nicht, erst recht nicht zu günstigen Preisen. Vielleicht kann man irgendwelche billigen China-/Indien-ARM-Netbooks aufbohren, aber ob das den Aufwand lohnt, ist fraglich. Es gibt halt keine Plattform, neben dem mitgeliefertem OS keinen Support und keine Plattform-Dokumentation. Bei x86 gibt es eine spezifizierte/dokumentierte Plattform und die Möglichkeit, verschiedene OSs zu booten.

Tablets sind für Development ungeeignet, weil Bildschirmtastaturen einfach hässlich sind. :-)

Gruß,
Svenska
Titel: Re: Auf Android entwickeln
Beitrag von: LittleFox am 09. December 2011, 15:49
hi,

das es für tablets keine einheitliche platform gibt habe ich auch schon festgestellt. Gibt es dafür eigentlich irgendeinen grund oder hatten die hersteller bis jetzt nur keine lust?
Das man auf einer bildschirmtastatur nicht gut programmieren kann, ist mir klar, deswegen hatte ich ein tablet mit tastatur ausgesucht (siehe link)
wie realistisch ist es eine art "offene plattform" zu entwickeln? Bzw. Diese so zu verbreiten das sie auch verwendet wird?

Grüße, LittleFox - der heute keine lust auf groß- und kleinschreibung hat :P
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 09. December 2011, 18:38
Hallo,

das hängt damit zusammen, dass IBM den PC-Standard offen entwickelt hat und jeder den nutzen konnte. Für x86 gibt es nur zwei Plattformen: PC (BIOS) und EFI. Bei ARM hat jede CPU Unterschiede (z.B. die Adressen, wo RAM liegt, welche Schnittstellen existieren und wie man deren Adressen erfragt usw) und dann hat jeder Board-Designer wieder die Möglichkeit, externe Perioherie verschieden anzuschließen.

Bei PCI-Geräten fragt man nach, was wo ist. Wenn der Board-Designer die Kamera aber an GPIOs 12-22 verbaut hat, muss man das wissen. Ein anderes Board mit gleicher CPU könnte da das Netzteil für den Stromsparmodus mit steuern, deswegen ist Probing schlecht.

Offene Plattformen gibt es genug - Evaluationsboards von Pollin bis Samsung, Texas Instruments bis STMicroelectronics. Das sind aber immer nur Boards ohne Gehäuse. Und Standards gibt es da nur im großkommerziellen Bereich, nix für Endkunden. Leider.

Gruß,
Svenska
Titel: Re: Auf Android entwickeln
Beitrag von: Sannaj am 09. December 2011, 19:29
Das ist halt der Große Nachteil von ARM, die Architektur wurde bei ihrer Verbreitung ziemlich in den Mikrokontrollerbereich abgedrängt, wo sie sich nur extrem unzureichend standardisiert wurde. Auch heute konnte sich die Architektur nicht vernünftig von ihrem  Bei x86, kannst du sicher sein, das sich alle Sachen ab der Plattform auf der sie eingeführt wurden auch immer genauso verhalten.
Bei ARM ist das nicht so. Deshalb wird im Wiki auch nicht beschrieben, wie man den Bildschirm mit Zeichen bestückt, sondern nur die "Debug"-Ausgabe über die serielle Schnittstelle an den Emulator. Auch das dort beschriebene Paging ist mit leichter Vorsicht zu genießen. Aus diesem Grund denke ich dass ARM nicht keine echte Chance bei Systemunabhängien Plattformen haben wird, es sei denn es ändert sich in naher Zukunft irgendetwas.
Titel: Re: Auf Android entwickeln
Beitrag von: erik.vikinger am 09. December 2011, 21:07
Hallo,


Auch das dort beschriebene Paging ist mit leichter Vorsicht zu genießen.
Das Paging ist eine interne Angelegenheit der ARM-CPU und die einzelnen Kunden von ARM (die dann die CPU zusammen mit der Peripherie auf ein Stück Silizium packen) ändern an der CPU selber (normalerweise) nichts. Für den Linux-Kernel ist meines Wissens nach der größte Aufwand beim Portieren das Erstellen eines BSP, an der eigentlichen CPU-Unterstützung wird da nicht viel gedreht. Auch sind Dinge wie die JTAG-Schnittstelle, der IRQ-Controller oder auch der CPU-lokale Timer immer gleich, zumindest innerhalb einer ARM-CPU-Generation, z.B. von ARMv5 nach ARMv6 sind da schon einige Unterschiede.
Das wirkliche Problem von ARM ist das die gesamte Peripherie, eben alles was echten Kontakt zur Außenwelt hat, auf jeder ARM-Realisierung anders ist. Wenn man hier wirklich was effektiv ändern wollte dann sollte man IMHO alles auf PCI umstellen und in der CPU einen standardisierten Zugriff auf den PCI-Config-Space einbauen. Das Problem ist dass das bei kleinen Micro-Controllern sicher gleich mal die Anzahl der benötigten Transistoren verdoppeln würde (einfach nur weil 30 kleine Peripherie-Geräte, die oft nur ne Hand voll Register haben, plötzlich einen fetten Config-Space bräuchten und weil Routing mit flexiblen Adressen auch deutlich aufwendiger ist). Das hat aber die Firma ARM selber kaum in der Hand und so lange die vielen Hersteller gar kein Interesse daran haben das ihre Produkte einfach so gegen das Produkt eines anderen Hersteller ausgetauscht werden können wird sich das auch nicht ändern. Die Hersteller setzen ja gerade deswegen auf ARM weil sie eben nicht damit rechnen müssen das der Endkunde jedes Teil nach belieben austauschen kann. Dabei täte ja echte Konkurrenz entstehen und die Hersteller müssten sich plötzlich bemühen mit Qualität usw. zu punkten und das kann doch keiner ernsthaft wollen oder?


An einem offenen Tablet-PC mit ARM-Innenleben bin ich ja auch interessiert aber sowas hab ich noch nicht gesehen und ich rechne auch nicht damit sowas mal zu bekommen.


Grüße
Erik
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 10. December 2011, 01:24
Bei ARM ist das nicht so. Deshalb wird im Wiki auch nicht beschrieben, wie man den Bildschirm mit Zeichen bestückt, sondern nur die "Debug"-Ausgabe über die serielle Schnittstelle an den Emulator.
Richtig, denn beim Bildschirm handelt es sich um Peripherie. Die meisten ARM-Systeme haben keinen Bildschirm, also ist in der Plattform auch keiner vorgesehen. Beim PC ist das anders, der hat immer eine CGA- oder MDA-kompatible Grafikkarte (ob da ein Bildschirm dranhängt oder nicht, ist eine andere Frage; dass das so ist, erkennt man daran, dass manche BIOSse ohne angeschlossenen Bildschirm nichtmal booten).

Auch das dort beschriebene Paging ist mit leichter Vorsicht zu genießen. Aus diesem Grund denke ich dass ARM nicht keine echte Chance bei Systemunabhängien Plattformen haben wird, es sei denn es ändert sich in naher Zukunft irgendetwas.
Das Paging ist für jede ARM-Architekturversion gleich, bei x86 ist sie immerhin abwärtskompatibel. Ich denke, dass sich für gewisse Geräteklassen quasi-Standards herausbilden werden.

Die Architektur ist zu flexibel einsetzbar, um sie in ein einziges Schema pressen zu können.

Gruß,
Svenska
Titel: Re: Auf Android entwickeln
Beitrag von: erik.vikinger am 10. December 2011, 12:09
Hallo,


Das Paging ist für jede ARM-Architekturversion gleich, bei x86 ist sie immerhin abwärtskompatibel.
Klar kann man es durchaus als herausragende Leistung von Intel betrachten das selbst auf deren aktuellsten Sandy-Bridge-CPUs noch ein 30 Jahre altes DOS mit Windows 3.0 im 286-PM läuft (denke ich mal, praktisch ausprobiert hab ich das noch nicht) aber wird das wirklich von der Mehrheit der Anwender benötigt? Wenn man von einer aktuellen CPU anständig Leistung haben will ist man auch gezwungen deren neuesten Features zu unterstützen. Wenn ich den selben C-Code für das 16Bit Windows 3.0 kompiliere wird er auf der selben CPU sicher deutlich weniger Leistung bringen als wenn er für ein aktuelles 64Bit Windows 7 kompiliert wird. Abwärtskompatibilität ist zwar nett aber nur bis zu einem gewissen Grad wirklich nützlich. Klar würde das 16 Bit Programm auf einer aktuellen CPU immer noch schneller laufen als auf einem originalem 286 (selbst die 286-Nachbauten für die Embedded-Welt haben wimre nie mehr als 100 MHz erbracht) aber trotzdem wäre das Verschwendung von Transistoren, ein neuer Compilerlauf dürfte da schlagartig mindestens 500% mehr bringen. Ich denke die Entscheidung von ARM das innerhalb einer Architektur-Familie die wichtigen Dinge immer identisch sind ist sehr wichtig aber der Schritt zu einer neuen Familie darf IMHO gerne auch mit ein paar Altlasten aufräumen. Wenn durch diesen Schritt sogar die Kompatibilität bei normalen User-Mode-Applikationen entfällt ist das zwar ärgerlich aber ich bin der Meinung das hier die OS-Hersteller in der Pflicht wären dann eben passend zu emulieren, wenn diese Emulation (so wie bei QEMU) auch immer den Code neu auf die Host-CPU anpasst könnte das Programm damit eventuell sogar mehr Performance erreichen als wenn die CPU versucht die alten Befehle irgendwie auszuführen. Wenn dieses Anpassen des Code auf die Host-CPU offline passiert und passend auf der HDD gecached wird würde darunter nicht mal die Startzeit der Programme leiden, das ist ja im Endeffekt auch die Richtung die Microsoft mit .NET anstrebt (nur das dort das Programm noch gar nicht fertig compiliert zum Kunden kommt sondern beim Anwender immer optimal für seine tatsächlich vorhandene CPU umgesetzt wird).
Ich bin der Meinung das Abwärtskompatibilität deutlich überschätzt wird.

Die Architektur ist zu flexibel einsetzbar, um sie in ein einziges Schema pressen zu können.
Ja, das kann ich vorbehaltlos so unterschreiben.


Grüße
Erik
Titel: Re: Auf Android entwickeln
Beitrag von: Sannaj am 10. December 2011, 12:49
Naja, so teuer ist die Abwärtskompatiblität dann doch nicht. Wenn man sich die Effekte mal anschaut fällt einen auf, das die Unterschiede gar nicht so groß sind.
Für den 16 Bit PM braucht man nur eine Flag und ein Xor Gatter. Bei Opcode 0x66 wird die Flag gesetzt. Bei jeder Operation wird dann  mit dieser Flag und der is32bitCode Flag im versteckten Teil von CS ein exclusives Oder durchgeführt. Kommt dann 1 raus, braucht man eine 32 Bit Operation.
Auch für den Real Mode, braucht man blos eine bisschen andere Ladevorrichtung für den versteckten Teil der Segmentregister und einen anderen internen Interupthandler.

Aber zurück zum Thema. Ich kritisieren an ARM auch gar nicht die mangelnde Abwärtskompatiblität. (ARM ist nämlich größtenteils schon abwärtskompatibel.), sondern einfach, das es keine verlässliche Plattform gibt. Paging war jetzt vielleicht ein bisschen unglückliches Beispiel, schließlich steht x86 in der Hinsicht auch nicht besser dar. Sondern ehr die Tatsache, das das, was sich um die CPU befindet nur mangelhaft standardisiert ist. Natürlich brauche ich in einem sprechenen Teddybären keine Bildschirmfunktionalität (und auch kein Paging), aber es wäre doch schön, wenn man bei allen Geräten, die einen Bildschirm haben, diesen auch gleich ansprechen können, zumindest wenn man nur ne primitive Fehlerausgabe haben will.

Durch geeignete Betriebssystem kann das ganze natürlich ein wenig standardisiert werden.
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 10. December 2011, 15:35
Ich bin der Meinung das Abwärtskompatibilität deutlich überschätzt wird.
Sehe ich persönlich anders. Emulation funktioniert nur, wenn ein enormer Performance-Unterschied zwischen der emulierten und der emulierenden Architektur liegen. Wenn ein Core i7 nicht zu einem Core2  kompatibel ist, wird keine Emulation schnell genug sein, um die Inkompatiblität zu rechtfertigen. Ein 386er kann einen 286er nicht schnell & sauber genug emulieren, das können die meisten Emulatoren ja noch nichtmal heute!

Gruß,
Svenska
Titel: Re: Auf Android entwickeln
Beitrag von: erik.vikinger am 10. December 2011, 17:59
Hallo,


Naja, so teuer ist die Abwärtskompatiblität dann doch nicht. Wenn man sich die Effekte mal anschaut fällt einen auf ....
Auf die Gefahr hin das man mir gleich Unhöflichkeit vorwerfen wird aber das ist eine recht naive Betrachtung, in Wirklichkeit ist das schon ein wenig komplexer. AMD hat damals bei den ersten 64Bit-Opterons was von 5% mehr Transistoren für den 64Bit-Modus erzählt und 5% sind bei einem Chip der schon einige Millionen Transistoren hat ne ganze Menge und dabei darf man nicht vergessen das ein Großteil der Transistoren für Cache usw. drauf gehen und da dürften die Änderungen eher marginal gewesen sein so das ich persönlich vermute wenn man nur den puren CPU-Kern betrachtet kommen da eher 15 bis 20% Zuwachs bei raus.

Sondern ehr die Tatsache, das das, was sich um die CPU befindet nur mangelhaft standardisiert ist.
Da hast Du auf jeden Fall recht aber dafür sind die Einsatzgebiete von ARM einfach zu extrem unterschiedlich als das man da auch nur den Hauch einer Chance für einen minimalen gemeinsamen Nenner findet.

aber es wäre doch schön, wenn man bei allen Geräten, die einen Bildschirm haben, diesen auch gleich ansprechen können
Dafür sind leider die Bildschirme viel zu unterschiedlich. Es gibt ja nicht nur graphikfähige LCDs sondern auch alpha-numerische Displays (die oft nur einen begrenzten Zeichenvorrat haben zu dem auch nicht immer lateinische Buchstaben gehören).

zumindest wenn man nur ne primitive Fehlerausgabe haben will
Dafür gibt es die Debug-Konsole über JTAG und die ist innerhalb der CPU und damit standardisiert. Dieser JTAG-Trace-Mechanismus ist wimre sogar bei den ganz kleinen ARM-Micro-Controllern (fast) immer mit dabei. Das Problem ist eher das Du bei den typischen Consumer-Produkten nicht mehr ans JTAG ran kommst.

Durch geeignete Betriebssystem kann das ganze natürlich ein wenig standardisiert werden.
Ja, deswegen haben ganz früher mal schlaue Leute das Konzept der Geräte-Abstraktion mit Hilfe von Treibern erfunden und ich persönlich finde dieses Konzept echt gut (schließlich funktioniert es ja auch ganz prima). ;) Diese Aufgabe gehört natürlich in den Zuständigkeitsbereich des OS aber dieses hat das Problem das es nicht ahnen kann welche Treiber den auf dem aktuellen System tatsächlich benötigt werden. Wenn es einen guten Boot-Loader gibt der den Speicher einrichtet und dem OS-Kernel alle Geräte sauber auflistet dann müsste damit ein generisches OS schon prima arbeiten können (es würde dann eine OS-Version pro ARM-Architektur-Familie reichen) aber selbst das gibt es ja nicht auf ARM. Microsoft will doch das Windows 8 nur auf den ARM-Systemen läuft die UEFI haben und damit wäre ja dann endlich genau das vorhanden. Das UEFI für diesen Zweck eher suboptimal und vor allem viel zu groß ist lassen wir jetzt mal außen vor aber von der Theorie her ist das eine gute Lösung.


Emulation funktioniert nur, wenn ein enormer Performance-Unterschied zwischen der emulierten und der emulierenden Architektur liegen.
Dann kennst Du keine guten Emulatoren. Das Zauberwort heißt Code-Morphing. Das hat Transmeta ziemlich gut gekonnt (und das sogar ohne dass das OS das überhaupt bemerkt hat, nur die echte Host-CPU war nicht so wirklich der Bringer), auch Microsoft hat das unter Windows NT 4 mit dem damaligen FX! in ziemlich guter Performance geschafft (die meisten Programme liefen auf der Alpha-CPU sogar schneller als auf einem x86, vielleicht nicht ganz so schnell wie wenn sie nativ compiliert worden wären aber das Ergebnis war durchaus ansehnlich), Apple hat es mit Rosetta wohl ziemlich gut geschafft den Umstieg auf eine völlig andere Plattform vor seinen Anwender quasi komplett verborgen zu halten und so lahm sind .NET-Programme nun auch wieder nicht. Ich bin daher immer noch der Meinung das Kompatibilität deutlich überschätzt wird, natürlich bedarf es dazu guter Emulatoren aber dafür gibt es in den letzten 20 Jahren Computer-Geschichte mehr als nur diese 4 Beispiele. Ein guter Off-Line-Code-Morpher, der sich auch so viel Zeit nimmt wie ein normaler Compiler, sollte auch auf ein ähnliches Ergebnis kommen wie ein normaler Compiler. Beim FX! gab es wimre die Option das der Morphing-Mechanismus im Hintergrund weiter arbeitet und die ganze EXE (und alle DLLs) gründlich umwandelt (und nicht nur den Code der gerade tatsächlich ausgeführt wird) und das Ergebnis dann auf der Festplatte abspeichert so dass das Programm bei allen folgenden Aufrufen sofort starten kann und mit voller Alpha-Performance läuft. Rosetta hatte doch bestimmt ähnliche Tricks auf Lager.

das können die meisten Emulatoren ja noch nichtmal heute!
Das hat beim 286 aber auch spezielle Gründe. ;) Ich dachte eigentlich das BOCHS in diesem Punkt zwar langsam (wenn auch auf einer halbwegs aktuellen CPU nicht so langsam wie ein echter 286 von vor 30 Jahren) aber immerhin korrekt ist.


Grüße
Erik
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 10. December 2011, 18:13
Hallo,

Emulation funktioniert nur, wenn ein enormer Performance-Unterschied zwischen der emulierten und der emulierenden Architektur liegen.
Dann kennst Du keine guten Emulatoren. Das Zauberwort heißt Code-Morphing.
Wollten wir uns nicht mal auf KISS beschränkten? ;-)

Das hat Transmeta ziemlich gut gekonnt (und das sogar ohne dass das OS das überhaupt bemerkt hat, nur die echte Host-CPU war nicht so wirklich der Bringer), auch Microsoft hat das unter Windows NT 4 mit dem damaligen FX! in ziemlich guter Performance geschafft
Also der einzige Rechner mit Transmeta-CPU, den ich (viel zu lange) in den Fingern hatte, war grausam. Wenn man den eine Stunde mit 486er-Architekturen zugeworfen hat, brauchte er fast fünf Minuten, um auf den Windows-98-Desktop zurückzukehren. Wenn sogar ein 486er mit 100 MHz schneller ist, als eine Transmeta-CPU mit dem fünffachen, dann kann die Emulation einfach nicht gut genug sein.

FX! ist meines Wissens ein zugekauftes Produkt gewesen (ob sie das Produkt oder die Firma gekauft hatten, weiß ich gerade nicht mehr), über die Performance kann ich nichts sagen; Alpha-Systeme waren aber meist mit besserer Peripherie ausgestattet. Du darfst aber nicht vergessen, dass bei den meisten Anwendungen die absolute Rechenzeit verglichen mit der Wartezeit auf Syscalls, Hardware, ... keine Rolle spielt und synthetische Benchmarks (für die Codemorphing wirklich gut funktioniert) keine sinnvollen Aussagen liefert.

Apple hat es mit Rosetta wohl ziemlich gut geschafft den Umstieg auf eine völlig andere Plattform vor seinen Anwender quasi komplett verborgen zu halten und so lahm sind .NET-Programme nun auch wieder nicht.
Der Umstieg von m68k zu PPC war einfach zu machen, da selbst ein 68040 wesentlich langsamer ist, als ein PowerPC gleicher Ära. Rosetta spielt durch "Universal Binaries" (m68k/PPC-Sprech: "Fat Binaries") nur eine untergeordnete Rolle. Außerdem laufen meines Wissens sowohl Rosetta als auch .net mit dynamischer Rekompilierung, d.h. das Programm ist nur bei der ersten Ausführung langsam, später wird nur noch nativer Code ausgeführt.

Darum sind das keine Emulatoren mehr, außerdem funktionieren sie nur für gewisse Randfälle.

Überhaupt spielt die genaue, wenn auch inzwischen überalterte PC-Plattformspezifikation eine große Rolle, denn ohne diese gäbe es uns hier nicht.

Gruß,
Svenska
Titel: Re: Auf Android entwickeln
Beitrag von: erik.vikinger am 11. December 2011, 13:58
Hallo,


Wollten wir uns nicht mal auf KISS beschränkten? ;-)
Ja schon, aber nur wenn das eigentliche Ziel auch erreicht wird. Eine Lösung die mein Problem nicht löst ist keine Lösung und damit ist auch das KISS-Prinzip wirkungslos.

Wenn man den eine Stunde mit 486er-Architekturen zugeworfen hat, brauchte er fast fünf Minuten, um auf den Windows-98-Desktop zurückzukehren.
Das Problem von Transmetas Lösung war das es keine Persistenz für den gemorphten Code gibt, die Transmeta-CPUs hatten doch so einen extra RAM in dem zum einen die Code-Morphing-SW liegt und zum anderen eine Art Cache mit dem gemorphten Code und wenn dieser Cache voll ist müssen nun mal ein paar alte Dinge weichen (so sind Caches eben, schau Dir mal an wie QEMU seinen Cache verwaltet und dann wird Dir auffallen das Transmeta dieses Detail gar nicht mal so dumm umgesetzt hat). Hier sind Lösungen die den gemorphten Code auf der (unbegrenzten) HDD speichern können klar im Vorteil.

über die Performance kann ich nichts sagen; Alpha-Systeme waren aber meist mit besserer Peripherie ausgestattet. Du darfst aber nicht vergessen, dass bei den meisten Anwendungen die absolute Rechenzeit verglichen mit der Wartezeit auf Syscalls, Hardware, ... keine Rolle spielt und synthetische Benchmarks (für die Codemorphing wirklich gut funktioniert) keine sinnvollen Aussagen liefert.
Ich erinnere mich nur dass das anhand von aufwendigen Excel-Scripten und Photoshop-Batches durchgeführt wurde, klar sind das auch keine perfekten Benchmarks aber einem zeitgemäßem Pentium waren die Alpha-Resultate oft überlegen, sicher hätte hier ein PentiumPRO noch mal was holen können aber der war da noch nicht so arg verbreitet. Und wer das FX! damals konkret programmiert hat spielt doch auch keine Rolle, es ist ein Beispiel dafür das sowas funktionieren kann wenn man es ordentlich macht.

Rosetta spielt durch "Universal Binaries" (m68k/PPC-Sprech: "Fat Binaries") nur eine untergeordnete Rolle.
Diese "Fat Binaries" sind aber erst raus gekommen als sich die Anwendungshersteller mit Appels Plattformwechsel aktiv beschäftigt hatten, alles was vorher schon da war lief per Rosetta.

Außerdem laufen meines Wissens sowohl Rosetta als auch .net mit dynamischer Rekompilierung, d.h. das Programm ist nur bei der ersten Ausführung langsam, später wird nur noch nativer Code ausgeführt.
Das hab ich doch schon gestern geschrieben, es geht mir doch gerade darum das so ein Emulator lieber mehr Energie in die Optimierung stecken soll aber dafür nur ein einziges mal.

Darum sind das keine Emulatoren mehr
Das ist Wortglauberei (da fällt mir ein das ich schon lange nichts mehr von der Kalibrierung meiner Haarspalter-Gold-Waage gehört habe, da muss ich gleich morgen Früh mal hinterher telefonieren, kann doch nicht sein das ich hier völlig unvorbereitet in solche speziellen Wortgefechte gerate), sorry, aber es ist doch völlig wurscht wie das heißt solange es eine gute Lösung für ein echtes Problem ist.
Solange Intel mit jedem x86-CPU-Kern auch alle Altlasten mitschleppen muss wird sich x86 auch nie in den ganz kleinen bzw. ganz sparsamen Systemen behaupten können (so groß kann Intels technologischer Vorsprung bei der Chipherstellung nun auch wieder nicht werden), ein gut optimierter ARM Cortex-A9 kommt mit einem Bruchteil an Transistoren und Energieverbrauch aus gegenüber einem Atom-x86 und kann performancemäßig trotzdem noch recht gut mithalten. Wenn die Performance wirklich wichtig ist werden eben mehrere Cortexe zusammengepackt und erreichen dann auch mehr CPU-Leistung bei trotzdem immer noch kleinerem Energie- und Silizium-verbrauch.
Ich behaupte das wenn Intel wirklich in diesen Markt rein will dann wird Intel aus x86 einiges raus werfen und das dann in SW emulieren müssen.


Grüße
Erik
Titel: Re: Auf Android entwickeln
Beitrag von: MasterLee am 11. December 2011, 14:48
Wenn du sehr lange Akkulaufzeit brauchst dann kauf dir am besten ein Tablet (http://www.robust-pc.de/produkte/colibri/technische-daten/) mit zwei Akkuschächten, bei dem sich die Akkus im Betrieb tauschen lassen.
Und was die Entwicklung auf Android angeht das einzig halbwegs brauchbare ist zur Zeit: java-ide-droid (http://code.google.com/p/java-ide-droid/)
Ansonsten Fasziniert mich ja immer noch das Nokia N8:
(http://www.bbutz.de/articles/N8_Top_Ten_g_10.jpg)
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 11. December 2011, 15:29
Das Problem von Transmetas Lösung war das es keine Persistenz für den gemorphten Code gibt, die Transmeta-CPUs hatten doch so einen extra RAM in dem zum einen die Code-Morphing-SW liegt und zum anderen eine Art Cache mit dem gemorphten Code
Ja, und dafür haben die einerseits ohnehin knappen System-RAM genommen, andererseits braucht die CPU zum Funktionieren dann zusätzliche Speicherbandbreite.
Die hätten meiner Meinung nach lieber mal die native Architektur öffnen sollen, meinetwegen auch zusätzlich zum x86-Befehlssatz.

Diese "Fat Binaries" sind aber erst raus gekommen als sich die Anwendungshersteller mit Appels Plattformwechsel aktiv beschäftigt hatten, alles was vorher schon da war lief per Rosetta.
Naja, für den Softwarehersteller ist es ein einmaliges Rekompilieren und dann ist das Problem gelöst. Dafür muss Rosetta nicht sonderlich schnell sein - ist es aber trotzdem.

Außerdem laufen meines Wissens sowohl Rosetta als auch .net mit dynamischer Rekompilierung, d.h. das Programm ist nur bei der ersten Ausführung langsam, später wird nur noch nativer Code ausgeführt.
Das hab ich doch schon gestern geschrieben, es geht mir doch gerade darum das so ein Emulator lieber mehr Energie in die Optimierung stecken soll aber dafür nur ein einziges mal.
Also willst du einfach einen dynamischen Compiler, der zur Laufzeit den Code so hinbiegt, dass er auf der gerade vorhandenen Architektur läuft und dafür Kompatiblität in Hardware opfern.

Solange Intel mit jedem x86-CPU-Kern auch alle Altlasten mitschleppen muss wird sich x86 auch nie in den ganz kleinen bzw. ganz sparsamen Systemen behaupten können (so groß kann Intels technologischer Vorsprung bei der Chipherstellung nun auch wieder nicht werden),
Die Architektur war und ist auch nicht dafür gebaut worden. Noch nie. Nur, weil dein Hammer nicht passt, setzt du dich auch nicht mit der Feile hin und bastelst so lange dran rum, bis er geht. Selbst wenn, danach taugt er nicht mehr für den ursprünglichen Zweck.

Eher kaufst du dir einen passenden Hammer. Und der ARM-Hammer muss halt nicht kompatibel zu den Urzeiten sein.

Ich hatte mal mit einem Terminal zu tun (mit Win NT4 Embedded), wo an der Kompatiblität gespart hatte und GRUB nebst anderen Bootloader direkt der Länge nach hingeschlagen ist, wenn man das Teil booten wollte. Der Preis war, dass man darauf ohne extremen Aufwand kein anderes Betriebssystem draufmachen konnte. Das ist aber genau das, was ich von einem PC-kompatiblen erwarte, im Gegensatz zu einem Tablet.

Wenn die Performance wirklich wichtig ist werden eben mehrere Cortexe zusammengepackt und erreichen dann auch mehr CPU-Leistung bei trotzdem immer noch kleinerem Energie- und Silizium-verbrauch.
Da scheiterst du an NUMA und der heutigen Informatik. Viele Probleme sind damit nicht so effizient lösbar, wie man es möchte. ARM optimiert aber gewaltig in die Richtung, einen Cortex-A15 neben einen -A7 zu schalten und damit energieeffizientes Scheduling zu benutzen. Zumal die aktuellen schnellen ARMs wesentlich mehr Energie pro Rechenleistung fressen als die kleineren und wenn du einen aktuellen Cortex mit 2-4 GHz takten wolltest, bist du garnicht mehr so weit weg vom Energiebedarf von x86ern.

Ich behaupte das wenn Intel wirklich in diesen Markt rein will dann wird Intel aus x86 einiges raus werfen und das dann in SW emulieren müssen.
Wer sagt denn, dass die das nicht tun? Mikrocode gibt es jedenfalls schon, das BIOS ist ohnehin chipsatz- und mainboardspezifisch und dessen Bootstrap-Code kann ja sonstwie gestrickt sein. Den Mikrocode in die CPU zu werfen, die dann so tut, als wäre sie im Real Mode, reicht doch aus...

Zumal: Selbst, wenn sie es in SW emulieren, tut das weder der Performance noch der Kompatiblität einen Abbruch. Den Kram nutzt eh kaum jemand.

Gruß,
Svenska
Titel: Re: Auf Android entwickeln
Beitrag von: Tobiking am 12. December 2011, 01:24
Um mal auf das ursprüngliche Thema zurück zu kommen, ich hab auch mit dem Gedanken gespielt mir nen Asus Transformer Prime zuzulegen. Da sich der Release jetzt aber auf nächstes Jahr verschoben hat, hab ich das erstmal zurückgestelt. Ich habe mich aber schon informiert, dass es auf dem Vorgänger möglich ist ein richtiges Linux zu installieren (siehe http://stream0.org/2011/11/24/dual-booting-android-and-linux-on-asus-transformer-part-two/). Wird sich zeigen wie das beim Nachfolger aussieht.
Titel: Re: Auf Android entwickeln
Beitrag von: Dimension am 12. December 2011, 15:52
Gibt es denn die Option auf einem Android Device beliebigen ARM-Bytecode auszuführen und evtl auf das ABI zuzugreifen? Dann könnte man u.U. ja ein richtiges Linux darauf portieren.
Wollte iich schon immer mal fragen.
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 12. December 2011, 16:31
Grundsätzlich ja, aber nicht praktikabel.

Um ein anderes Betriebssystem (also auch einen normalen Kernel) auf einem Android-Gerät zu booten, musst du es vor dem Android-Start zur Ausführung bringen. Also musst du den Bootloader dazu bringen, deinen eigenen Kernel zu booten. Inzwischen haben die meisten Hersteller allerdings erklärt, den Bootloader nicht mehr (komplett) zu sperren, vorher war das meist an kryptographische Signaturen gebunden.

Andererseits basiert Android auf Linux und kann daher Linux-Anwendungen ausführen. Theoretisch kannst du also den Android-Kernel nehmen und darauf ein normales Userland laufen lassen. Ob das praktikabel ist, weiß ich nicht.

Da es keine vollständige Plattformspezifikation der Geräte gibt, wirst du keine Freude daran haben, einen eigenen Kernel für Consumergeräte zu stricken. Wenn du fertig ist, gibt es das Gerät vermutlich nicht mehr zu kaufen (oder zumindest einen inkompatiblen Nachfolger).

Gruß,
Svenska
Titel: Re: Auf Android entwickeln
Beitrag von: MasterLee am 12. December 2011, 17:44
Was spricht eigentlich gegen ein Wetab?
Titel: Re: Auf Android entwickeln
Beitrag von: LittleFox am 12. December 2011, 18:06
Hi,

Was spricht eigentlich gegen ein Wetab?
die zu kurze Akkulaufzeit. Bei Wikipedia steht bis zu 6h, also gehe ich von 3h aus (mein Laptop ist mit 4 angegeben und schafft 2). 3h sind 2 Unterrichtsstunden, da reicht der Akku dann nicht mehr für den Zug ;) Ich wohne in Chemnitz und gehe in Leipzig in die Schule ...
Trotzdem Danke für den Vorschlag :)

Demnach werde ich warten müssen bis man auf Tablets jedes beliebige OS (ohne hacks, Garantieverlust, andere Probleme) installieren kann, oder ich bau mein Tablet selber (da lern' ich gleich mal SMD löten :D)

Grüße,
LittleFox
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 12. December 2011, 19:41
Demnach werde ich warten müssen bis man auf Tablets jedes beliebige OS (ohne hacks, Garantieverlust, andere Probleme) installieren kann, oder ich bau mein Tablet selber (da lern' ich gleich mal SMD löten :D)
Einspruch.
Garantieverlust darfst du garantiert einkalkulieren und BGA lötet sich mit einem Lötkolben eher schlecht. SMD wird bei großen µCs nicht verbaut, wenn es überhaupt für dich als Endkunden kaufbar ist. Bei Späßen wie PoP (Package-on-Package), wo der RAM als BGA-Baustein oben auf den µC in BGA-Bauform gebondet wird, hilft nichtmal mehr ein Backofen.
Titel: Re: Auf Android entwickeln
Beitrag von: erik.vikinger am 12. December 2011, 21:15
Hallo,


Ja, und dafür haben die einerseits ohnehin knappen System-RAM genommen, andererseits braucht die CPU zum Funktionieren dann zusätzliche Speicherbandbreite.
Ja, die Idee ist gut aber die reale Umsetzung hatte durchaus noch so ihre Tücken. Es gab ja auch extra Transmeta-CPUs mit 2 Speichercontrollern, einer für den normalen RAM und einer für die Code-Morphing-SW und den Cache.

Die hätten meiner Meinung nach lieber mal die native Architektur öffnen sollen, meinetwegen auch zusätzlich zum x86-Befehlssatz.
Hatten die das nicht auch? Wenn nicht dann hätten sie es auf jeden Fall tun sollen, ich wette Linux wäre keine 6 Monate später drauf gelaufen und hätte vielleicht auch mal zeigen können was in der Transmeta-CPU wirklich drin steckt. Zumindest wäre es mal interessant zu sehen was passiert wenn sich ein fremdes CPU-Kuckucksei im x86-Nest breit macht.

Also willst du einfach einen dynamischen Compiler, der zur Laufzeit den Code so hinbiegt, dass er auf der gerade vorhandenen Architektur läuft und dafür Kompatiblität in Hardware opfern.
Ja, genau das meine ich. Aus meiner Sicht wäre 3D-Now bei den AMD-CPUs dafür ein guter Kandidat, das ist defacto ausgestorben und trotzdem muss AMD diese Befehle irgendwie noch unterstützen und ich wette AMD gibt sich keine besondere Mühe das sehr effizient zu tun (das würde ja Entwicklungszeit und Transistoren kosten) so das ich der Meinung bin das man 3D-Now lieber per Code-Morphing auf SSE abbilden sollte (so viel langsamer als mit schlecht gepflegter HW dürfte das auch nicht werden). Im Prinzip ist doch das was FlashBurn mit seiner Spezial-Page für den Syscall macht auch nur eine simple Vorstufe von Code-Morphing, warum dann nicht gleich das Executable nehmen und alle INT 0x80 Befehle gegen SYSCALL o.ä. austauschen? Und wenn das Code-Morphing aus Power-PC-Code welchen für x86 erzeugt ist das im Prinzip auch nicht so viel anders nur das eben eine Abstraktionsebene höher Disassembliert und danach wieder richtig neu Assembliert (mitsamt anständigen Optimierungen) werden muss. Genau das ist es auch was ich an ARMs Stelle machen würde wenn die Kompatibilität doch mal an einer Stelle nicht gewährleistet werden kann. Bei Micro-Controllern spielt sowas keine Rolle da der Code eh spezifisch kompiliert wird aber überall dort wo der Konsument vielleicht mal noch ältere SW (z.B. Apps die vor Jahren mal Geld gekostet haben und ihren Job noch immer gut machen) weiter nutzen möchte ist das IMHO ein guter Weg.

Nur, weil dein Hammer nicht passt, setzt du dich auch nicht mit der Feile hin und bastelst so lange dran rum, bis er geht.
Netter Vergleich, ich fürchte nur das Intel an x86 so lange feilen wird bis es doch irgendwie für Embedded taugt. ;)
Ob das Ergebnis dann immer noch so viel mit x86 zu tun hat wie der Name suggeriert steht auf einem anderen Blatt, ich persönlich denke ja dass das gar nicht funktionieren kann und bin deswegen der Meinung das Intel die fehlende Kompatibilität dann lieber in SW mitliefern sollte.

Das ist aber genau das, was ich von einem PC-kompatiblen erwarte, im Gegensatz zu einem Tablet.
Also ich persönlich erwarte das auch von einem Tablet und wenn die Industrie mein Geld haben will das muss sie mir auch so ein Tablet bieten ansonsten treffe ich als mündiger Verbraucher meine Kaufentscheidung eben anders.

Zumal die aktuellen schnellen ARMs wesentlich mehr Energie pro Rechenleistung fressen als die kleineren und wenn du einen aktuellen Cortex mit 2-4 GHz takten wolltest, bist du garnicht mehr so weit weg vom Energiebedarf von x86ern.
Das ist durchaus richtig aber die Anzahl der benötigten Transistoren ist bei ARM immer noch deutlich kleiner und das schlägt sich spürbar im Kaufpreis nieder. Nebst dessen das ich noch keinen Quad-Core-ARM mit über 100W gesehen habe.

Wer sagt denn, dass die das nicht tun?
Niemand, ich vermute sie werden das auch irgendwann mal machen, ich bin ja auch der Meinung das es Intels einzigste echte Option ist um dieses Ziel zu erreichen.

Mikrocode gibt es jedenfalls schon
Also ich glaube Du überschätzt da die Möglichkeiten des Micro-Code ein ganz klein wenig. ;)


... hilft nichtmal mehr ein Backofen.
Das hägt sehr von den Fähigkeiten dieses Backofens ab. Wenn der über eine schnelle und dynamische Temperaturregelung verfügt dürfte der noch im Geschäft sein. ;)
Aber für mein Projekt hab ich mir auch schon mal überlegt ob ein selbst gebauter Reflow-Ofen nicht eine gute Option wäre.


Grüße
Erik
Titel: Re: Auf Android entwickeln
Beitrag von: Sannaj am 12. December 2011, 21:20
Kann man nicht so ne Hijektin-Option einbauen, die beim Start fragt, ob ein bestimmtes Kernelmodul geladen werden soll, das das System Hiject und ein neues Startet?
Titel: Re: Auf Android entwickeln
Beitrag von: LittleFox am 12. December 2011, 21:35
Hi,

Das ist aber genau das, was ich von einem PC-kompatiblen erwarte, im Gegensatz zu einem Tablet.
Also ich persönlich erwarte das auch von einem Tablet und wenn die Industrie mein Geld haben will das muss sie mir auch so ein Tablet bieten ansonsten treffe ich als mündiger Verbraucher meine Kaufentscheidung eben anders.

Full ACK! @Industrie: lesen und danach handeln! :D

Demnach werde ich warten müssen bis man auf Tablets jedes beliebige OS (ohne hacks, Garantieverlust, andere Probleme) installieren kann, oder ich bau mein Tablet selber (da lern' ich gleich mal SMD löten :D)
Einspruch.
Garantieverlust darfst du garantiert einkalkulieren und BGA lötet sich mit einem Lötkolben eher schlecht. SMD wird bei großen µCs nicht verbaut, wenn es überhaupt für dich als Endkunden kaufbar ist. Bei Späßen wie PoP (Package-on-Package), wo der RAM als BGA-Baustein oben auf den µC in BGA-Bauform gebondet wird, hilft nichtmal mehr ein Backofen.
Das man BGA nicht per Hand löten kann weiß ich. Von PoP hab ich allerdings noch nie etwas gehört  :oops:
Tablet selber bauen war sowieso mehr ironisch als ernst gemeint, auch wenn es nicht ganz ironisch war ;)

Grüße,
LittleFox
Titel: Re: Auf Android entwickeln
Beitrag von: MasterLee am 13. December 2011, 08:33
Hi,

Was spricht eigentlich gegen ein Wetab?
die zu kurze Akkulaufzeit. Bei Wikipedia steht bis zu 6h, also gehe ich von 3h aus (mein Laptop ist mit 4 angegeben und schafft 2). 3h sind 2 Unterrichtsstunden, da reicht der Akku dann nicht mehr für den Zug ;) Ich wohne in Chemnitz und gehe in Leipzig in die Schule ...
Trotzdem Danke für den Vorschlag :)

Demnach werde ich warten müssen bis man auf Tablets jedes beliebige OS (ohne hacks, Garantieverlust, andere Probleme) installieren kann, oder ich bau mein Tablet selber (da lern' ich gleich mal SMD löten :D)

Grüße,
LittleFox
Reichen 10Std mit HotSwap?
http://www.tabletpcworld.com/tablet-pc/10zoll-tabletpcs/tablet-pc-rml-10.html
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 13. December 2011, 17:55
Reichen 10Std mit HotSwap?
http://www.tabletpcworld.com/tablet-pc/10zoll-tabletpcs/tablet-pc-rml-10.html
Da ist aber ein x86 drin, was ja ein Ausschlusskriterium ist.

Gruß,
Svenska
Titel: Re: Auf Android entwickeln
Beitrag von: LittleFox am 13. December 2011, 19:31
Hi,

@MasterLee danke für deine Vorschläge :) Leider hat Svenska recht, ich möchte einfach kein x86 mehr :( Ich bin der Meinung, wenn schon ein neuer Laptop/Tablet dann gleich ein ARM - x86 soll endlich sterben. Außerdem erwecken "Preisanfrage" und das Design sehr stark den Eindruck das das Teil sehr teuer ist  :| Die Akkulaufzeit würde allerdings reichen :D

Grüße,
LittleFox
Titel: Re: Auf Android entwickeln
Beitrag von: MasterLee am 14. December 2011, 19:02
Zur Zeit hab ich ein ähnliches Problem ich hab vor kurzen mein Notebook geschrottet (es ist während der Installation von Windows 98 verreckt). Nun verbleibt mir nur noch mein Hammerhead RT800 aber die Batterien sind schon älter und neue kosten 90 Euro pro Stück ausserdem hat das gute Stück nur 512MB RAM.
Was mir bei Handys aufgefallen ist die Batterien halten zwar lang aber nur wenn man nichts tut. Python mit WSGIref server zum testen lutscht die Batterien ziemlich schnell leer.
Vielleicht ist selbst bauen doch eine Lösung?
http://www.liquidware.com/shop/show/BB-BT/BeagleTouch
http://www.liquidware.com/shop/show/BB-BJC/BeagleJuice
Titel: Re: Auf Android entwickeln
Beitrag von: Sannaj am 15. December 2011, 20:14
Naja, so teuer ist die Abwärtskompatiblität dann doch nicht. Wenn man sich die Effekte mal anschaut fällt einen auf ....
Auf die Gefahr hin das man mir gleich Unhöflichkeit vorwerfen wird aber das ist eine recht naive Betrachtung, in Wirklichkeit ist das schon ein wenig komplexer. AMD hat damals bei den ersten 64Bit-Opterons was von 5% mehr Transistoren für den 64Bit-Modus erzählt und 5% sind bei einem Chip der schon einige Millionen Transistoren hat ne ganze Menge und dabei darf man nicht vergessen das ein Großteil der Transistoren für Cache usw. drauf gehen und da dürften die Änderungen eher marginal gewesen sein so das ich persönlich vermute wenn man nur den puren CPU-Kern betrachtet kommen da eher 15 bis 20% Zuwachs bei raus.

Du solltest aber auch die Leitungen betrachten. Eine Verdopplung der Wortbreite und 8 zusätzliche Register kosten einfach, auch wenn man keine Abwährtskompatibilität berücksichtigt. Dazu kommen noch die kosten für zusätzliche SIMI Befehle usw., die ebenfalls unabhängig von der Abwährtskompatiblität sind.

Gruß Sannaj
Titel: Android ROMs
Beitrag von: Martin Erhardt am 10. July 2012, 21:44
Nun ja aber es gibt da ein paar User die rooten ihr Gerät und können dann Aftermarket-Firmware-Distribution wie CyanogenMod aufspielen(mit Tools wie einem bootmenu etc.Es gibt hierzu zwar ziemlich viel Dokumentation aber von schlechter Qualität. Auf XDA-Developers dem Hauptforum zum Thema bekommt man immer wieder haarsträubende Dinge zu hören, weil die meisten Leute dort nur 08/15 User sind die eben mal einen Artikel gelesen haben.  Ich habe damit nicht allzu gute Erfahrungen gemacht :wink:)

Bei CyanogenMod handelt es sich annscheinend um ein Betriebssystem mit Kernel.
Das lässt Wikipedia indirekt verlauten:
"CyanogenMod war auch das erste Betriebssystem für Mobilgeräte, das für die Prozessverwaltung den Brain Fuck Scheduler (BFS) einsetzt – eine Änderung, die in experimentelle Zweige des offiziellen Android-Codebaums übernommen wurde."(§2)
Der Scheduler gehört schließlich zum kernel.

ACHTUNG:
Lange Rede kurzer Sinn: Ich vermute das man mit diesen Tools auch seinen eigenen Kernel auf das Gerät spielen könnte.

PS: Echt viel los heute im Forum
Titel: Re: Auf Android entwickeln
Beitrag von: Svenska am 11. July 2012, 10:57
Außer dem halben Jahr Threadalter hat sich inzwischen ein bisschen was neues entwickelt, so dass die älteren Beiträge nicht mehr topaktuell sind.

Die Linuxleute stören sich an den gleichen Problemen wie wir. Da eine gemeinsame Plattform aber nicht überall in Frage kommt (wegen z.B. Router/Tablet/Netbook/Settopbox/Computer-Unterschieden), gibt es FTDs (Flattened Device Trees), die teilweise schon mandatory sind und zunehmend sein werden und sich meiner Meinung nach für Linux eher durchsetzen werden. Auch ACPI ist im Gespräch, um die Unterschiede zu abstrahieren.

Außerdem entsteht mit Windows 8 für ARM eine Plattform, trotz der ganzen Secure-Boot und EFI-Scherereien.

Zu sehen ist da bisher wenig, aber in 1-2 Jahren kommt da hoffentlich die richtige Richtung.

CyagenMod benutzt die Originalsourcen der Hersteller (GPL) und baut daraus einen verbesserten Kernel plus Userland zusammen. Es wird kein echtes Linux (nur Android), die Kernelversion bleibt und die Treibersituation bleibt ebenfalls: kaputte Treiber bleiben kaputt und proprietäre Treiber proprietär.

Gruß,
Svenska