Handy als Mikrocontroller


19

Ich habe ein paar Handys herumliegen, eines davon ist dieses: http://www.gsmarena.com/sony_ericsson_elm-3057.php Es


ist möglich, den Flash-Speicher zu löschen und ihn durch einen Bootloader zu ersetzen und dann Arduino-Skizzen hochzuladen oder Pic32-Skizzen (C # / C ++).

Ich bin auf diese Idee gekommen, weil es eine sehr kostengünstige Plattform für die Entwicklung von Hardwareprojekten ist. (Sie erhalten einen Bildschirm, Schaltflächen, Audio-E / A, Internet usw., Sie erhalten alles zu einem sehr günstigen Preis im Vergleich zu dem, was Sie erhalten, wenn Sie jedes Teil separat kaufen.)

Ist es möglich, den Flash-Speicher zu löschen und einen Bootloader in ein Telefon zu installieren, um es als eingebetteten Computer zu verwenden?


3
Warum das abstimmen, das ist eine hervorragende Frage.
Rocketmagnet

Es muss wirklich aufgeräumt werden. (Ich habe nicht herabgestimmt, aber iIMade eine ausstehende Bearbeitung, die die gestellte Frage wirklich klärt)
CyberMen

Vielleicht interessiert Sie auch das Rockbox-Projekt, das mit MP3-Playern etwas Ähnliches gemacht hat. Die Leute, die daran beteiligt sind, könnten Ihnen sagen, wie schwierig es ist, Informationen über proprietäre Hardware zu erhalten.
Jeanne Pindar

@ CyberMen Ich bin nicht sicher, was Sie mit "Was ist das Formatieren des Flash-Speichers in einem Telefon und die Installation"
Varesa

@ varesa frag mich nicht, frag OP. Nutzen Sie Ihre deduktiven Englischkenntnisse.
CyberMen,

Antworten:


1

Kosten sind nie ein Problem. Viele Enthusiasten werden bereit sein, für leicht zu hackende High-End-Geräte einen moderaten Preis zu zahlen. Das Problem ist, dass ARM eine geschlossene Plattform ist. In der Regel befindet sich ein Teil mit dem Namen Private ROM auf dem eigentlichen Silizium von SoC (System on Chip). Es blockiert die Wiederverwendung.

Dieser Teil des ROM ist für die Auswahl eines Bootloaders in einer bestimmten Reihenfolge verantwortlich: Z-Modem auf seriellem, externem Nand, seriellem ROM, SD-Karte, externem USB. Für jedes Gerät ist die Bestellung individuell und schlecht dokumentiert. In der Regel sollten Sie nur wenige Tasten gedrückt halten, um in einen alternativen Lader zu verzweigen. Das Image des Bootloaders, wenn die meiste Zeit nach der digitalen Signatur des Plattformbesitzers gesucht wurde. Also kein Glück.

Für ein einzelnes Projekt ist es in Ordnung, ein zufälliges Gerät auszuwählen. Möglicherweise interessieren Sie sich jedoch mehr für bekannte Geräte mit veröffentlichten Schaltplänen und verfügbarem Quellcode für Linux, Android usw.

Daher schlage ich vor, Geräte zu betrachten, die von Communitys aktiver Benutzer umgeben sind : Raspberry Pi, BeagleBone, BeagleBoard, eine Samsung-Evaluierungsplattform (PandaBoard?)

Meine persönliche Erfahrung mit TI AM35XX endete mit einer Enttäuschung über die Komplexität von allem. Das kleinste Linux der Welt mit dem Namen Angstrom verfügt über ein 3-GB-Distributions-Image. Die Dokumente für Chips sind 4000-5000 Seiten. Es fühlte sich nicht viel wie ein Hobby an und machte keinen Spaß.

Die Situation kann sich ändern, nachdem Intel Atom SoC populär wird. Ich erwarte massives Benutzerinteresse und werde der Menge in Richtung eines möglichst kleinen Atoms mit Bildschirm folgen. Hoffe, jemand wird ein Panel-Stück mit Größe der Kreditkarte und GPIO vervollständigen. Es wird Spaß machen.


2
Tatsächlich ist der TI AM35XX fantastisch - das kleinste Linux auf dieser Plattform passt gut unter 3 MB . Ich persönlich verwende diese (und den AM33XX) für eine ganze Reihe von Dingen. Sobald Sie den Aufwand der Cross-Kompilierung hinter sich gebracht haben, verfügen Sie über eine gut unterstützte, gut dokumentierte Hardware. Ja, es ist kompliziert und das TRM (5000 Seiten) ist ein riesiger Baustein, aber es ist als Referenzdokument gedacht, nicht als Schlaflied (du kannst es auch als solches verwenden)
qdot

+1. Ja, ich stimme zu, dass TI ARM möglicherweise das Beste ist, was man finden kann. Ich meinte nur meine persönliche Erfahrung als Bastler. Wenn es mein Tagesjob wäre, mit ARM in einem Team zu ringen, würde es viel mehr Spaß machen.

Nun, ich würde mit einer überlasteten Maschine ringen, als mit einer unterlasteten im Allgemeinen. Es ist eindeutig kein Arduino, aber es ist Linux. Sobald Sie den Kernel booten, ist es nicht anders als jede andere CrossDev-Plattform da draußen. Erstellen Sie ein Userland (oder erstellen Sie Ihr eigenes Init und führen Sie es von dort aus), und Sie sind zu Hause :)
qdot

