Teléfono celular como microcontrolador


19

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


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

Tengo 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 por un precio muy barato 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?


3
Por qué el voto negativo, esta es una excelente pregunta.
Rocketmagnet

Realmente necesita ser limpiado. (No voté en contra, pero iIMade una edición pendiente que realmente aclara la pregunta que se hace)
CyberMen

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 patentado.
Jeanne Pindar

@CyberMen No estoy seguro de lo que quieres decir con "¿Cuál es el formateo de la memoria flash en un teléfono y la instalación?"
varesa

@varesa no me preguntes, pregunta a OP. Usa tus habilidades deductivas de inglés.
CyberMen

Respuestas:


1

El costo nunca es un problema. Muchos entusiastas estarán dispuestos a pagar un precio moderado por dispositivos de alta gama fácilmente pirateables. 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 ROM es responsable de elegir un gestor de arranque en algún orden: Módem Z en serie, Nand externo, ROM serial, tarjeta SD, USB externo. Para cada dispositivo, el pedido es individual y está poco documentado, por lo general, debe mantener presionados algunos botones cuando se enciende para ramificarse en un cargador alternativo. La imagen del gestor de arranque si la mayoría de las veces se verificó la firma digital del propietario de la plataforma. Entonces no hay suerte.

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

Entonces, mi sugerencia es mirar 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 3GB. Los documentos para chips son de 4000-5000 páginas. No se sentía como un hobby y no era agradable.

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


2
En realidad, la TI AM35XX es increíble : el Linux más pequeño de esta plataforma se ajusta a menos de 3 MB. Personalmente estoy usando estos (y el AM33XX) para un montón de cosas, una vez que superas la molestia de la compilación cruzada, tienes una pieza de hardware bien respaldada y bien documentada. Sí, es complicado, y el TRM (5000 páginas) es un gran ladrillo, pero se entiende como un documento de referencia, no como una canción de cuna (también puede servir como tal)
qdot

+1. Sí, estoy de acuerdo en que TI ARM es posiblemente el mejor que se puede encontrar. Me refería solo a mi experiencia personal como aficionado. Si fuera mi trabajo diario luchar con ARM en un equipo, sería mucho más divertido.

Bueno, lucharía con una máquina dominada, en general, con una máquina con poca potencia. Es evidente que no es Arduino, pero es Linux, una vez que se inicia el kernel, no es diferente de cualquier otra plataforma crossdev. Cree un país de usuario (o cree su propio init y corra desde allí), y
estará en

5

Hace años, había un proyecto para hacer algo similar (ingeniería inversa, una familia de teléfonos barata y muy popular).

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á abierto el material de bajo nivel para WP?
varesa

WP o WM? Windows Phone, es decir, la versión 7 y superior, es algo con lo que tengo experiencia limitada, pero creo que aún puede ejecutar binarios C nativos. La versión 6, que constituye la mayor parte de los antiguos pero extremadamente potentes teléfonos PDA, es extremadamente abierta: ejecuta código C nativo, puede compilarse con MSVC y GCC, casi no tiene seguridad ... literalmente puede iniciar un gestor de arranque como una aplicación normal, y salta al kernel de Linux :)
qdot

Después de haber intentado esto hace mucho tiempo con mi HTC Touch Pro, puedo garantizar que sí, puede saltar a un kernel de Linux (o una compilación personalizada de Android). Eso no quiere decir que hablar con todo el hardware sea igual de fácil o factible. (tristemente, ya que odiaba WM6 con pasión, pero no había manera de que pudiera mantener el mismo nivel de funcionalidad con cualquier otro sistema operativo)
Alexios

qdot, ¿por qué no nos cuenta más sobre el enfoque de tener un teléfono con Windows 6/7 comprado en la tienda para que ejecute mi propio código de control, digamos 5 servos a través del puerto serie?
Harry Svensson

1
@qdot, ¿puede traer parte de esta información para que el enlace sea solo una referencia, en este momento es susceptible a la pudrición del enlace?
Kortuk

3

No tengo experiencia en esto, pero no creo que sea fácil (si es posible). Creo que puede olvidarse de programarlo en C ++ o C #, y más bien en ASM + C. No sería compatible con bocetos arduino o 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ías el dispositivo, pero supongo que es posible, ya que generalmente pueden actualizar el firmware si se lo envías a reparar.

Además, 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 entregará. .

Creo que la forma más fácil sería algo así como un viejo teléfono Android, ya que puedes obtener el código fuente con los controladores y todas las cosas de bajo nivel de forma gratuita. Puede extraer 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 que juegue el puerto.


¿No sería posible leer todo de la memoria flash y leer / modificar la memoria flash desde allí?
Harry Svensson

@HarrySvensson Bueno, tendría que modificar la memoria directamente o utilizar algún tipo de puerto / encabezado de programación que pueda estar allí para actualizar el firmware. Posible, pero no fácil.
varesa

2
¿Por qué el voto negativo al azar?
varesa

@HarrySvensson, suponiendo que tuviera las herramientas para volcar toda la memoria flash (podría haber varios chips flash destinados a contener diferentes cosas como cargadores de arranque seguros y lo que no, algunos tal vez requieran herramientas patentadas), ¿estaría cómodo decodificando todos de a mano? No esperes que todo esté en un buen formato de sistema de archivos que puedas montar en tu computadora como una memoria USB. Podrías ver muchas cosas patentadas e irreconocibles o simplemente restringir el código de ensamblaje sin formato donde puede haber algún código de programa.
Jon L

2

Hacerlo todo usted mismo será difícil en el mejor de los casos. Tendría un tiempo mucho más fácil con uno de los dispositivos compatibles con el proyecto Rockbox , que es el firmware de código abierto para reproductores de mp3. Algunos de estos dispositivos son económicos y ofrecen muchas de las ventajas que menciona, 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 descubierto los problemas básicos con respecto a los compiladores, cargadores de arranque, etc., así como algún código fuente para comenzar.

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


0

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 parte de todos los circuitos integrados) para poder escribir código para él. Eso sería propiedad de Sony / Ericsson, por lo que no lo va a obtener). Lo mismo para cualquier otro teléfono celular.

En el caso poco probable de que obtenga toda la documentación para el procesador, la memoria flash, etc., podría ser posible escribir un cargador de arranque compatible con Arduino después de pasar varias semanas de su 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 usted fuera capaz de escribir un gestor de arranque compatible con Arduino, sería imposible la repetición imposible para cargar y ejecutar Arduino bocetos porque 1) el compilador para el Arduino va a ser emisor de código para un microcontrolador Arduino compatible (ATmega, PIC32, etc.) , y el teléfono definitivamente no va a usar uno de esos, lo más probable es que sea una variante de ARM); y 2) los puertos de E / S no se ubicarán 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 los mismos 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 podía ejecutar el código Arduino en ellos, y la respuesta definitivamente es no.

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


0

¿Qué se necesita para convertir varios hardware "cotidianos" en plataformas de microcontroladores? Las modificaciones de Sprite son una excelente fuente de inspiración. Da una buena explicación del proceso necesario para "abrir" los dispositivos y obtener el control sobre ellos. TL; DR: puede ejecutar Linux en una tarjeta SD y en un disco duro. No, no estoy usando 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 hackear, ya que utilizaba software de código abierto, por lo que Linksys estaba obligado a liberar el código fuente. Terminó con una plataforma personalizable que ejecuta Linux, con puertos Ethernet y Wi-Fi integrados.
tcrosley
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.