Telefono cellulare come microcontrollore


19

Ho un paio di telefoni cellulari in giro, uno dei quali è questo: http://www.gsmarena.com/sony_ericsson_elm-3057.php


È possibile cancellare la memoria flash e sostituirla con un bootloader e quindi caricare schizzi di Arduino o schizzi pic32 (C # / C ++).

Ho avuto questa idea perché è una piattaforma molto economica per lo sviluppo di progetti hardware. (Ottieni uno schermo, pulsanti, I / O audio, internet, ecc., Ottieni tutto a un prezzo molto basso rispetto a quello che ottieni acquistando ogni parte separatamente.)

È possibile cancellare la memoria flash e installare un caricatore di avvio in un telefono per utilizzarlo come computer incorporato?


3
Perché il voto negativo, questa è un'ottima domanda.
Rocketmagnet,

Deve davvero essere ripulito. (Non ho votato verso il basso, ma ho creato una modifica in sospeso che chiarisce davvero la domanda che viene posta)
CyberMen

Potresti essere interessato al progetto Rockbox, che ha fatto qualcosa di simile con i lettori mp3. Le persone coinvolte potrebbero dirti quanto sia difficile ottenere informazioni sull'hardware proprietario.
Jeanne Pindar,

@CyberMen Non sono sicuro di cosa intendi con "Qual è la formattazione della memoria flash in un telefono e l'installazione"
Varesa,

@varesa non chiedermelo, chiedi a OP. Usa le tue abilità deduttive in inglese.
CyberMen,

Risposte:


1

Il costo non è mai un problema. Molti appassionati saranno disposti a pagare un prezzo moderato per dispositivi di fascia alta facilmente hackerabili. Il problema è che ARM è una piattaforma chiusa. In genere esiste una parte denominata ROM privata sul silicio stesso del SoC (sistema su chip). Blocca il riutilizzo.

Questa parte della ROM è responsabile della scelta di un bootloader in un certo ordine: Z-Modem su seriale, Nand esterna, ROM seriale, SDCard, USB esterna. Per ogni dispositivo l'ordine è individuale e scarsamente documentato, in genere è necessario tenere alcuni pulsanti quando si accende per passare al caricatore alternativo. L'immagine del bootloader se la maggior parte delle volte ha verificato la firma digitale del proprietario della piattaforma. Quindi niente fortuna.

Per un progetto unico è OK scegliere un dispositivo casuale. Ma probabilmente sarai più interessato a dispositivi ben noti, con schemi pubblicati e codice sorgente disponibile per Linux, Android ecc.

Quindi il mio suggerimento è quello di guardare i dispositivi circondati da comunità di utenti attivi : Raspberry Pi, BeagleBone, BeagleBoard, alcune piattaforme di valutazione Samsung (PandaBoard?)

La mia esperienza personale con TI AM35XX si è conclusa con delusione per la complessità di tutto. Il più piccolo Linux al mondo chiamato Angstrom ha un'immagine di distribuzione da 3 GB. I documenti per i chip sono 4000-5000 pagine. Non sembrava un hobby e non era divertente.

La situazione potrebbe cambiare dopo che Intel Atom SoC diventerà popolare. Mi aspetto un grande interesse da parte degli utenti e seguirò la folla in direzione del più piccolo Atom con schermo. Spero che qualcuno completi un pannello montabile con dimensioni di carta di credito e GPIO. Sarà divertente.


2
In realtà, la TI AM35XX è fantastica : il più piccolo Linux su questa piattaforma si adatta ben meno di 3 MB. Personalmente sto usando questi (e l'AM33XX) per un sacco di cose, una volta superata la seccatura della compilazione incrociata, hai un hardware ben supportato e ben documentato. Sì, è complicato e il TRM (5000 pagine) è un enorme mattone, ma è inteso come un documento di riferimento, non come una ninna nanna (puoi anche servire come tale)
qdot

+1. Sì, sono d'accordo che TI ARM è probabilmente il migliore che si possa trovare. Intendevo solo la mia esperienza personale come hobbista. Se il mio lavoro quotidiano fosse lottare con ARM in una squadra, sarebbe molto più divertente.

Bene, avrei lottato con una macchina sopraffatta, piuttosto che una sottodimensionata, in generale. Chiaramente non è Arduino, ma è Linux, una volta avviato il kernel, non è diverso da qualsiasi altra piattaforma crossdev là fuori. Costruisci un po 'di userland (o costruisci il tuo init ed
eseguilo

5

Tempo fa, c'era un progetto per fare qualcosa di simile (decodificare una famiglia di telefoni economica e molto popolare).

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

E sì, l'opzione Android è probabilmente la più semplice .. o Windows Mobile, è anche ragionevolmente aperta.


Aspetta, anche le cose di basso livello per WP sono aperte?
varesa,

WP o WM? Windows Phone, ovvero la versione 7 e successive, è qualcosa con cui ho un'esperienza limitata, ma penso che possa ancora eseguire binari C nativi. La versione 6, che costituisce la maggior parte dei vecchi ma estremamente potenti telefoni PDA, è estremamente aperta: esegue il codice C nativo, può essere compilato con MSVC e GCC, non ha quasi alcuna sicurezza .. letteralmente è possibile avviare un bootloader come app normale e passa al kernel Linux :)
qdot

Avendo provato questa cosa anni fa con il mio HTC Touch Pro, posso confermare che sì, puoi saltare in un kernel Linux (o una build Android personalizzata). Questo non vuol dire che parlare con tutto l'hardware sia ugualmente facile o fattibile. (purtroppo, poiché odiavo WM6 con passione, ma non c'era modo di mantenere lo stesso livello di funzionalità con qualsiasi altro sistema operativo)
Alexios

qdot, perché non ci dici di più sull'approccio dall'aver acquistato un telefono Windows 6/7 dal negozio al far funzionare il mio codice controllando diciamo 5 servi attraverso la porta seriale.
Harry Svensson,

1
@qdot puoi riportare alcune di queste informazioni in modo che il link sia solo un riferimento, in questo momento è suscettibile al marciume del link.
Kortuk,

3

Non ho esperienza su questo, ma non penso che sarebbe facile (se possibile). Penso che tu possa dimenticare di programmarlo in C ++ o C #, e piuttosto in ASM + C. Non sarebbe compatibile con schizzi arduino o codice PIC32 o altro, che non è fatto per la CPU specifica. Molti nuovi telefoni hanno qualcosa come un core ARM.

Non so davvero come programmare il dispositivo, ma presumo che sia possibile, in quanto di solito possono aggiornare il firmware se lo si invia per il servizio.

Inoltre dovresti codificare i tuoi driver per tutto l'hardware (display, WLAN, sensori, ecc ...), il che sarebbe davvero difficile senza ulteriori informazioni sull'hardware, che il produttore del telefono probabilmente non ti rilascerà .

Penso che il modo più semplice sarebbe qualcosa di simile a un vecchio telefono Android, in quanto puoi ottenere gratuitamente il codice sorgente con i driver e tutte le cose di basso livello. È possibile strappare o utilizzare l'interfaccia utente e altri componenti visibili all'utente. Ma questo non è ciò che desideri, a meno che tu non abbia dei vecchi telefoni Android in giro.

Inoltre, se il telefono è stato "hackerato" per eseguire qualsiasi altro sistema operativo, in particolare quelli open source come Android, potresti essere in grado di ottenere le fonti con cui giocare la porta.


Non sarebbe possibile leggere tutto dalla memoria flash e leggere / modificare la memoria flash da lì?
Harry Svensson,

@HarrySvensson Beh, dovresti o modificare direttamente la memoria, o usare un qualche tipo di porta / intestazione di programmazione che potrebbe essere lì per aggiornare il firmware. Possibile, ma non facile.
varesa,

2
Perché il down-voto casuale?
varesa,

@HarrySvensson, supponendo che tu avessi gli strumenti per scaricare tutta la memoria flash (potrebbero esserci diversi chip flash pensati per contenere cose diverse come bootloader sicuri e cosa no, alcuni forse richiedono strumenti proprietari), ti sentiresti a tuo agio nel decodificare tutto di esso a mano? Non aspettarti che tutto sia in un bel formato di file system che puoi semplicemente montare sul tuo computer come una chiavetta USB. Potresti vedere un sacco di cose proprietarie e irriconoscibili o semplicemente codice di assembly raw stretto dove potrebbe esserci un codice di programma.
Jon L

2

Fare tutto da soli sarà difficile nella migliore delle ipotesi. Avresti un tempo molto più semplice con uno dei dispositivi supportati dal progetto Rockbox , che è un firmware open source per lettori mp3. Alcuni di questi dispositivi sono economici e offrono molti dei vantaggi menzionati e sono progettati per l'aggiornamento del firmware tramite USB. Avresti l'aiuto di una comunità attiva che ha già capito i problemi di base relativi a compilatori, bootloader, ecc. E anche un codice sorgente per cominciare.

Una bella caratteristica di Rockbox è che configura i dispositivi su dual boot, quindi possono essere ancora utilizzati per il loro scopo originale quando non si utilizza il nuovo firmware.


0

No.

La documentazione pubblica per questo telefono (come nella pagina a cui ti sei collegato) non elenca nemmeno il tipo di processore. Anche in questo caso, sarebbe necessario lo schema (compresi i numeri di parte di tutti i circuiti integrati) per poter scrivere il codice per esso. Sarebbe di proprietà di Sony / Ericsson, quindi non lo otterrai. Lo stesso per qualsiasi altro telefono cellulare.

Nel caso improbabile che tu abbia tutta la documentazione per il processore, la memoria flash ecc., Potrebbe essere possibile scrivere un bootloader compatibile con Arduino dopo aver trascorso diverse settimane del tuo tempo. Naturalmente questo richiederebbe di ottenere l'ambiente di sviluppo per il telefono, che probabilmente costerebbe centinaia se non migliaia di dollari.

Anche se tu fossi in grado di scrivere un bootloader compatibile con Arduino, sarebbe impossibile ripetere impossibile caricare ed eseguire gli schizzi di Arduino perché 1) il compilatore per Arduino emetterà codice per un microcontrollore compatibile con Arduino (Atmega, PIC32 ecc.) , e il telefono sicuramente non lo userà più - probabilmente molto probabilmente sarà una variante di ARM); e 2) le porte I / O non si troveranno nelle stesse posizioni (porte) sul telefono cellulare come sull'Arduino.

