Teléfono celular como microcontrolador

Tengo un par de teléfonos celulares por ahí, uno de ellos es este: http://www.gsmarena.com/sony_ericsson_elm-3057.php


Es posible borrar la memoria flash y reemplazarla con un cargador de arranque y luego cargar bocetos de arduino o bocetos pic32 (C#/C++).

Se me ocurrió esta idea porque es una plataforma muy barata para desarrollar proyectos de hardware. (Obtiene una pantalla, botones, E/S de audio, Internet, etc., obtiene todo a un precio muy económico en comparación con lo que obtiene comprando cada parte por separado).

¿Es posible borrar la memoria flash e instalar un cargador de arranque en un teléfono para usarlo como una computadora integrada?

¿Por qué el voto negativo? Esta es una pregunta excelente.
Realmente necesita ser limpiado. (No voté en contra, pero hice una edición pendiente que realmente aclara la pregunta que se hace)
Quizás te interese el proyecto Rockbox, que ha estado haciendo algo similar con los reproductores de mp3. Las personas involucradas en eso podrían decirle lo difícil que es obtener información sobre hardware propietario.
@CyberMen No estoy seguro de lo que quiere decir con "¿Qué es formatear la memoria flash en un teléfono e instalarla?"
@varesa no me preguntes, pregúntale a OP. Usa tus habilidades deductivas en inglés.
@CyberMen Mi opinión es que tenía un poco más de sentido antes de la edición. No estaba correctamente formateado, pero capté la idea. (Que no puedo encontrar en la nueva versión)
Gente cambiando mi publicación... haciéndola rara ._. gracias cybermen
@HarrySvensson Sí, pero alguien tenía que aprobarlo. Así que no era 100% yo.

Respuestas (6)

El costo nunca es un problema. Muchos entusiastas estarán dispuestos a pagar un precio moderado por dispositivos de gama alta fácilmente hackeables. El problema es que ARM es una plataforma cerrada. Por lo general, hay una parte llamada ROM privada en el mismo silicio de SoC (sistema en chip). Bloquea la reutilización.

Esta parte de la ROM es responsable de elegir un cargador de arranque en algún orden: Z-Modem en serie, Nand externo, ROM en serie, tarjeta SD, USB externo. Para cada dispositivo, el pedido es individual y está mal documentado, por lo general, debe mantener presionados algunos botones cuando se enciende para pasar al cargador alternativo. La imagen del cargador de arranque si la mayoría de las veces se comprueba la firma digital del propietario de la plataforma. Así que no hay suerte.

Para un proyecto único, está bien elegir un dispositivo aleatorio. Pero posiblemente le interese más un dispositivo conocido, con esquemas publicados y código fuente disponible para Linux, Android, etc.

Así que mi sugerencia es buscar dispositivos rodeados de comunidades de usuarios activos : Raspberry Pi, BeagleBone, BeagleBoard, alguna plataforma de evaluación de Samsung (¿PandaBoard?)

Mi experiencia personal con TI AM35XX terminó con una decepción por la complejidad de todo. El Linux más pequeño del mundo llamado Angstrom tiene una imagen de distribución de 3 GB. Los documentos para chips son 4000-5000 páginas. No se sentía como un pasatiempo y no era agradable.

La situación puede cambiar después de que Intel Atom SoC se vuelva popular. Espero un gran interés de los usuarios y seguiré a la multitud en dirección al Atom con pantalla más pequeño posible. Espero que alguien complete una pieza montable en panel con el tamaño de una tarjeta de crédito y GPIO. Será divertido.

En realidad, la TI AM35XX es impresionante : el Linux más pequeño de esta plataforma cabe por debajo de los 3 MB. Personalmente, estoy usando estos (y el AM33XX) para un montón de cosas, una vez que pasa por la molestia de la compilación cruzada, tiene una pieza de hardware bien documentada y bien respaldada. Sí, es complicado, y el TRM (5000 páginas) es un ladrillo enorme, pero está pensado como un documento de referencia, no como una canción de cuna (también puede servir como tal)
+1. Sí, estoy de acuerdo en que TI ARM es posiblemente el mejor que se puede encontrar. Me refiero solo a mi experiencia personal como aficionado. Si mi trabajo diario fuera luchar con ARM en un equipo, sería mucho más divertido.
Bueno, lucharía con una máquina dominada, que con una con poca potencia, en general. Claramente no es Arduino, pero es Linux, una vez que arranca el kernel, no es diferente a cualquier otra plataforma crossdev que existe. Cree un área de usuario (o cree su propio init y ejecútelo desde allí), y estará en casa :)

