Telefone celular como microcontrolador


19

Eu tenho alguns telefones celulares, um deles sendo este: http://www.gsmarena.com/sony_ericsson_elm-3057.php


É possível limpar a memória flash e substituí-la por um gerenciador de inicialização e depois fazer o upload de esboços do arduino ou pic32 esboços (C # / C ++).

Eu tive essa ideia porque é uma plataforma muito barata para o desenvolvimento de projetos de hardware. (Você obtém uma tela, botões, E / S de áudio, internet, etc., obtém tudo por um preço muito baixo comparado ao que obtém comprando cada peça separadamente.)

É possível apagar a memória flash e instalar um carregador de inicialização em um telefone para usá-lo como um computador incorporado?


3
Por que o voto negativo, esta é uma excelente pergunta.
Rocketmagnet

Realmente precisa ser limpo. (Eu não down-voto, mas iIMade uma edição pendente que realmente apura-se o ser pergunta feita)
CYBERMEN

Você pode estar interessado no projeto Rockbox, que tem feito algo semelhante com os mp3 players. As pessoas envolvidas nisso podem lhe dizer como é difícil obter informações sobre o hardware proprietário.
21412 Jeanne Pindar

@CyberMen Eu não sei o que você quer dizer com "O que é a formatação da memória flash em um telefone e instalar"
varesa

@varesa não me pergunte, pergunte à OP. Use suas habilidades dedutivas em inglês.
CYBERMEN

Respostas:


1

O custo nunca é um problema. Muitos entusiastas estarão dispostos a pagar um preço moderado por dispositivos de ponta facilmente hackáveis. O problema é que o ARM é uma plataforma fechada. Normalmente, há uma parte chamada ROM privada no próprio silício do SoC (sistema no chip). Bloqueia a reutilização.

Esta parte da ROM é responsável por escolher um gerenciador de inicialização em alguma ordem: Z-Modem em serial, Nand externo, ROM serial, SDCard, USB externo. Para todos os dispositivos em que o pedido é individual e mal documentado, você normalmente deve pressionar alguns botões ao ligar o carregador alternativo. A imagem do carregador de inicialização, se na maioria das vezes verificada quanto à assinatura digital do proprietário da plataforma. Então, sem sorte.

Para um projeto único, não há problema em escolher um dispositivo aleatório. Mas você possivelmente estará mais interessado em dispositivos conhecidos, com esquemas publicados e código fonte disponível para Linux, Android etc.

Então, minha sugestão é olhar para dispositivos cercados por comunidades de usuários ativos : Raspberry Pi, BeagleBone, BeagleBoard, alguma plataforma de avaliação da Samsung (PandaBoard?)

Minha experiência pessoal com a TI AM35XX terminou com decepção com a complexidade de tudo. O menor Linux do mundo chamado Angstrom tem uma imagem de distribuição de 3 GB. Os documentos para chips são 4000-5000 páginas. Não parecia muito um hobby e não era agradável.

A situação pode mudar depois que o Intel Atom SoC se tornar popular. Espero um grande interesse do usuário e seguirei a multidão na direção do menor Atom possível com a tela. Espero que alguém complete uma peça montável em painel com tamanho de cartão de crédito e GPIO. Será divertido.


2
Na verdade, a TI AM35XX é incrível - o menor Linux nesta plataforma cabe bem abaixo de 3 MB. Pessoalmente, estou usando esses (e o AM33XX) para um monte de coisas. Depois de passar pelo incômodo da compilação cruzada, você tem um hardware bem suportado e bem documentado. Sim, é complicado, eo TRM (5000 páginas) é um tijolo enorme, mas isso é dito como um documento de referência, não como uma canção de ninar (tu ele pode servir como tal também)
Qdot

+1. Sim, eu concordo que o TI ARM é possivelmente o melhor que podemos encontrar. Eu quis dizer apenas minha experiência pessoal como hobby. Se fosse meu trabalho do dia lutar com a ARM em uma equipe, seria muito mais divertido.

Bem, eu lutaria com uma máquina dominada, do que uma dominada, em geral. Claramente, não é um Arduino, mas é linux, quando você inicializa o kernel nele, não é diferente de qualquer outra plataforma crossdev por aí. Construir alguma userland (ou construir seu próprio Init e executar de lá), e você está em casa :)
Qdot

5

Idade atrás, havia um projeto para fazer algo semelhante (engenharia reversa, uma família de telefones baratos e muito populares).

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

E sim, a opção Android é provavelmente a mais fácil .. ou Windows Mobile, também é razoavelmente aberta.


Espere, o material de baixo nível do WP também está aberto?
varesa

WP ou WM? O Windows Phone, ou seja, a versão 7 e superior, é algo com o qual tenho experiência limitada, mas acho que ainda pode executar binários C nativos. A versão 6, que compõe a maior parte dos telefones PDA antigos, mas extremamente poderosos, é extremamente aberta - executa código C nativo, pode ser compilada com MSVC e GCC, não possui quase nenhuma segurança. Você literalmente pode iniciar um bootloader como um aplicativo regular, e ele salta para Linux Kernel :)
Qdot

Tendo tentado isso muito tempo atrás, com o meu HTC Touch Pro, posso garantir que sim, você pode acessar um kernel do Linux (ou uma versão personalizada do Android). Isso não quer dizer que conversar com todo o hardware seja igualmente fácil ou viável. (infelizmente, como eu odiava WM6 com uma paixão, mas não havia nenhuma maneira que eu poderia manter o mesmo nível de funcionalidade com qualquer outro sistema operacional)
Alexios