Nota che ci sono alcuni telefoni cellulari open source , ma non sarai in grado di eseguire il software Arduino su quelli per gli stessi citati sopra (incompatibilità di processore e hardware). Alcune delle altre risposte hanno suggerito Android, ma si noti che non è nell'elenco dei telefoni open source a causa di driver proprietari. E ancora una volta la domanda era: puoi eseguire il codice Arduino su quelli, e la risposta è sicuramente no.

Quindi è molto più economico semplicemente mordere il proiettile e ottenere una scheda e periferiche Arduino.


0

Cosa serve per trasformare i vari hardware "quotidiani" in piattaforme di microcontrollori? Le mod di Sprite sono un'ottima fonte di ispirazione. Fornisce una buona spiegazione del processo necessario per "aprire" i dispositivi e ottenere il controllo su di essi. TL; DR: è possibile eseguire Linux su una scheda SD e su un disco rigido. No, non usando un disco rigido. Su un disco rigido - sulla CPU abbastanza potente che è il controller dell'unità.


Il router Linksys WRT54G era un dispositivo popolare da hackerare, poiché utilizzava software open source quindi Linksys era obbligato a rilasciare il codice sorgente. Sei finito con una piattaforma personalizzabile con Linux, con porte Ethernet e Wi-Fi integrate.
tcrosley
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.