Hace mucho tiempo, hubo un proyecto para hacer algo similar (ingeniería inversa de una familia de teléfonos económicos y muy populares).

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

Y sí, la opción de Android es probablemente la más fácil... o Windows Mobile, también es razonablemente abierta.

Espera, ¿también están abiertas las cosas de bajo nivel para WP?
¿WP o WM? Windows Phone, es decir, la versión 7 y superior, es algo con lo que tengo una experiencia limitada, pero creo que aún puede ejecutar binarios C nativos. La versión 6, que constituye la mayor parte de los teléfonos PDA antiguos pero extremadamente potentes, es extremadamente abierta: ejecuta código C nativo, se puede compilar con MSVC y GCC, casi no tiene seguridad... literalmente puede iniciar un bootloader como una aplicación normal, y salta al kernel de Linux :)
Habiendo probado esto mismo hace mucho tiempo con mi HTC Touch Pro, puedo asegurar que sí, puedes saltar a un kernel de Linux (o una versión personalizada de Android). Eso no quiere decir que hablar con todo el hardware sea igualmente fácil o factible. (Lamentablemente, odiaba WM6 con pasión, pero no había forma de que pudiera mantener el mismo nivel de funcionalidad con cualquier otro sistema operativo)
qdot, ¿por qué no nos cuenta más sobre el enfoque de comprar un teléfono con Windows 6/7 en la tienda y ejecutar mi propio código controlando, digamos, 5 servos a través del puerto serie?
@qdot, ¿puede traer parte de esta información para que el enlace sea solo una referencia, en este momento es susceptible a la descomposición del enlace?
El problema con Project Blacksphere es que es un tesoro de información, que en algún momento resulta en una respuesta legal significativa de Nokia/NSN. También es probable que parte de esa información haya sido sustancial en el desarrollo del firmware que permite a los delincuentes eludir algunos de los sistemas de autenticación multifactor basados ​​en SMS. pcworld.com/businesscenter/article/163409/… ... Es muy difícil seleccionar lo que se aplica directamente a las necesidades de @HarrySvensson e imposible reflejarlo.
@HarrySvensson: ¿qué le gustaría que ampliara con respecto a Windows Mobile? Es difícil adivinar lo que quieres hacer con ellos, pero son extremadamente pirateables, tienen buena documentación (esto fue cuando eran realmente PDA que incluían un módem GSM) y un conjunto de interfaces bastante abierto y amplio. SDIO es increíble , ya que básicamente está muxado directamente desde el SoC principal, etc... o puede diseñar su propia placa IO con algún microcontrolador para el bucle en tiempo real y usar el teléfono host como computadora de control.

No tengo experiencia en esto, pero no creo que sea fácil (si es que es posible). Creo que puedes olvidarte de programarlo en C ++ o C #, y más bien en ASM + C. No sería compatible con los bocetos de arduino o el código PIC32 ni nada, que no esté hecho para la CPU específica. Muchos teléfonos nuevos tienen algo así como un núcleo ARM.

Realmente no sé cómo programaría el dispositivo, pero asumo que es posible, ya que generalmente pueden actualizar el firmware si se lo envía a reparar.

También tendría que codificar sus propios controladores para todo el hardware (pantalla, WLAN, sensores, etc.), lo que sería realmente difícil sin más información sobre el hardware, que el fabricante del teléfono probablemente no le dará a conocer. .

Creo que la forma más fácil sería algo así como un teléfono Android antiguo, ya que puede obtener el código fuente con los controladores y todas las cosas de bajo nivel de forma gratuita. Puede eliminar o usar la interfaz de usuario y otros componentes visibles para el usuario. Pero esto probablemente no es lo que quieres, a menos que tengas algunos teléfonos Android viejos por ahí.