qdot, por que você não nos conta mais sobre a abordagem de comprar um telefone windows 6/7 na loja para executar meu próprio controle de código, digamos 5 servos através da porta serial.
Harry Svensson

1
@qdot, você pode trazer algumas dessas informações para que o link seja apenas uma referência, agora é suscetível à podridão do link.
Kortuk

3

Não tenho experiência nisso, mas não acho que seria fácil (se possível). Eu acho que você pode esquecer de programá-lo em C ++ ou C #, e sim em ASM + C. Não seria compatível com esboços do arduino ou código PIC32 ou qualquer coisa que não seja feita para a CPU específica. Muitos telefones novos têm algo como um núcleo ARM.

Realmente não sei como você programaria o dispositivo, mas presumo que seja possível, pois eles geralmente podem atualizar o firmware se você o enviar para manutenção.

Além disso, você teria que codificar seus próprios drivers para todo o hardware (tela, WLAN, sensores, etc ...), o que seria realmente difícil sem mais informações sobre o hardware, que o fabricante do telefone provavelmente não liberará para você .

Eu acho que a maneira mais fácil seria algo como um telefone Android antigo, pois você pode obter o código-fonte com drivers e todo o material de baixo nível gratuitamente. Você pode se livrar ou usar a interface do usuário e outros componentes visíveis para o usuário. Mas isso provavelmente não é o que você deseja, a menos que você tenha alguns telefones Android antigos por aí.

Além disso, se o telefone foi "hackeado" para executar qualquer outro sistema operacional, especialmente os de código aberto, como o Android, você poderá obter as fontes para a porta jogar.


Não seria possível ler tudo da memória flash e ler / modificar a memória flash a partir daí?
Harry Svensson

@HarrySvensson Bem, você teria que modificar a memória diretamente ou usar algum tipo de porta / cabeçalho de programação que possa estar lá para atualizar o firmware. Possível, mas não fácil.
varesa

2
Por que a votação aleatória?
varesa

@HarrySvensson, supondo que você tenha as ferramentas para despejar toda a memória flash (pode haver vários chips flash destinados a conter coisas diferentes, como carregadores de inicialização seguros e o que não, alguns talvez exigindo ferramentas proprietárias), você se sentiria confortável em decodificar tudo à mão? Não espere que tudo esteja em um bom formato de sistema de arquivos que você possa montar no seu computador como um pen drive. Você pode ver muitas coisas proprietárias e irreconhecíveis ou apenas restringir o código de montagem bruto, onde pode haver algum código de programa.
Jon L

2

Fazer tudo sozinho será difícil, na melhor das hipóteses. Você teria muito mais facilidade com um dos dispositivos suportados pelo projeto Rockbox , que é um firmware de código aberto para players de mp3. Alguns desses dispositivos são baratos e oferecem muitas das vantagens mencionadas e foram projetados para que o firmware seja atualizado via USB. Você teria a ajuda de uma comunidade ativa que já descobriu os problemas básicos de compiladores, gerenciadores de inicialização, etc., bem como algum código fonte para começar.

Um bom recurso do Rockbox é que ele configura os dispositivos para inicialização dupla, para que eles ainda possam ser usados ​​para seu propósito original quando você não estiver usando o novo firmware.


0

Não.

A documentação pública deste telefone (como na página à qual você vinculou) nem lista o tipo de processador. Mesmo assim, você precisaria do esquema (incluindo números de peça de todos os CIs) para poder escrever código para ele. Isso seria propriedade da Sony / Ericsson, então você não vai conseguir). O mesmo para qualquer outro telefone celular.

No caso improvável de você ter toda a documentação do processador, memória flash etc., pode ser possível gravar um gerenciador de inicialização compatível com Arduino depois de passar várias semanas do seu tempo. É claro que isso exigiria que você obtivesse o ambiente de desenvolvimento para o telefone, o que provavelmente custaria centenas, senão milhares de dólares.

Mesmo se você fosse capaz de escrever um carregador de inicialização compatível com o Arduino, seria impossível repetir impossível fazer upload e executar esboços do Arduino porque 1) o compilador do Arduino emitirá código para um microcontrolador compatível com Arduino (Atmega, PIC32 etc.) , e o telefone definitivamente não vai usar esses itens - provavelmente é uma variante do ARM); e 2) as portas de E / S não estarão localizadas nos mesmos locais (portas) no telefone celular que no Arduino.

Observe que existem alguns telefones celulares de código aberto , mas você não poderá executar o software Arduino com os mesmos citados acima (incompatibilidade de processador e hardware). Algumas das outras respostas sugeriram o Android, mas observe que ele não está na lista de telefones de código aberto por causa de drivers proprietários. E, mais uma vez, a pergunta era: você pode executar o código do Arduino nesses e a resposta é definitivamente não?

Portanto, é muito mais barato morder a bala e obter uma placa e periféricos do Arduino.


0

O que é necessário para transformar vários hardwares "cotidianos" em plataformas de microcontroladores? Os mods do Sprite são uma excelente fonte de inspiração. Ele fornece uma boa explicação do processo necessário para "abrir" os dispositivos e obter controle sobre eles. TL; DR: você pode executar o Linux em um cartão SD e em um disco rígido. Não, não usando um disco rígido. Em um disco rígido - na CPU bastante poderosa que é o controlador da unidade.


O roteador Linksys WRT54G era um dispositivo popular para hackear, pois usava software de código aberto e a Linksys era obrigada a liberar o código-fonte. Você acabou com uma plataforma personalizável executando o Linux, com portas Ethernet e Wi-Fi embutido.
tcrosley
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.