5

Vor langer Zeit gab es ein ähnliches Projekt (Reverse Engineering einer billigen und sehr beliebten Telefonfamilie).

http://nokix.pasjagsm.pl/help/blacksphere/sub_050main.htm

Und ja, die Android-Option ist wahrscheinlich die einfachste. Oder Windows Mobile, sie ist auch einigermaßen offen.


Warten Sie, ist das Low-Level-Zeug für WP auch offen?
Varesa

WP oder WM? Windows Phone, dh Version 7 und höher, ist etwas, mit dem ich nur begrenzte Erfahrung habe, aber ich denke, es kann immer noch native C-Binärdateien ausführen. Version 6, die den Großteil der alten, aber extrem leistungsfähigen PDA-Telefone ausmacht, ist extrem offen - es läuft mit nativem C-Code, es kann mit MSVC und GCC kompiliert werden, es hat fast keine Sicherheit. Sie können buchstäblich eine starten Bootloader als reguläre App, und es springt zum Linux-Kernel :)
qdot

Nachdem ich das vor langer Zeit mit meinem HTC Touch Pro ausprobiert habe, kann ich dafür bürgen, dass Sie in einen Linux-Kernel (oder einen benutzerdefinierten Android-Build) springen können. Das heißt nicht, dass die Kommunikation mit der gesamten Hardware genauso einfach oder machbar ist. (Leider, da ich WM6 aus Leidenschaft hasste, aber es gab keine Möglichkeit, die Funktionalität eines anderen Betriebssystems beizubehalten.)
Alexios,

qdot, warum erzählst du uns nicht mehr über den Ansatz, ein Windows Phone 6/7 aus dem Laden zu kaufen und es meinen eigenen Code steuern zu lassen, sagen wir mal 5 Servos über die serielle Schnittstelle.
Harry Svensson

1
@qdot können Sie einige dieser Informationen überbringen, so dass der Link nur eine Referenz ist, im Moment ist es anfällig, rot zu verlinken.
Kortuk

3

Ich habe keine Erfahrung damit, aber ich denke nicht, dass es einfach sein würde (wenn überhaupt möglich). Ich denke, Sie können das Programmieren in C ++ oder C # und eher in ASM + C vergessen. Es wäre nicht kompatibel mit Arduino-Skizzen oder PIC32-Code oder irgendetwas anderem, das nicht für die spezifische CPU gemacht ist. Viele neue Handys haben so etwas wie einen ARM-Kern.

Ich weiß nicht wirklich, wie Sie das Gerät programmieren würden, aber ich gehe davon aus, dass dies möglich ist, da sie normalerweise die Firmware aktualisieren können, wenn Sie sie zur Wartung an sie senden.

Außerdem müssten Sie Ihre eigenen Treiber für die gesamte Hardware (Display, WLAN, Sensoren usw.) codieren, was ohne weitere Informationen zu der Hardware, die der Telefonhersteller Ihnen wahrscheinlich nicht zur Verfügung stellen wird, sehr schwierig wäre .

Ich denke, der einfachste Weg wäre so etwas wie ein altes Android-Handy, da man den Quellcode mit Treibern und all den Sachen auf niedriger Ebene kostenlos bekommen kann. Sie könnten die Benutzeroberfläche und andere für den Benutzer sichtbare Komponenten wegreißen oder verwenden. Aber dies ist wahrscheinlich nicht das, was Sie wollen, es sei denn, Sie haben ein paar alte Android-Handys herumliegen.

Wenn das Telefon "gehackt" wurde, um ein anderes Betriebssystem auszuführen, insbesondere Open Source-Betriebssysteme wie Android, können Sie möglicherweise die Quellen für den Port abrufen, mit dem Sie spielen möchten.


Wäre es nicht möglich, alles aus dem Flash-Speicher auszulesen und den Flash-Speicher von dort aus zu lesen / zu ändern?
Harry Svensson

@HarrySvensson Nun, Sie müssten entweder den Speicher direkt ändern oder eine Art Programmier-Port / -Header verwenden, der möglicherweise zum Aktualisieren der Firmware vorhanden ist. Möglich, aber nicht einfach.
Varesa