Además, si el teléfono ha sido "pirateado" para ejecutar cualquier otro sistema operativo, especialmente los de código abierto como Android, es posible que pueda obtener las fuentes para jugar con el puerto.

¿No sería posible leer todo de la memoria flash y leer/modificar la memoria flash desde allí?
@HarrySvensson Bueno, tendría que modificar la memoria directamente o usar algún tipo de puerto/encabezado de programación que podría estar allí para actualizar el firmware. Posible, pero no fácil.
¿Por qué el voto negativo al azar?
@HarrySvensson, suponiendo que tuviera las herramientas para volcar toda la memoria flash (podría haber varios chips flash destinados a contener cosas diferentes, como cargadores de arranque seguros y otras cosas, algunos tal vez requieran herramientas propietarias), ¿se sentiría cómodo decodificando todo? de ella a mano? No espere que todo esté en un buen formato de sistema de archivos que pueda montar en su computadora como una memoria USB. Podría ver muchas cosas propietarias e irreconocibles o simplemente un código de ensamblaje sin procesar donde puede haber algún código de programa.

Hacerlo todo usted mismo será difícil en el mejor de los casos. Sería mucho más fácil con uno de los dispositivos compatibles con el proyecto Rockbox , que es un firmware de código abierto para reproductores de mp3. Algunos de estos dispositivos son económicos y ofrecen muchas de las ventajas que mencionas, y están diseñados para actualizar su firmware a través de USB. Tendría la ayuda de una comunidad activa que ya ha resuelto los problemas básicos relacionados con compiladores, gestores de arranque, etc., así como algún código fuente para empezar.

Una buena característica de Rockbox es que configura los dispositivos para un arranque dual, por lo que aún pueden usarse para su propósito original cuando no está usando el nuevo firmware.

No.

La documentación pública de este teléfono (como en la página a la que se vinculó) ni siquiera enumera el tipo de procesador. Incluso si lo hiciera, necesitaría el esquema (incluidos los números de pieza de todos los circuitos integrados) para poder escribir el código. Eso sería propiedad de Sony/Ericsson, por lo que no lo obtendrá). Lo mismo para cualquier otro teléfono celular.

En el caso improbable de que obtuvieras toda la documentación del procesador, la memoria flash, etc., podría ser posible escribir un cargador de arranque compatible con Arduino después de pasar varias semanas de tu tiempo. Por supuesto, esto requeriría que obtenga el entorno de desarrollo para el teléfono, lo que probablemente costaría cientos, si no miles de dólares.

Incluso si pudiera escribir un cargador de arranque compatible con Arduino, sería imposible repetirlo , cargar y ejecutar bocetos de Arduino porque 1) el compilador de Arduino emitirá código para un microcontrolador compatible con Arduino (Atmega, PIC32, etc.) , y el teléfono definitivamente no va a usar ninguno de ellos; lo más probable es que sea alguna variante de ARM); y 2) los puertos de E/S no estarán ubicados en las mismas ubicaciones (puertos) en el teléfono celular que en el Arduino.

Tenga en cuenta que hay algunos teléfonos celulares de código abierto , pero no podrá ejecutar el software Arduino en ellos por lo mismo que mencioné anteriormente (incompatibilidad de procesador y hardware). Algunas de las otras respuestas han sugerido Android, pero tenga en cuenta que no está en la lista de teléfonos de código abierto debido a los controladores propietarios. Y una vez más, la pregunta era si se puede ejecutar el código Arduino en ellos, y la respuesta es definitivamente no.

Por lo tanto, es mucho más barato morder la bala y obtener una placa Arduino y periféricos.

¿Qué se necesita para convertir hardware "diario" en plataformas de microcontroladores? Los mods de Sprite son una excelente fuente de inspiración. Da una buena explicación del proceso necesario para "abrir" los dispositivos y obtener control sobre ellos. TL; DR: puede ejecutar Linux en una tarjeta SD y en un disco duro. No, no usar un disco duro. En un disco duro: en la CPU bastante potente que es el controlador de la unidad.

El enrutador Linksys WRT54G era un dispositivo popular para piratear, ya que usaba software de código abierto, por lo que Linksys estaba obligado a publicar el código fuente. Obtuvo una plataforma personalizable que ejecuta Linux, con puertos Ethernet y Wi-Fi incorporados.