2
Warum die zufällige Abwahl?
Varesa

@HarrySvensson, vorausgesetzt, Sie hätten die Tools, um den gesamten Flash-Speicher zu sichern (es könnten mehrere Flash-Chips vorhanden sein, die verschiedene Dinge enthalten, z. B. sichere Bootloader, und andere, die möglicherweise proprietäre Tools erfordern) von Hand? Erwarten Sie nicht, dass alles in einem netten Dateisystemformat vorliegt, das Sie einfach wie ein USB-Stick auf Ihrem Computer mounten können. Sie könnten eine Menge proprietärer und nicht wiedererkennbarer Inhalte sehen oder nur unformatierten Assembler-Code, in dem sich möglicherweise Programmcode befindet.
Jon L

2

Das alles selbst zu tun wird bestenfalls schwierig sein. Mit einem der vom Rockbox- Projekt unterstützten Geräte , bei dem es sich um Open-Source-Firmware für MP3-Player handelt, hätten Sie es viel einfacher . Einige dieser Geräte sind kostengünstig und bieten viele der von Ihnen genannten Vorteile. Außerdem wurde die Firmware über USB aktualisiert. Sie hätten die Hilfe einer aktiven Community, die bereits die grundlegenden Probleme in Bezug auf Compiler, Bootloader usw. sowie einige Quellcodes herausgefunden hat.

Ein nettes Feature von Rockbox ist, dass es die Geräte auf Dual-Boot einrichtet, sodass sie auch dann für ihren ursprünglichen Zweck verwendet werden können, wenn Sie die neue Firmware nicht verwenden.


0

Nein.

In der öffentlichen Dokumentation für dieses Telefon (z. B. auf der Seite, auf die Sie verlinkt haben) wird nicht einmal der Prozessortyp aufgeführt. Selbst wenn dies der Fall wäre, müssten Sie den Schaltplan (einschließlich der Teilenummern aller ICs) verwenden, um Code dafür schreiben zu können. Das wäre Eigentum von Sony / Ericsson, Sie werden es also nicht bekommen. Gleiches gilt für jedes andere Handy.

In dem unwahrscheinlichen Fall, dass Sie die gesamte Dokumentation für den Prozessor, den Flash-Speicher usw. haben, ist es möglicherweise möglich, einen Arduino-kompatiblen Bootloader zu schreiben, nachdem Sie mehrere Wochen Ihrer Zeit damit verbracht haben. Natürlich würde dies erfordern, dass Sie die Entwicklungsumgebung für das Telefon erhalten, was wahrscheinlich Hunderte, wenn nicht Tausende von Dollar kosten würde.

Selbst wenn Sie einen Arduino kompatiblen Bootloader schreiben konnten, wäre es unmöglich Wiederholung unmöglich Arduino Skizzen zu laden und zu laufen , weil 1) der Compiler für die Arduino wird folgender Code zu emittieren für einen Arduino kompatiblen Mikrocontroller (Atmega, PIC32 etc.) , und das Telefon wird definitiv nicht mehr von diesen Gebrauch machen - höchstwahrscheinlich wird es eine Variante von ARM sein); und 2) die I / O-Ports werden nicht an denselben Stellen (Ports) des Mobiltelefons liegen wie auf dem Arduino.

Beachten Sie, dass es einige Open-Source-Handys gibt, Sie jedoch keine Arduino-Software für die oben genannten Geräte ausführen können (Prozessor- und Hardware-Inkompatibilität). Einige der anderen Antworten haben Android vorgeschlagen, stellen jedoch fest, dass es aufgrund proprietärer Treiber nicht auf der Liste der Open-Source-Telefone steht. Und wieder war die Frage, ob Sie Arduino-Code für diese ausführen können, und die Antwort lautet definitiv nein.

Es ist also viel billiger, einfach in die Kugel zu beißen und ein Arduino-Board und Peripheriegeräte zu bekommen.


0

Was braucht es, um verschiedene "alltägliche" Hardware in Mikrocontroller-Plattformen zu verwandeln? Sprites Mods sind eine exzellente Inspirationsquelle. Es gibt eine gute Erklärung des Prozesses, der erforderlich ist, um die Geräte zu "öffnen" und die Kontrolle über sie zu erlangen. TL; DR: Sie können Linux auf einer SD-Karte und auf einer Festplatte ausführen. Nein, nicht mit einer Festplatte. Auf einer Festplatte - auf der ziemlich leistungsstarken CPU, die den Controller der Festplatte darstellt.


Der Linksys WRT54G-Router war ein beliebtes Gerät zum Hacken, da er Open-Source-Software verwendete, sodass Linksys verpflichtet war, den Quellcode freizugeben. Am Ende hatten Sie eine anpassbare Plattform mit Linux, integrierten Ethernet-Ports und WLAN.
tcrosley
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.